• 大小: 763.74 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-22
  • 语言: 其他
  • 标签:

资源简介

相信有好多朋友都知道这个程序 但是没给源码 呵呵 其实我们可以自己实现的 代码很简单(为了简单 其实玫瑰是无数朵的 不是1000朵 呵呵)

现简单介绍实现过程
首先打开VC++ 6.0 新建个 “Win32 Application” 工程 工程名就叫“Roses”吧
然后要做的是 下载原来的那个“一千枝会动的玫瑰” 然后我们用“eXeScope”提取里面的6张位图 和相应的6张掩码位图 加入到我们的工程
分别给6张位图的ID 命名为:"BM_I0"、"BM_I1"、...、"BM_I5"
给6张位图对应的掩码位图ID 命名为:"BM_M0"、"BM_M1"、...、"BM_M5"
OK

因为那个“一千枝会动的玫瑰”运行后按鼠标左键 或者 键盘退出
所以个人觉得 此程序运行后是最大化的 并且程序的窗口是透明的,
但是窗口透明的话,画上去的位图不就看不到了,这个问题也是想了比较久。
最后想了个投机取巧的办法,给GetDC函数传NULL,以检索整个屏幕的设备上下文环境
不知道原程序是如何实现的
这样再画图就没问题了

关于

程序的介绍在:
http://blog./xuezhimeng/archive/2008/12/04/3445820.aspx

资源截图

代码片段和文件信息

/*==============================
 Roses.cpp -- 一千朵玫瑰
  (c) Snow-dream 2008
  QQ:529698939
  E-mail:xzm2@qq.com
  编写日期:2008-12-3
  VC 6.0环境下编译通过
===============================*/
#include 
#include 
#include “resource.h“

#define WS_EX_layerED 0x00080000
#define LWA_ALPHA     0x00000002
#define LWA_COLORKEY  0x00000001
#define ID_TIMER      1
#define IMGCOUNT      6  //图片数
//因为没有导出SetlayeredWindowAttributes API 所以要我们自己到user32.dll里搜索
typedef BOOL (WINAPI *LPFNSETlayerEDWINDOWATTRIBUTES)
(HWND hwndCOLORREF crKeyBYTE bAlphaDWORD dwFlags) ;

LRESULT CALLBACK WndProc (HWND UINT WPARAM LPARAM) ;

//设置窗口的透明度 hwnd是被设置的窗口 byAlpha是指示了透明度(0完全透明 255完全不透明)
BOOL TransparentWnd(HWND hwnd BYTE byAlpha)
{
long lstyle;
HMODULE hModule;
BOOL bRet;
LPFNSETlayerEDWINDOWATTRIBUTES lpSetlayeredWindowAttributes;
if(FALSE == IsWindow(hwnd))
{
MessageBox(NULL TEXT(“窗口句柄无效!“) NULL 0) ;
return FALSE ;
}
hModule = (HMODULE)LoadLibrary(TEXT(“user32.dll“)) ;
if(hModule)
{
lpSetlayeredWindowAttributes = (LPFNSETlayerEDWINDOWATTRIBUTES)
GetProcAddress(hModule TEXT(“SetlayeredWindowAttributes“)) ;
if(!lpSetlayeredWindowAttributes)
{
MessageBox(hwnd TEXT(“未找到API SetlayeredWindowAttributes的地址!“)
NULL MB_OK) ;
return FALSE ;
}
}
lstyle = GetWindowLong(hwnd GWL_EXstyle) ;
if(!lstyle)
{
MessageBox(hwnd TEXT(“获取窗口扩展样式失败!“) NULL MB_OK) ;
return FALSE ;
}
lstyle = lstyle | WS_EX_layerED ;
bRet = SetWindowLong(hwnd GWL_EXstyle lstyle) ;
if(!bRet)
{
MessageBox(hwnd TEXT(“设置窗口扩展样式失败!“) NULL MB_OK) ;
return FALSE ;
}
bRet = lpSetlayeredWindowAttributes(hwnd 0 byAlpha LWA_ALPHA) ;
if(!bRet)
{
MessageBox(hwnd TEXT(“设置窗口透明度失败!“) NULL MB_OK) ;
return FALSE ;
}
RedrawWindow(hwnd NULL NULL
RDW_ERASE | RDW_INVALIDATE | RDW_frame | RDW_ALLCHILDREN) ;
FreeLibrary(hModule) ;
return TRUE ;
}

int WINAPI WinMain (HINSTANCE hInstance HINSTANCE hPrevInstance
                    PSTR szCmdLine int iCmdShow)
{
static TCHAR szAppName[] = TEXT (“Roses“) ;
HWND     hwnd ;
MSG      msg ;
WNDCLASS wndclass ;
BOOL     bRet ;

wndclass.style          = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc    = WndProc ;
wndclass.cbClsExtra     = 0 ;
wndclass.cbWndExtra     = 0 ;
wndclass.hInstance      = hInstance ;
wndclass.hIcon          = LoadIcon (hInstance szAppName) ;
wndclass.hCursor        = LoadCursor (NULL IDC_ARROW) ;
wndclass.hbrBackground  = (HBRUSH) GetStockobject (WHITE_BRUSH) ;
wndclass.lpszMenuName   = NULL ;
wndclass.lpszClassName  = szAppName ;

if(!RegisterClass (&wndclass))
{
MessageBox (NULL TEXT (“This program requires Windows NT!“) szAppName MB_IConerror) ;
return 0;
}

srand ((int)GetTickCount()) ; //初始化随机数发生器
hwnd = CreateWindow (szAppName TEXT (“玫瑰花“)
WS_DLGframe | WS_POPUP
0 0
GetSystemMetrics(SM_CXSCREEN)
GetSystemMetrics(SM_C

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5831  2008-12-04 14:14  Roses\Roses.cpp

     文件      48640  2008-12-04 14:15  Roses\Roses.opt

     文件    1077248  2008-12-03 15:40  Roses\Roses.exe

     文件        518  2008-12-03 10:55  Roses\Roses.dsw

     文件     160838  2008-12-03 11:33  Roses\rose.ico

     文件      91812  2008-12-03 11:34  Roses\BM_I0.bmp

     文件      90056  2008-12-03 11:34  Roses\BM_I1.bmp

     文件      90054  2008-12-03 11:34  Roses\BM_I2.bmp

     文件      30382  2008-12-03 11:34  Roses\BM_I3.bmp

     文件      45708  2008-12-03 11:34  Roses\BM_I4.bmp

     文件      90056  2008-12-03 11:34  Roses\BM_I5.bmp

     文件      91812  2008-12-03 12:02  Roses\BM_M0.bmp

     文件      90056  2008-12-03 12:02  Roses\BM_M1.bmp

     文件      90054  2008-12-03 12:02  Roses\BM_M2.bmp

     文件      30382  2008-12-03 12:02  Roses\BM_M3.bmp

     文件      45708  2008-12-03 12:02  Roses\BM_M4.bmp

     文件      90056  2008-12-03 12:02  Roses\BM_M5.bmp

     文件       4835  2008-12-03 12:10  Roses\Roses.dsp

     文件        409  2008-12-03 12:10  Roses\resource.h

     文件    1070248  2008-12-03 12:10  Roses\Roses.aps

     文件       2550  2008-12-03 12:10  Roses\Roses.rc

     目录          0  2008-12-03 10:55  Roses

----------- ---------  ---------- -----  ----

              3247253                    22


评论

共有 条评论

相关资源