QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
查看: 193|回复: 0

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

[复制链接]
累计签到:96 天
连续签到:3 天
最佳答案
4 
发表于 2017-7-6 14:33:22 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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

查看全部评分

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-19 23:19 Powered by Discuz! X2.5 Theme by dreambred

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