ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

win32框架

2019-08-31 12:01:35  阅读:284  来源: 互联网

标签:菜单 窗口 框架 hWnd win32 WS 句柄 wcex


win32的框架 

1.入口函数 2.窗口注册类信息 3.窗口创建 4。显示窗口 5.更新窗口 6.消息循环 7.入口函数结束

WNDCLASSEX wcex;窗口类结构

wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小

//类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件

 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 }

 

窗口

 

标签:菜单,窗口,框架,hWnd,win32,WS,句柄,wcex
来源: https://www.cnblogs.com/liugangjiayou/p/11438491.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有