马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 BngThea 于 2017-7-15 09:42 编辑
一 核心知识点
* 窗口出生流程
初始化窗口类结构 -> 注册该类 -> 创建该类的对象 -> 显示与更新窗口 -> 消息循环
只有且只要用窗口类生成对象时(CreateWindow)在内存中生成实例窗口(带句柄的)
* 事件驱动机制
1 不同的事件均能触发Windows响应,且能并行进行
2 事件通过消息的方式被Windows捕获,并扔进消息队列中
* DispatchMessage 机制
当其执行时,并不是直接将消息传递给窗口,而是Windows通过回调函数来实现的。
* MSG结构
成员:
HWND hwnd;//窗口句柄
UINT message;//消息
WPARAM wParam;//附加消息
LPARAM lParam;//附加消息
DWORD time;//该消息被放到队列中的时间
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 |