type
status
date
slug
summary
tags
category
icon
password
Email
文章首发于:My Blog 欢迎大佬们前来逛逛
1. main函数入口点
win32的main函数入口点为 WinMain或者wWinMain,他们包含四个参数:
其中:
- hInstance:应用程序当前窗口的实例句柄
- hPrevInstance:应用程序上一个窗口的实例句柄
- lpCmdLine:应用程序的命令行
- nShowcmd:控制窗口的显示方式
其中wWinMain与WinMain的区别是 wWinMain适用于多字节字符集,而WinMian适用于unicode字符集。
其中第三个参数WinMain是LPSTR类型:
但是wWinMain是LPWSTR类型:
2. 窗口函数六部曲
2.1 注册窗口类
其中:
- unnamedParam1:一个WNDCLASSEXA结构体指针变量,这个结构包含了我们所创建对象的窗口的属性信息
其中:比较重要的几个参数:
- hInstance:窗口的示例句柄,就是我们的WinMain包含的hInstance参数
- lpszClassName:窗口类名
- cbSize:结构体的大小,必须指定其为sizeof(WNDCLASSEX)
- style:窗口类的样式,设置水平与垂直重绘:CS_HREDRAW | CS_VREDRAW
- hbrBackground:窗口回调函数,其接受一个WNDPROC的参数,WNDPROC是一个typedef定义的函数指针,其中包含四个参数:HWND UINT WPARAMS LPARAMS。
2.2 创建窗口
其中:重要的参数有:
- dwExStyle:设置为mWinC的style即可。
- lpClassName,lpWindowName:类名与窗口名
- dwStyle:窗口的样式,设置为WS_OVERLAPPEDWINDOW即可。
- x y Width Height:窗口的大小和宽高
- hInstance:窗口的实例句柄。
其返回值为HWND,表示创建了一个窗口句柄hwnd,如果其为NULL,则创建失败。
2.3 显示窗口
- hwnd:创建的窗口实例句柄
- nCmdshow:控制窗口的显示方式
2.4 刷新窗口
2.5 消息循环
接受消息
参数:
- lpMsg:指向MSG的指针,我们需要创建一个MSG类型的变量表示消息变量。
处理消息
- lpMsg:消息指针
发送消息
- 消息指针
2.6 消息处理函数
消息处理函数即:WNDPROC
我们已经在 2.1 注册窗口类时处理过了。
3. 完整代码
由于我们运行的时Win32程序,我们应该在:
项目 - 属性 - 连接器 - 系统 - 子系统
把控制台改为窗口
- 作者:Yuleo
- 链接:https://www.helloylh.com/article/windows1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。