1、在Windows API编程中,直接在消息处理函数中编写WM_PAINT处理代码。

2、在MFC中,CFrameWnd的消息处理过程在哪里呢?MFC时如何将消息处理函数和窗口关联起来的。

  在CFrameWnd::CreateEx中,调用PreCreateWindows来注册窗口。

  AfxDefRegisterClass(AFX_WNDFRAMEORVIEW_REG):注册一个固定的窗口类,这个窗口类中的消息处理过程时一个固定的消息处理过程,

  真正将我门的消息处理过程CWnd::WindowProc和我们的窗口进行关联的代码在AfxHookWindowCreate(this)函数中。

  CFrameWnd::CreateEx中,调用AfxHookWindowCreate(this),将窗口类CFrameWnd::WindowProc的消息处理过程和CFrameWnd窗口进行关联。

  AfxHookWindowCreate(this)

  ::SetWindowsHookEx(WH_CBT, _AfxCbtFilterHook, NULL, ::GetCurrentThreadId());

  这个函数在线程中,埋下一个钩子,

  找到钩子函数,_AfxCbtFileterHook,在钩子函数中下一个断点。

    在_AfxCbtFileterHook中,调用SetWindowLongPtr(hWnd, GWLP_WNDPROC, (DWORD_PTR)afxWndProc);

    将我们创建的窗口pFrame和afxWndProc窗口处理过程和关联(afxWndProc是MFC中的一个统一消息处理过程)

  AfxWndProc调用AfxCallWndProc(pWnd, hWnd, nMsg, wParam, lParam);

  AfxCallWndProc(pWnd, hWnd, nMsg, wParam, lParam)调用pWnd->WindowProc(nMsg, wParam, lParam);

3、CFrameWnd是一个窗口,那么这个类中,包含了消息处理函数,这个消息处理函数继承自CWnd。

4、在CWnd中存在以下的这个函数,该函数就是消息处理函数。

virtual LRESULT WindowProc(UINT message,  WPARAM wParam,  LPARAM lParam);

转载于:https://www.cnblogs.com/xiaohaige/p/7419589.html

MFC中的消息处理函数相关推荐

  1. VC的MFC中重绘函数的使用总结(整理)

    原文网址:http://www.cnblogs.com/x8023z/archive/2008/12/09/mfc33.html 在刷新窗口时经常要调用重绘函数 MFC提供了三个函数用于窗口重绘 In ...

  2. MFC中关于虚函数的一些问题

    这个是C++中虚函数以及多态性. 我们知道,如果派生类中重定义了基类中的虚函数,即使用基类的类型指针调用该函数,那么实际上连编的是派生类的函数.比如, class A { virtual void o ...

  3. MFC中的UpdateData()函数

    当你使用了ClassWizard建立了控件和变量之间的联系后: 当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE) 如果你希望知道用户在对话框中到 ...

  4. MFC中 AfxBeginThread()的函数

    函数原型: CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,//指向工作的线程,不能为空 LPVOID pParam,//参数要传递到 ...

  5. MFC中的Create();函数

    创建控件: enum{IDC_NAME=1009,IDC_NAME2=1008}; CWnd m_edit;                        //这个变量应该放在类中 void CAbo ...

  6. MFC中的InitInstance()函数应该怎样理解

    https://zhidao.baidu.com/question/29097884.html

  7. 鸡啄米MFC教程笔记之七:对话框:为控件添加消息处理函数

    MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理.比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等.一 ...

  8. 修改MFC中AfxMessageBox()函数的对话框标题

    修改MFC中AfxMessageBox()函数的对话框标题 如何在MFC中修改AfxMessageBox()函数所弹出的对话框标题,步骤如下: 1.找到项目工程的资源视图,打开.rc资源文件下的Str ...

  9. MFC中使用FLASH相关

    2019独角兽企业重金招聘Python工程师标准>>> 一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe.com/ ...

最新文章

  1. 成人短信11条,全看懂的是超级色狼
  2. hao123电脑版主页_生活小技巧003:电脑主页被恶意篡改怎么办?
  3. 使用iPhone相机和OpenCV来完成3D重建(第一部分)
  4. python苹果电脑如何下载_python for Mac|python Mac版V2.7.10下载(暂未上线)_预约_飞翔下载...
  5. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
  6. 360浏览器清除缓存_微信缓存清理教程
  7. 存储过程是用来干什么的_感情不是用来考验的
  8. html只能选择年月,EasyUi日期控件datebox设置,只显示年月,也只能选择年月
  9. Microsoft Store下载应用奇慢无比的解决方案
  10. 超级好用很少人知道的5款小众软件,建议收藏转发
  11. matlab data数据类型,MATLAB - 数据类型
  12. 德国人的智慧--生活是具体的
  13. 电子计算机属于输出设备的是,下列设备属于输入设备 下列设备中属于输出设备的是 A.键盘 B.鼠标 C.显示器 D.扫描仪...
  14. 金山wps支持java接口开发吗_金山wps开放平台使用踩坑实录
  15. 《机器学习入门实战》第 01 篇 如何入门机器学习?
  16. 如何扩大你的心理舒适区?
  17. win7安装后无声音怎么办
  18. python1300_相机选型器 : PYTHON 1300-NOIP1SN1300A-QDI
  19. 为什么需要射频校准?
  20. 【无标题】chatgpt桌面化,桌面应用的安装

热门文章

  1. mysql安装后第一次操作_MySQL数据库之mysql 安装成功以及第一次安装成功初始化密码操作...
  2. php 时间函数详解,PHP时间函数date()详解
  3. python的plt函数_plt.plot画图函数
  4. mysql时间相减得到毫秒值_Mysql 字符串、时间、时间戳相互转换,相减获取秒数...
  5. android鼾声分析,鼾声分析器
  6. 三面腾讯,已拿offer
  7. 网络推广费用之你的文章标题优化“合格”了吗?
  8. 细节定成败!汕头网络推广提醒你在做网站内容收录时需注意什么?
  9. 外贸网络推广浅析新建网站该如何更快速进入搜索结果首页?
  10. 网络营销外包排名没效果想必是这些因素影响了网络营销外包