前几天看一网友关于 按键精灵 的讨论。 其实质是控制鼠标进行模仿动作。现给出主要实现代码及工作结构。但仅适合Win32编程初学者,高手就不用进了。
LRESULT APIENTRY WndProc(HWND, UINT, WPARAM, LPARAM); //窗口函数
BOOL ckzc(HINSTANCE); //注册窗口类函数 BOOL ckcj(HINSTANCE, int); //创建窗口函数
HINSTANCE hInst; //当前句柄 HWND hWndMain; //窗口句柄 |
上面首先是window窗口函数声明。然后依照惯例注册窗口类函数和创建窗口函数。通过关键字HINSTANCE、HWND分别获得当前句柄、窗口句柄。
BOOL ckzc(HINSTANCE hInstance) { WNDCLASSEX wcexMouse;
wcexMouse.cbSize = sizeof(WNDCLASSEX); wcexMouse.style = CS_DBLCLKS; //支持鼠标双击 wcexMouse.lpfnWndProc = (WNDPROC)MainWndProc; wcexMouse.cbClsExtra = 0; wcexMouse.cbWndExtra = 0; wcexMouse.hInstance = hInstance; wcexMouse.hIcon = LoadIcon(NULL,IDI_WINLOGO); wcexMouse.hCursor = LoadCursor(NULL,IDC_ARROW); wcexMouse.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wcexMouse.lpszMenuName = NULL; wcexMouse.lpszClassName = "MouseWClass"; wcexMouse.hIconSm = LoadIcon(NULL,IDI_WINLOGO);
//为了保证程序WIN98/NT的兼容性和可移植性,用以下对窗口进行注册 if (!RegisterClassEx (&wcexMouse)) { if (!RegisterClass((LPWNDCLASS)&wcexMouse.style)) MessageBox (NULL, TEXT ("注册窗口类失败!"), "wcexMouse", MB_ICONERROR); return (FALSE); } return (TRUE); } |
进行window类注册。
BOOL ckcj(HINSTANCE hInstance,int nCmdShow) { hInst = hInstance;
hWndMain = CreateWindow("MouseWClass", "我的鼠标---cnscom", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL);
if(!hWndMain) return (FALSE);
ShowWindow(hWndMain,nCmdShow); //显示窗口 UpdateWindow(hWndMain); //刷新窗口 return (TRUE); } |
窗口创建工作。
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg;
if(!ckzc(hInstance)) //注册窗口类 return (FALSE);
if(!ckcj(hInstance,nCmdShow)) //创建窗口 return (FALSE); InvalidateRect(hWndMain, NULL, TRUE); //按指定区域更新区域
while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } |
<  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
1/2 1 2 下一页 尾页 |