MFC 窗口过程理解
http://zhidao.baidu.com/question/48296446
详细说巨麻烦!我给你简单讲一下,想了解全部就看Charles Petzold著《Windows程序设计》(第五版)北京大学出版社。首先,你必须已经建立了一个窗口。这时,你在这个窗口内点了一下鼠标左键,Windows系统会将这个“消息(或者说事件)”放入到系统消息队列里。之后它会自动分辨出这是哪个窗口所接收的消息,并将这个消息放入到该窗口所对应的应用程序消息队列里。第二,你的应用程序主函数:WinMain()执行到消息循环后,代码是:while (GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}GetMessage()函数从应用程序消息队列里边接收“单击鼠标左键”这一消息,返回值不为0,所以进入循环体,第二个函数用来转换某些键盘消息,而我们点的是鼠标,所以在此直接跳过;第三个函数,将该消息发送回Windows。Windows接收到DispatchMessage()函数发送的消息后,它会自动找到应把消息发往的窗口过程。并把消息向其传递。之后,进入WndProc函数。你会感到这是“Windows调用了WndProc()”,所以WndProc()才被称为“回调函数”。进入WndProc()之后,通过switch()逻辑检测接收的信息并做出相应的处理和操作。例如,单击鼠标左键,由WndProc()函数掌管的窗口应该进行怎样的变化……这些东西要我们自己来写喽。但其中有些东西几乎是固定的。比如收到WM_DESTROY消息后,一般调用PostQuitMessage(0)发送WM_QUIT消息,用来结束消息循环,但也不一定,前不久我才写过一个双窗口的程序,当关掉一个窗口后,你应当保证另一个窗口不被关闭……当WndProc()处理完毕后,DispatchMessage()函数才返回,这时,又要从GetMessage()函数开始新一轮的循环啦~先说这么多吧(已经不少了!)不懂再问。
转载于:https://www.cnblogs.com/wb118115/archive/2012/12/14/2818317.html
MFC 窗口过程理解相关推荐
- X32dbg-查找MFC窗口过程函数-跟踪直到满足条件-条件断点-查看窗口句柄
文章目录 1.X32dbg 2.条件断点 3.窗口句柄 4.作者答疑 1.X32dbg 在逆向分析Win32软件时,需要找到窗口过程函数,这样可以方便的找到目标应用程序段.以一个简单的win32程 ...
- 理解MiniGUI消息循环和窗口过程
1.2 消息和消息循环 在Windows系列操作系统中,广泛使用了消息驱动的概念.在MiniGUI中,我们也使用了消息驱动作为应用程序的创建构架. 在消息驱动的应用程序中,计算机外设发生的事件,例如 ...
- 通过Windows API 创建窗口的过程理解windows消息机制
一个基于windows API 的基于窗体.消息循环.事件驱动的 Windows C语言风格的Windows 程序. 创建一个Win32应用程序的步骤: 1.定义 WinMain 函数: 2.设计窗口 ...
- 对窗口过程函数WndProc()的一点理解
函数原型: LRESULTCALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 窗口过程函数决定了当一个窗口从 ...
- 使用visual studio 2019 创建简单的MFC窗口「使用C++」
```cpp 使用visual studio 2019 创建过程请参考Bili的上一篇文章⬇⬇ →!使用visual studio 2019 创建简单的MFC窗口「使用底层的C语言」 划重点:项目-& ...
- 去除MFC窗口的自动记忆功能
参考链接:如何去除MFC窗口的自动记忆功能 程序开始函数:CmyApp::InitInstance 程序结束函数:CmyApp::ExitInstance 加入代码: BOOL CmyApp::Ini ...
- 消息断点+内存断点定位窗口过程
在调试比较复杂的Win32程序时,要找到窗口过程并不容易,OD提供了两个工具:消息断点和内存断点,善用这两个工具可以大大提高调试的效率. 消息断点是给指定的消息设置断点,本质还是条件断点:内存断点有访 ...
- MSG结构体和WndProc窗口过程详解
MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...
- 《Windows核心编程》の窗口过程的使用
1)设计一个窗口过程: 下面的实例代码展现了经典的窗口过程的结构.窗口过程使用switch语句处理传入的消息参数uMsg, LRESULT CALLBACK MainWndProc( HWND hwn ...
- 通过MFC窗口获取方向键
1.启动时,从配置文件中读取上次保存的方向键键值,并将这些配置显示到窗口中 (1)从配置文件中读取方向键,并将其显示到窗口: iCfgValue = GetPrivateProfileInt(_T(& ...
最新文章
- python使用matplotlib可视化线图(line plot)、并自定义设置可视化图像中没有网格线(remove grid line in matplotlib plot result)
- 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
- HTTP14种常见状态码详解——来自《http详解》
- 深度揭秘:大数据时代企业卖技术还是卖数据?
- go语言结构体标签的意义
- 深入入门正则表达式(java) - 1 - 入门基础
- flex里播放声音的方法
- 机器人把大龙拉出来_LOL-LPL夏季赛:Wei男枪打野未换惩戒 ES让BLG拿下首胜
- syslinux下载链接
- 西门子atch指令详解_西门子plc指令详解
- Address Sanitizer(Asan)原理及实战定位
- 营业增加值公式简要解析
- Amlogic连续三年居中国OTT芯片市占率第一
- IKEA宜家社会责任验厂标准
- sso单点登录的PHP实现(Laravel框架)
- 若依后台管理系统总结
- 梦幻模拟战手游服务器维护,梦幻模拟战手游11月21日更新公告 执行者降临限时召唤开启[多图]...
- exoplayer2同时播放多个音频文件
- stm32---DAC数模转换
- 强强联合! 统信携手ToDesk企业版打造国产远控安全新标杆
热门文章
- yolo v4模型训练过程(超详细)
- python set和frozenset 异同点学习记录
- java redis源码分析,慢谈 Redis 实现分布式锁 以及 Redisson 源码解析
- qt设置开机启动动画_Qt实现程序启动动画
- php socket邮箱,phpsocket.io php版本的socket.io
- Java TCP小结
- 7c盘满了怎么扩容_C盘爆满怎么办?扩容!
- 动画效果之手机端实现垃圾桶效果
- jira 6.x 日期设置
- 微服务网关(gateway)概述 与 嵌入式 Zuul 反向代理