MFC学习(四) 消息机制
1 消息机制的要点:
消息队列:先进先出
消息循环:通过循环while,不断的从消息队列中取得队首消息,并分发消息。
消息处理:根据不同的消息类型做不同的处理
事件:事件响应函数
2 消息机制
_tWinMain
{
// 注册窗口类
if(!AppRegisterClass(hInstance)) // hInstance 是应用程序句柄,把这个和winproc注册上。
{
return (FALSE);
}
// 初始化应用程序窗口
if (!InitInstance (hInstance, nCmdShow)) // 注册之后开始初始化应用窗口(createWindow得到g_hWnd ;ShowWindow(); UpdateWIndow)_)
{
return FALSE;
}
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) //定义消息处理函数
wndProc会根据message类型调用对应的事件响应函数。
onDraw () // 每次刷新的时候都会重新绘制。
对于每一个正在执行的Windows应用程序,系统为其建立一个"消息队列",也就是应用程序队列
DispatchMessage会将消息传递给窗口函数,也就是WndProce函数。
WndProc是一个回调函数,在注册窗口时通过wcex.lpfnWndProc将其传递给了OS,所以DispatchMessage分发消息后,OS会调用
Wndproc去处理。
消息的定义和类型:
windows消息都以WM_为前缀,WM_PAINT.
typedef struct tagMsg
{
HWND hwnd; //接受该消息的窗口句柄
UINT message; //消息常量标识符,也就是我们通常所说的消息号
WPARAM wParam; //32位消息的特定附加信息,确切含义依赖于消息值
LPARAM lParam; //32位消息的特定附加信息,确切含义依赖于消息值
DWORD time; //消息创建时的时间
POINT pt; //消息创建时的鼠标/光标在屏幕坐标系中的位置
}MSG;
消息主要有3种类型:
A: 命令消息:
B: 标准窗口消息:
C: Notification:
队列消息和非队列消息: 按照是否需要放入队里
POSMessage 与 SendMessage:
POSMessage:发送到消息对列
SendMessage:非对列消息。直接发送窗口,等待执行结束。
最新文章
- Daily Scrum02 12.07
- JMeter HTTP Cookie管理器的跨域使用
- OO与设计模式的原则、目标
- linux CentOS 系统下如何将php和mysql命令加入到环境变量中
- Linux 设置系统时间和日期 API
- JDK和JRE的区别?
- 如何给开源的DUILib支持Accessibility(论述了DUILib的六个缺点,很精彩)
- Android Intent机制与常见的用法
- agnentX学习存在疑问?
- 计算理论:NFA转DFA的两种方法
- 大赛获奖选手专访 | 冷燕冰:最佳设计奖TIMING里的时机和时序
- 第42章 发现(discovery) - Identity Server 4 中文文档(v1.0.0)
- java上传文件常见几种方式
- QTP自动化测试-点滴-步骤
- jQuery方法区别:click() bind() live() delegate()区别
- MyBatis-Plugins
- LPVOID 没有类型的指针
- 可能比文档还详细--VueRouter完全指北
- Universal-Image-Loader解析(一)——ImageLoaderConfiguration的详细配置
- MySql中循环的使用
热门文章
- eclipse导入android项目错误,项目名称上有红叉,但代码中无报错
- PhantomJS 和Selenium模拟页面js点击
- iOS自动化探索(三)WebDriverAgent Python Client
- Hadoop WordCount程序
- Sturts2 三种开发模式 (转)
- LeetCode OJ:Maximum Subarray(子数组最大值)
- 如何切换到自定义的Activity
- 原创:Angular + controllerAs + CoffeeScript的一个问题,及其解决方案
- MySql 批量创建、导入实例
- python 绘图---2D、3D散点图、折线图、曲面图