消息处理函数n.pptVIP

  • 6
  • 0
  • 约2.45千字
  • 约 25页
  • 2016-04-23 发布于天津
  • 举报
消息处理函数n

本章主要内容: 模仿MFC用C++类对Windows主函数进行封装 应用程序类CWinApp及其派生类 窗口类CFrameWnd及其派生类 CCmdTarget类 MFC消息映射 * * MFC,微软基础类库(Microsoft Foundation Class) MFC Windows APIs OOA Object Oriented Analysis MFC Programming Win32 Programming 窗口类 WindowClass 注册窗口类 RegisterClass 创建窗口 CreateWindow 显示窗口 ShowWindow 消息循环 窗口类封装(Frame Window) 消息封装 应用程序类封装 派生 主函数的主要功能 创建和显示窗口 实现消息循环 主函数 窗口类(CFrameWnd) 应用程序类(CWinApp) 窗口管理 主函数逻辑 2. 窗口类的声明 3. 应用程序类的声明 4.主函数封装后的程序 用户的应用程序 MFC CFrameWnd CWinApp CMyWnd CMyApp 继承 不同的功能,如何实现? 1. 应用程序类的派生类 虚函数 继承 使用派生类对象 1. 应用程序类的派生类 关于全局应用程序类的对象——theApp命名 CWinApp MyApp; AFX is an abbreviation for a group. The MFC group was originally called the Application Framework group during the inception of MFC. However, X doesn’t stand for anything other than sounding cool. The original AFX group was renamed to MFC long ago. There is no current AFX group. But the AFX hasn’t been changed to MFC for the compatibility. 2. 窗口类的派生类 2.3 窗口函数的封装——消息映射 消息 取自消息队列 中的消息 WndProc(….) { switch(msg) { case msg1: action1 case msg2: action2 … … case msgN: actionN default: return DefWIndowProc(…); } return 0; } 消息路由 函数1 函数2 函数N 消息 函数指针 msg1 函数1 msg2 函数2 … … msgN 函数N 消息与函数的对应关系 消息映射 2.3 窗口函数的封装——消息映射 1. 窗口函数的简单封装 为CFrameWnd增加AfxWndProc( ) 将原WndProc( )中的代码移至AfxWndProc( )中 调用WndProc时调用AfxWndProc int APIENTRY WinMain() { … … return ResultCode = pApp-Run(); } 主函数 Windows系统 消息 事件 LRESULT CALLBACK WndProc() { 调用AfxWndProc(); } AfxWndProc() { 原窗口函数代码 } 封装了窗口函数的窗口类 但是,让窗口类具备消息处理能力似乎存在问题。 2.3 窗口函数的封装——消息映射 1. 窗口函数的简单封装 新的消息处理和响应类——CCmdTarget (Command Target Class) Class CFrameWnd { … … Int AfxWndProc(…); … … }; CFrameWnd Class CCmdTarget { … … Int AfxWndProc(…); … … }; CCmdTarget 期望具有消息 处理能力的类 继承(派生) 2.3 窗口函数的封装——消息映射 1. 窗口函数的简单封装 CCmdTarget CFrameWnd CMyWnd 如何实现? 消息映射表 2.3 窗口函数的封装——消息映射 2. 消息映射(回顾1.4) 消息映射及处理代码不可能全部放在CCmdTarget类中: 破坏了类的封装; 编码的难度与复杂

文档评论(0)

1亿VIP精品文档

相关文档