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 窗口过程理解相关推荐

  1. X32dbg-查找MFC窗口过程函数-跟踪直到满足条件-条件断点-查看窗口句柄

    文章目录 1.X32dbg 2.条件断点 3.窗口句柄 4.作者答疑 1.X32dbg   在逆向分析Win32软件时,需要找到窗口过程函数,这样可以方便的找到目标应用程序段.以一个简单的win32程 ...

  2. 理解MiniGUI消息循环和窗口过程

    1.2  消息和消息循环 在Windows系列操作系统中,广泛使用了消息驱动的概念.在MiniGUI中,我们也使用了消息驱动作为应用程序的创建构架. 在消息驱动的应用程序中,计算机外设发生的事件,例如 ...

  3. 通过Windows API 创建窗口的过程理解windows消息机制

    一个基于windows API 的基于窗体.消息循环.事件驱动的 Windows C语言风格的Windows 程序. 创建一个Win32应用程序的步骤: 1.定义 WinMain 函数: 2.设计窗口 ...

  4. 对窗口过程函数WndProc()的一点理解

    函数原型: LRESULTCALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 窗口过程函数决定了当一个窗口从 ...

  5. 使用visual studio 2019 创建简单的MFC窗口「使用C++」

    ```cpp 使用visual studio 2019 创建过程请参考Bili的上一篇文章⬇⬇ →!使用visual studio 2019 创建简单的MFC窗口「使用底层的C语言」 划重点:项目-& ...

  6. 去除MFC窗口的自动记忆功能

    参考链接:如何去除MFC窗口的自动记忆功能 程序开始函数:CmyApp::InitInstance 程序结束函数:CmyApp::ExitInstance 加入代码: BOOL CmyApp::Ini ...

  7. 消息断点+内存断点定位窗口过程

    在调试比较复杂的Win32程序时,要找到窗口过程并不容易,OD提供了两个工具:消息断点和内存断点,善用这两个工具可以大大提高调试的效率. 消息断点是给指定的消息设置断点,本质还是条件断点:内存断点有访 ...

  8. MSG结构体和WndProc窗口过程详解

    MSG结构体和WndProc窗口过程对于Windows编程非常重要,如果不了解它们,可以说就没有学会Windows编程. MSG结构体 MSG 结构体用来表示一条消息,各个字段的含义如下: typed ...

  9. 《Windows核心编程》の窗口过程的使用

    1)设计一个窗口过程: 下面的实例代码展现了经典的窗口过程的结构.窗口过程使用switch语句处理传入的消息参数uMsg, LRESULT CALLBACK MainWndProc( HWND hwn ...

  10. 通过MFC窗口获取方向键

    1.启动时,从配置文件中读取上次保存的方向键键值,并将这些配置显示到窗口中 (1)从配置文件中读取方向键,并将其显示到窗口: iCfgValue = GetPrivateProfileInt(_T(& ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、并自定义设置可视化图像中没有网格线(remove grid line in matplotlib plot result)
  2. 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
  3. HTTP14种常见状态码详解——来自《http详解》
  4. 深度揭秘:大数据时代企业卖技术还是卖数据?
  5. go语言结构体标签的意义
  6. 深入入门正则表达式(java) - 1 - 入门基础
  7. flex里播放声音的方法
  8. 机器人把大龙拉出来_LOL-LPL夏季赛:Wei男枪打野未换惩戒 ES让BLG拿下首胜
  9. syslinux下载链接
  10. 西门子atch指令详解_西门子plc指令详解
  11. Address Sanitizer(Asan)原理及实战定位
  12. 营业增加值公式简要解析
  13. Amlogic连续三年居中国OTT芯片市占率第一
  14. IKEA宜家社会责任验厂标准
  15. sso单点登录的PHP实现(Laravel框架)
  16. 若依后台管理系统总结
  17. 梦幻模拟战手游服务器维护,梦幻模拟战手游11月21日更新公告 执行者降临限时召唤开启[多图]...
  18. exoplayer2同时播放多个音频文件
  19. stm32---DAC数模转换
  20. 强强联合! 统信携手ToDesk企业版打造国产远控安全新标杆

热门文章

  1. yolo v4模型训练过程(超详细)
  2. python set和frozenset 异同点学习记录
  3. java redis源码分析,慢谈 Redis 实现分布式锁 以及 Redisson 源码解析
  4. qt设置开机启动动画_Qt实现程序启动动画
  5. php socket邮箱,phpsocket.io php版本的socket.io
  6. Java TCP小结
  7. 7c盘满了怎么扩容_C盘爆满怎么办?扩容!
  8. 动画效果之手机端实现垃圾桶效果
  9. jira 6.x 日期设置
  10. 微服务网关(gateway)概述 与 嵌入式 Zuul 反向代理