win32框架
2021-02-05 17:15
标签:注释 nim 背景颜色 param null create end raw 实例句柄 win32的框架 1.入口函数 2.窗口注册类信息 3.窗口创建 4。显示窗口 5.更新窗口 6.消息循环 7.入口函数结束 WNDCLASSEX wcex;窗口类结构 wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小 //类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件 创建主 处理主窗口消息 窗口 win32框架 标签:注释 nim 背景颜色 param null create end raw 实例句柄 原文地址:https://www.cnblogs.com/liugangjiayou/p/11438491.html 1 // 函数: MyRegisterClass()
2 //
3 // 目的: 注册窗口类。
4 //
5 ATOM MyRegisterClass(HINSTANCE hInstance)
6 {
7 //窗口类结构
8 WNDCLASSEX wcex;
9
10 wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小
11 //类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件
12 wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
13 wcex.lpfnWndProc = WndProc;//消息回调函数
14 wcex.cbClsExtra = 0;//类的额外信息
15 wcex.cbWndExtra = 0;//窗口的额外信息
16 wcex.hInstance = hInstance;//窗口的实例句柄
17 wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CLASS02));//图标
18 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);//光标
19 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//窗体的背景颜色
20 wcex.lpszMenuName = MAKEINTRESOURCE(IDC_CLASS02);//窗体的菜单
21 wcex.lpszClassName = szWindowClass;//窗口类名
22 wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));//小图标
23
24 return RegisterClassEx(&wcex);//系统函数返回一个系统的注册窗口类的函数调用
25 }
1 //
2 // 函数: InitInstance(HINSTANCE, int)
3 //
4 // 目的: 保存实例句柄并创建主窗口
5 //
6 // 注释:
7 //
8 // 在此函数中,我们在全局变量中保存实例句柄并
9 // 创建和显示主程序窗口。
10 //
11 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
12 {
13 HWND hWnd;//窗口句柄
14
15 hInst = hInstance; // 将实例句柄存储在全局变量中
16
17
18 //创建窗口
19 hWnd = CreateWindow(szWindowClass,//窗口类名 类名必须和注册名一致否则创建不成功
20 _T("第一个Windows窗口")/*szTitle*/,//窗口标题名
21 //WS_OVERLAPPEDWINDOW,窗口风格
22 WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX,
23 /*
24 WS_OVERLAPPED:用于产生一个叠层窗口,都有标题栏和边框
25 WS_CAPTION:有标题栏的窗口
26 WS_SYSMENU:创建一个标题栏上具有系统菜单的窗口,需要ws_caption一起使用
27 WS_MINIMAZEBOX:创建具有最小化按钮窗口,必须有ws_system类型
28 WS_MAXIMIZBOX:创建具有最大化按钮的窗口,必须有ws_system类型。
29 WS_OVERLAPPEDWINDOW:创建有标题栏,系统菜单最大化最小化窗口
30 WS_POPUP - 弹出式
31 WS_POPUPWINDOW - 边框、弹出式、系统菜单
32 WS_SIZEBOX - 带尺寸框的粗边框
33 WS_SYSMENU - 系统菜单
34 */
35 CW_USEDEFAULT,0, //窗口的左上角x,y坐标,注意:如果x坐标给的是CW_USEDEFAULT,y坐标给0表示去匹配x坐标(单位为像素)
36 CW_USEDEFAULT, 0,//窗口的宽高,同上
37 NULL,//父窗口句柄
38 NULL,//菜单句柄,如果值为null,表示默认使用注册时加载的菜单,如果不为null,创建窗口时将用这个菜单替换掉注册时菜单
39 hInstance,//窗口实例句柄
40 NULL);//保留参数
41
42 if (!hWnd)
43 {
44 return FALSE;
45 }
46
47 ShowWindow(hWnd, nCmdShow);//显示窗口
48 UpdateWindow(hWnd);//更新窗口
49
50 return TRUE;
51 }
1 // 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
2 //
3 // 目的: 处理主窗口的消息。
4 //
5 // WM_COMMAND - 处理应用程序菜单
6 // WM_PAINT - 绘制主窗口
7 // WM_DESTROY - 发送退出消息并返回
8 //
9 //
10 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
11 {
12 int wmId, wmEvent;
13 PAINTSTRUCT ps;
14 HDC hdc;
15
16 switch (message)
17 {
18 case WM_COMMAND:
19 wmId = LOWORD(wParam);
20 wmEvent = HIWORD(wParam);
21 // 分析菜单选择:
22 switch (wmId)
23 {
24 case IDM_ABOUT:
25 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
26 break;
27 case IDM_EXIT:
28 DestroyWindow(hWnd);
29 break;
30 default:
31 return DefWindowProc(hWnd, message, wParam, lParam);
32 }
33 break;
34 case WM_PAINT:
35 hdc = BeginPaint(hWnd, &ps);
36 // TODO: 在此添加任意绘图代码...
37 EndPaint(hWnd, &ps);
38 break;
39 case WM_DESTROY:
40 PostQuitMessage(0);
41 break;
42 default:
43 return DefWindowProc(hWnd, message, wParam, lParam);
44 }
45 return 0;
46 }
47
48 // “关于”框的消息处理程序。
49 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
50 {
51 UNREFERENCED_PARAMETER(lParam);
52 switch (message)
53 {
54 case WM_INITDIALOG:
55 return (INT_PTR)TRUE;
56
57 case WM_COMMAND:
58 if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
59 {
60 EndDialog(hDlg, LOWORD(wParam));
61 return (INT_PTR)TRUE;
62 }
63 break;
64 }
65 return (INT_PTR)FALSE;
66 }
下一篇:Delphi版俄罗斯方块-前奏