首页
社区
课程
招聘
[原创]C++ Window API 学习笔记 - 窗口创建,注销和刷新消息
发表于: 2021-5-28 07:28 5581

[原创]C++ Window API 学习笔记 - 窗口创建,注销和刷新消息

2021-5-28 07:28
5581

    创建窗口消息为“WM_NCCREATE”消息和“WM_CREATE”消息。该消息是由函数"CreateWindow()"产生的,在程序执行"CreateWindow()"函数的时候,首先发出消息“WM_NCCREATE”,紧接着是“WM_CREATE”。消息“WM_NCCREATE”是由函数"CreateWindow()"直接发送至窗口过程。如果程序针对“WM_NCCREATE”消息进行处理,则需要返回True以继续创建窗口。如果执行返回Flase 则返回一个NULL句柄。“WM_CREATE”消息在窗口创建成功并且返回之前发送“WM_CREATE”消息,可以在该消息下初始化窗口,如:子窗口,控件,等等。

    注销窗口所使用的消息为“WM_DESTROY”,"WM_NCDESTROY"。它们是由函数DestroyWindow函数产生。

    窗口刷新消息为“WM_PAINT”。

    在Windows系统中,所有的东西都是绘制的,包括窗口,按钮,对话框,图片,甚至是文字。“WM_PAINT”消息就是在绘制这些对象的时候系统发送的消息。如果处理该消息,应用程序返回零。

    具体如下操作会触发WM_PAINT消息。

程序启动,UpdateWindow函数发送WM_PAINT消息来更新指定窗口的客户去。

鼠标窗口调整大小。

最小化窗口状态时,还原触发。

最大化触发。

当向屏幕外拖动窗口时,不会触发,拉回则触发。

InvalidateRect函数触发。

程序在执行至函数CreateWindow()会产生两条消息“WM_NCCREATE”,“WM_CREATE”。该消息是直接发送到窗口过程并不是存入消息队列。

窗口过程中MyWindowProc() 匹配到该消息,并且进行处理,执行SetWindowTextA()函数,对窗口进行初始化。

首先,在用户在窗口界面会点击关闭按钮,产生消息“WM_CLOSE”。

窗口过程中,匹配到“WM_CLOSE”,执行其中代码函数DestroyWindow()。

函数DestroyWindow()会产生销毁窗口的消息“WM_DESTROY”,"WM_NCDESTROY"。

同样在窗口过程中,匹配到消息,调用函数PostQuitMessage()。

PostQuitMessage()函数会产生消息“WM_QUIT”。该消息由默认处理函数DefWindowProc() 函数处理用来退出消息循环。

程序执行逻辑图:

施行触发“WM_PAINT”消息行为。

窗口过程中,匹配至该消息,通过函数BeginPaint() 和EndPaint() 函数来控制多次触发WM_PAINT”消息。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-5-28 11:52 被天象独行编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
// // 统计代码