acmilan作者
11年4个月前修改于 11年4个月前IP:四川
784382
2楼
Windows 消息机制初步探索 之 总结

一、消息循环各函数

BOOL GetMessageW(&MSG结构, 0, 0, 0)
等待并获取消息到MSG结构,常规消息返回TRUE,WM_QUIT返回FALSE表示需要退出消息循环。

BOOL TranslateMessage(&MSG结构)
主要作用是将WM_KEYDOWN等键盘消息转换为WM_CHAR等字符消息并加到消息队列,允许在窗口中输入字符。

LONG_PTR DispatchMessageW(&MSG结构)
将窗口消息分发到各消息处理函数。

BOOL TranslateAcceleratorW(窗口句柄, 快捷键句柄, &MSG结构)
根据资源中的快捷键表,将WM_KEYDOWN等键盘消息翻译成对应的WM_COMMAND等菜单消息并分发。

BOOL IsDialogMessageW(对话框句柄, &MSG结构)
处理并分发对话框消息,允许使用Tab等按键移动焦点。

二、常用消息发送函数

BOOL PostThreadMessageW(线程ID, 消息, 相关参数1, 相关参数2)
发送线程消息到该线程的消息队列,该消息的hwnd=0。

BOOL PostMessageW(窗口句柄, 消息,  相关参数1, 相关参数2)
发送窗口消息到窗口所属线程的消息队列。

LONG_PTR SendMessageW(窗口句柄, 消息, 相关参数1, 相关参数2)
直接将消息发送到窗口的消息处理函数并等待返回,一般不用担心线程同步、进程间通信等问题。

PostQuitMessage(返回值)
向当前线程发送WM_QUIT消息,返回值储存在msg.wParam中。

-
评论
文号 / 784382

千古风流
名片发私信
学术分 4
总主题 466 帖总回复 2942 楼拥有证书:进士 学者 笔友
注册于 2009/05/30 21:22:42最后登录 2019/01/31 17:16:38
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的