超级哄女孩工具之一千枝会动的玫瑰实现
2008-12-04 16:41
225 查看
相信有好多朋友都知道这个程序 但是没给源码 呵呵 其实我们可以自己实现的 代码很简单(另外这里 玫瑰并不止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,以检索整个屏幕的设备上下文环境
不知道原程序是如何实现的
这样再画图就没问题了
好了下面代码:
/*==============================
Roses.cpp -- 一千朵玫瑰
(c) Snow-dream, 2008
QQ:529698939
E-mail:xzm2@qq.com
编写日期:2008-12-3
VC 6.0环境下编译通过
===============================*/
#include <windows.h>
#include <stdlib.h>
#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 hwnd,COLORREF crKey,BYTE bAlpha,DWORD 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_CYSCREEN),
NULL, NULL, hInstance, NULL) ;
TransparentWnd(hwnd, 1) ; //设置窗口透明度
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW) ; //窗口置顶
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while ( (bRet = GetMessage (&msg, NULL, 0, 0) ) != 0 )
{
if (bRet == -1)
{
MessageBox (hwnd, TEXT ("Such code can lead to fatal application errors"),
szAppName, MB_ICONERROR) ;
return -1 ;
}
else
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hBmpI[IMGCOUNT], hBmpM[IMGCOUNT] ;
HINSTANCE hInstance = NULL ;
HDC hdc, hdcMemImag, hdcMemMask ;
BITMAP bmp ;
int i, x, y ;
switch (message)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
for(i=0; i<IMGCOUNT; i++)
{
TCHAR szBmpName[16] ;
wsprintf(szBmpName, TEXT("BM_I%d"), i) ;
hBmpI[i] = LoadBitmap (hInstance, szBmpName) ; //载入位图
wsprintf(szBmpName, TEXT("BM_M%d"), i) ;
hBmpM[i] = LoadBitmap (hInstance, szBmpName) ; //载入相应的屏蔽位图
}
SetTimer(hwnd, ID_TIMER, 100, NULL) ; //设置定时器100毫秒
return 0 ;
//按鼠标左键 或者 键盘 退出程序
case WM_LBUTTONDOWN:
case WM_KEYDOWN:
SendMessage(hwnd, WM_CLOSE, 0, 0) ;
return 0;
case WM_TIMER: //最主要的部分 显示透明位图
hdc = GetDC(hwnd) ;
i = rand()%IMGCOUNT ;
// 创建一个与指定设备兼容的内存设备上下文环境(DC)
hdcMemImag = CreateCompatibleDC (hdc) ;
DeleteObject(SelectObject (hdcMemImag, hBmpI[i])) ;
GetObject (hBmpI[i], sizeof (BITMAP), &bmp) ;
hdcMemMask = CreateCompatibleDC (hdc) ;
DeleteObject(SelectObject (hdcMemMask, hBmpM[i])) ;
ReleaseDC(hwnd, hdc) ; //释放设备上下文环境(DC)
//x、y为位图显示的坐标
x = rand()%GetSystemMetrics(SM_CXSCREEN) - bmp.bmWidth/2 ;
y = rand()%GetSystemMetrics(SM_CYSCREEN) - bmp.bmHeight/2 ;
hdc= GetDC(NULL) ;
//画出位图
BitBlt (hdc, x, y, bmp.bmWidth, bmp.bmHeight, hdcMemMask, 0, 0, SRCAND) ;
BitBlt (hdc, x, y, bmp.bmWidth, bmp.bmHeight, hdcMemImag, 0, 0, SRCPAINT) ;
//删除指定的设备上下文环境(DC)
DeleteDC (hdcMemMask) ;
DeleteDC (hdcMemImag) ;
ReleaseDC(NULL, hdc) ;
return 0 ;
case WM_DESTROY:
// 删除定时器
KillTimer(hwnd, ID_TIMER) ;
// 删除位图、屏蔽位图
for(i=0; i<IMGCOUNT; i++)
{
DeleteObject (hBmpI[i]) ;
DeleteObject (hBmpM[i]) ;
}
InvalidateRect(NULL, NULL, TRUE) ; //更新整个屏幕
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
//资源文件 Roses.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Chinese (中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
ROSES ICON DISCARDABLE "rose.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h/0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""/r/n"
"/0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"/r/n"
"/0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
BM_I0 BITMAP DISCARDABLE "BM_I0.bmp"
BM_I1 BITMAP DISCARDABLE "BM_I1.bmp"
BM_I2 BITMAP DISCARDABLE "BM_I2.bmp"
BM_I3 BITMAP DISCARDABLE "BM_I3.bmp"
BM_I4 BITMAP DISCARDABLE "BM_I4.bmp"
BM_I5 BITMAP DISCARDABLE "BM_I5.bmp"
BM_M0 BITMAP DISCARDABLE "BM_M0.bmp"
BM_M1 BITMAP DISCARDABLE "BM_M1.bmp"
BM_M2 BITMAP DISCARDABLE "BM_M2.bmp"
BM_M3 BITMAP DISCARDABLE "BM_M3.bmp"
BM_M4 BITMAP DISCARDABLE "BM_M4.bmp"
BM_M5 BITMAP DISCARDABLE "BM_M5.bmp"
#endif // Chinese (中国) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
//头文件 resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Roses.rc
//
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 114
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
//程序运行效果图
//程序完整源码下载地址(附加可执行文件)
http://download.csdn.net/source/837221
现简单介绍实现过程
首先打开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,以检索整个屏幕的设备上下文环境
不知道原程序是如何实现的
这样再画图就没问题了
好了下面代码:
/*==============================
Roses.cpp -- 一千朵玫瑰
(c) Snow-dream, 2008
QQ:529698939
E-mail:xzm2@qq.com
编写日期:2008-12-3
VC 6.0环境下编译通过
===============================*/
#include <windows.h>
#include <stdlib.h>
#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 hwnd,COLORREF crKey,BYTE bAlpha,DWORD 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_CYSCREEN),
NULL, NULL, hInstance, NULL) ;
TransparentWnd(hwnd, 1) ; //设置窗口透明度
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOREDRAW) ; //窗口置顶
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while ( (bRet = GetMessage (&msg, NULL, 0, 0) ) != 0 )
{
if (bRet == -1)
{
MessageBox (hwnd, TEXT ("Such code can lead to fatal application errors"),
szAppName, MB_ICONERROR) ;
return -1 ;
}
else
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hBmpI[IMGCOUNT], hBmpM[IMGCOUNT] ;
HINSTANCE hInstance = NULL ;
HDC hdc, hdcMemImag, hdcMemMask ;
BITMAP bmp ;
int i, x, y ;
switch (message)
{
case WM_CREATE:
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
for(i=0; i<IMGCOUNT; i++)
{
TCHAR szBmpName[16] ;
wsprintf(szBmpName, TEXT("BM_I%d"), i) ;
hBmpI[i] = LoadBitmap (hInstance, szBmpName) ; //载入位图
wsprintf(szBmpName, TEXT("BM_M%d"), i) ;
hBmpM[i] = LoadBitmap (hInstance, szBmpName) ; //载入相应的屏蔽位图
}
SetTimer(hwnd, ID_TIMER, 100, NULL) ; //设置定时器100毫秒
return 0 ;
//按鼠标左键 或者 键盘 退出程序
case WM_LBUTTONDOWN:
case WM_KEYDOWN:
SendMessage(hwnd, WM_CLOSE, 0, 0) ;
return 0;
case WM_TIMER: //最主要的部分 显示透明位图
hdc = GetDC(hwnd) ;
i = rand()%IMGCOUNT ;
// 创建一个与指定设备兼容的内存设备上下文环境(DC)
hdcMemImag = CreateCompatibleDC (hdc) ;
DeleteObject(SelectObject (hdcMemImag, hBmpI[i])) ;
GetObject (hBmpI[i], sizeof (BITMAP), &bmp) ;
hdcMemMask = CreateCompatibleDC (hdc) ;
DeleteObject(SelectObject (hdcMemMask, hBmpM[i])) ;
ReleaseDC(hwnd, hdc) ; //释放设备上下文环境(DC)
//x、y为位图显示的坐标
x = rand()%GetSystemMetrics(SM_CXSCREEN) - bmp.bmWidth/2 ;
y = rand()%GetSystemMetrics(SM_CYSCREEN) - bmp.bmHeight/2 ;
hdc= GetDC(NULL) ;
//画出位图
BitBlt (hdc, x, y, bmp.bmWidth, bmp.bmHeight, hdcMemMask, 0, 0, SRCAND) ;
BitBlt (hdc, x, y, bmp.bmWidth, bmp.bmHeight, hdcMemImag, 0, 0, SRCPAINT) ;
//删除指定的设备上下文环境(DC)
DeleteDC (hdcMemMask) ;
DeleteDC (hdcMemImag) ;
ReleaseDC(NULL, hdc) ;
return 0 ;
case WM_DESTROY:
// 删除定时器
KillTimer(hwnd, ID_TIMER) ;
// 删除位图、屏蔽位图
for(i=0; i<IMGCOUNT; i++)
{
DeleteObject (hBmpI[i]) ;
DeleteObject (hBmpM[i]) ;
}
InvalidateRect(NULL, NULL, TRUE) ; //更新整个屏幕
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
//资源文件 Roses.rc
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Chinese (中国) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
ROSES ICON DISCARDABLE "rose.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h/0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""/r/n"
"/0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"/r/n"
"/0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
BM_I0 BITMAP DISCARDABLE "BM_I0.bmp"
BM_I1 BITMAP DISCARDABLE "BM_I1.bmp"
BM_I2 BITMAP DISCARDABLE "BM_I2.bmp"
BM_I3 BITMAP DISCARDABLE "BM_I3.bmp"
BM_I4 BITMAP DISCARDABLE "BM_I4.bmp"
BM_I5 BITMAP DISCARDABLE "BM_I5.bmp"
BM_M0 BITMAP DISCARDABLE "BM_M0.bmp"
BM_M1 BITMAP DISCARDABLE "BM_M1.bmp"
BM_M2 BITMAP DISCARDABLE "BM_M2.bmp"
BM_M3 BITMAP DISCARDABLE "BM_M3.bmp"
BM_M4 BITMAP DISCARDABLE "BM_M4.bmp"
BM_M5 BITMAP DISCARDABLE "BM_M5.bmp"
#endif // Chinese (中国) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
//头文件 resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Roses.rc
//
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 114
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
//程序运行效果图
//程序完整源码下载地址(附加可执行文件)
http://download.csdn.net/source/837221
相关文章推荐
- Android 设置全屏沉浸式透明状态栏的工具类(超级简单,两步实现)
- 记录——excel导出lua工具(python实现)
- iOS项目中网络层实现自动转为对象的网络请求工具封装
- 初窥wireshark fiddler等抓包工具及部分实现分析
- 实现Lua脚本预处理工具
- Java实现敏感词过滤 - IKAnalyzer中文分词工具
- 【机器学习】Matlab中实现QQ-plot的一个好工具gqqplot
- 实现超级连接
- 程序工具之正则表达式测试工具<Java实现>
- java实现文件下载 调用IE自带的下载工具来完成下载
- C++实现的ORM映射工具
- Eclipse实现超级联想的功能
- Hive权限控制和超级管理员的实现
- 自己动手实现STL 03:内存基本处理工具(stl_uninitialized.h)
- 【javascript】用javascript实现的一朵从含苞到绽放的玫瑰
- 用DOS写一个简单的虚拟WIFI工具,CMD电脑无线WIFI工具,BAT实现WIFI和自动关机
- 开源夏令营之foldcolumn工具及解决方案(三)表格列超长自动换行实现
- JS工具函数封装:使用隐藏iframe实现跨域表单提交
- C# 自己实现的一套ORM程序附带实体生成工具
- 图像之魔棒工具实现