鱼C论坛

 找回密码
 立即注册
查看: 2193|回复: 0

[学习笔记] 《Windows SDK》004 消息机制1

[复制链接]
发表于 2017-7-6 14:33:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 BngThea 于 2017-7-15 09:42 编辑

一 核心知识点
* 窗口出生流程
  初始化窗口类结构 -> 注册该类 -> 创建该类的对象 -> 显示与更新窗口 -> 消息循环
  只有且只要用窗口类生成对象时(CreateWindow)在内存中生成实例窗口(带句柄的)

* 事件驱动机制
1 不同的事件均能触发Windows响应,且能并行进行
2 事件通过消息的方式被Windows捕获,并扔进消息队列中

* DispatchMessage 机制
  当其执行时,并不是直接将消息传递给窗口,而是Windows通过回调函数来实现的。

* MSG结构
  成员:
      
  1.         HWND hwnd;//窗口句柄
  2.         UINT message;//消息
  3.         WPARAM wParam;//附加消息
  4.         LPARAM lParam;//附加消息
  5.         DWORD time;//该消息被放到队列中的时间
  6.         POINT pt;//消息投放时鼠标位置
复制代码


* 消息机制
  通过不断GetMessage来逐条处理消息,每条消息都通过TranslateMessage进行翻译和DispatchMessage进行分派,然后交由操作系统使用回调函数处理和响应消息。
消息数量极其庞大,我们只需要对自己感兴趣的消息进行筛选处理,而其他所有的消息扔给DefWindowProc即可。

二 新API函数
* ShowWindow(hwnd,iCmdShow)
  该函数设置指定窗口的显示状态,如果窗口之前可见返回true,否则返回false。
  第一次调用时,用WinMain的第四个参数作为其第二个参数。

* UpdateWindow(hwnd)
  该函数可以绕过消息列队,直接发送WM_PAINT消息,成功返回true,失败返回false。

* GetMessage(&msg,NULL,0,0)
  该函数从消息列队中获取一个消息放到MSG对象中,成功后在列队中删除该消息并返回true,仅当该消息为WM_QUIT,返回false
第一个参数:MSG结构对象的指针
第二个参数:需要获取消息的窗口的句柄,一般为NULL,表示当前窗口
第三四个参数:消息值得最小数,一般为0

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 12:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表