Win32编程入门
最近学校工程实训,非要我们用MFC编程,没办法,入门研究了一晚上的win32编程。
学习各种东西,总是开头比较麻烦,自己总结了下win32编程的简单流程,直接上代码了。
1 #include <windows.h> 2 #include <stdio.h> 3 4 // 窗口过程函数 5 LRESULT CALLBACK WinSunProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 6 7 int WINAPI WinMain( 8 HINSTANCE hInstance, // handle to current instance 9 HINSTANCE hPrevInstance, // handle to previous instance 10 LPSTR lpCmdLine, // command line 11 int nCmdShow // show state 12 ) 13 14 { 15 // 窗口类 16 WNDCLASS wndcls; 17 wndcls.cbClsExtra = 0; // 类附加内存 18 wndcls.cbWndExtra = 0; // 窗口附加内存 19 wndcls.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); // 背景画刷句柄 20 wndcls.hCursor = LoadCursor(NULL, IDC_CROSS); // 窗口光标句柄 21 wndcls.hIcon = LoadIcon(NULL, IDI_ERROR); // 窗口图标句柄 22 wndcls.hInstance = hInstance; // 包含窗口过程函数的程序实例 23 wndcls.lpfnWndProc = WinSunProc; // 只想窗口过程函数的指针 24 wndcls.lpszClassName = "Kleist"; // 窗口类名称 25 wndcls.lpszMenuName = NULL; // 菜单资源 26 wndcls.style = CS_HREDRAW | CS_VREDRAW; // 窗口样式 27 RegisterClass(&wndcls); 28 29 // 创建窗口, 定义一个变量用来保存成功创建窗口后返回的句柄 30 HWND hwnd; 31 hwnd = CreateWindow( // 窗口创建成功时返回为窗口分配的句柄 失败时返回NULL 32 "Kleist", // 窗口类名 33 "Hello World", // 窗口名字 34 WS_OVERLAPPEDWINDOW, // 窗口样式 35 0, 0, // 窗口左上角坐标 36 600, 400, // 窗口宽高 37 NULL, // 父窗口句柄 38 NULL, // 窗口菜单句柄 39 hInstance, // 窗口所属应用程序实例 40 NULL // WM_CREATE消息附加参数lParam传入的数据指针 41 ); 42 43 // 显示及刷新窗口 44 ShowWindow(hwnd, SW_SHOWNORMAL); 45 UpdateWindow(hwnd); 46 47 // 定义消息结构体 48 MSG msg; 49 while (GetMessage( // WM_QUIT消息返回0 错误返回-1 50 &msg, // 指向消息的结构体 51 NULL, // 指定接收属于哪一窗口的消息 通常设为NULL,用来接收属于调用线程的所有窗口的窗口消息 52 0, // 获取消息的最小值 通常为0 53 0)) // 获取消息的最大值 都设为0表示接收所有消息 54 { 55 TranslateMessage(&msg); // 将虚拟消息转换为字符消息 投递到调用线程的消息队列中 下次调用GetMessage时被取出 56 DispatchMessage(&msg); // 将消息传递给操作系统 由操作系统调用窗口过程函数对消息进行处理 57 } 58 return msg.wParam; 59 } 60 61 // 窗口过程函数 62 LRESULT CALLBACK WinSunProc( 63 HWND hwnd, // 窗口句柄 64 UINT uMsg, // 消息代码 65 WPARAM wParam, // 附加参数 66 LPARAM lParam 67 ) 68 { 69 switch(uMsg) 70 { 71 case WM_CHAR: 72 char szChar[20]; 73 sprintf(szChar, "char code is %d", wParam); 74 MessageBox(hwnd, szChar, "char", 0); 75 break; 76 77 default: 78 return DefWindowProc(hwnd, uMsg, wParam, lParam); 79 } 80 81 return 0; 82 }
具体也就是WinMain函数作为程序入口,相当于main函数
然后定义窗口类 绑定过程函数,创建窗口实例,显示并刷新窗口实例,建立消息队列。
对着代码看一些参考资料应该就够了。
浙公网安备 33010602011771号