C++中WTL_和_MFC_编程
目录 WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue ................................ ........................... 6 WTL for MFC Programmers, Part I - ATL GUI Classes ................................ ........................... 8 README.TXTREADME.TXT README.TXTREADME.TXT README.TXTREADME.TXT ................................ ................................ ................................ ......................... 8 对本系列文章的总体介绍 对本系列文章的总体介绍 对本系列文章的总体介绍 ................................ ................................ ................................ ....... 9 对第一章的简单介绍 对第一章的简单介绍 ................................ ................................ ................................ ............. 11 ATL ATL ATL 背景知识 ................................ ................................ ................................ ....................... 11 ATL 和 WTL 的发展历史 ................................ ................................ ......................... 12 ATL-style 模板 ................................ ................................ ................................ ............. 12 ATL ATL ATL 窗口类 ................................ ................................ ................................ ........................... 15 定义一个窗口的实现 定义一个窗口的实现 ................................ ................................ ................................ ............. 17 填写消息映射链 ................................ ................................ ................................ ............. 19 高级消息映射链和嵌 高级消息映射链和嵌 入类 ................................ ................................ ................................ ..... 21 ATLATL 程序的结构 ................................ ................................ ................................ .................... 24 ATLATL 中的对话框 ................................ ................................ ................................ .................... 27 WTL for MFC Programmers, Part II - WTL GUI Base Classes ................................ ............. 32 对第二部分的介绍 对第二部分的介绍 ................................ ................................ ................................ ................. 32 WTL WTL WTL WTL 总体印象 ................................ ................................ ................................ ...................... 32 开始写 WTLWTLWTL程序 ................................ ................................ ................................ .................. 33 WTL WTL WTL WTL 对消息映射的增强 ................................ ................................ ................................ ...... 36 从 WTLWTLWTL的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 ................................ ................................ .......... 42 使用向导的整个过程 ................................ ................................ ................................ ..... 42 查看生成的代码 ................................ ................................ ................................ ............. 44 CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop 的内部实现 ................................ ................................ ................................ .. 47 CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl 的内部实现 ................................ ................................ ......................... 48 回到前面的时钟程序 回到前面的时钟程序 ................................ ................................ ................................ ............. 50 界面元素的自动更新 界面元素的自动更新 (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) ................................ ................................ ...................... 51 添加控制时钟的新菜单项 ................................ ................................ ............................. 52 调用 UIEnable()................................ ................................ ................................ ............ 53 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 ................................ ................................ ### C++中WTL与MFC编程:关键技术与实践 #### WTL与MFC概述 在C++领域,特别是Windows平台开发中,WTL(Windows Template Library)与MFC(Microsoft Foundation Classes)是非常重要的框架。它们都提供了丰富的类库来简化Windows应用程序的开发。本文将详细介绍WTL和MFC的基本概念、发展历程以及核心编程技术。 #### ATL与WTL的发展历程 ATL(Active Template Library)是微软提供的一组C++类库,主要用于COM组件的开发。WTL是在ATL的基础上发展起来的,主要目的是提供一个轻量级的GUI框架,用于替代MFC进行Windows应用程序开发。WTL的出现使得开发者可以更高效地编写出高性能的应用程序,尤其是在内存占用和执行效率方面有着明显的优势。 #### ATL-style模板 ATL-style模板是WTL的核心组成部分之一,它提供了一种简洁的方式来创建和管理Windows控件。通过这些模板,开发者可以快速构建窗口、对话框和其他UI组件,并且能够有效地管理和处理各种消息。 ##### 示例:定义窗口类 ```cpp class CMyWindow : public CWindowImpl<CMyWindow> { public: DECLARE_WND_CLASS(NULL) BEGIN_MSG_MAP(CMyWindow) MESSAGE_HANDLER(WM_CREATE, OnCreate) CHAIN_MSG_MAP(CWindowImpl<CMyWindow>) END_MSG_MAP() LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // 初始化窗口 return 0; } }; ``` #### ATL窗口类 在WTL中,窗口类是通过继承`CWindowImpl`类来实现的。这个基类提供了一系列的辅助函数和消息映射机制,使得开发者能够更加方便地处理窗口的消息。 ##### 示例:创建窗口实例 ```cpp CMyWindow wnd; wnd.Create(NULL, _T("My Window"), WS_OVERLAPPEDWINDOW); ``` #### 消息映射机制 消息映射是WTL中最关键的技术之一。它允许开发者通过简单的宏定义来关联特定的消息和处理函数。这种方式极大地简化了消息处理的过程,提高了开发效率。 ##### 示例:使用消息映射 ```cpp BEGIN_MSG_MAP(CMyWindow) MESSAGE_HANDLER(WM_DESTROY, OnDestroy) CHAIN_MSG_MAP(CWindowImpl<CMyWindow>) END_MSG_MAP() LRESULT CMyWindow::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { PostQuitMessage(0); return 0; } ``` #### 高级消息映射链和嵌入类 除了基本的消息映射外,WTL还支持更高级的功能,如嵌入类和多重继承。这使得开发者可以更加灵活地设计和组织代码结构。 ##### 示例:使用嵌入类 ```cpp class CMyFrame : public CFrameWindowImpl<CMyFrame, CMyFrameImpl, CMyFrameT> { public: BEGIN_MSG_MAP(CMyFrame) MESSAGE_HANDLER(WM_CREATE, OnCreate) CHAIN_MSG_MAP(CFrameWindowImpl<CMyFrame, CMyFrameImpl, CMyFrameT>) END_MSG_MAP() LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // 创建窗口 return 0; } }; class CMyFrameImpl : public CWindowImplBaseT<CMyFrame> { public: BEGIN_MSG_MAP(CMyFrameImpl) CHAIN_MSG_MAP(CWindowImplBaseT<CMyFrame>) END_MSG_MAP() }; ``` #### WTL程序结构 WTL程序通常遵循一定的结构,包括初始化、创建窗口、消息循环等几个关键步骤。这种结构清晰明了,便于理解和维护。 ##### 示例:WTL程序主入口 ```cpp int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow) { CMyApp theApp; if (!theApp.InitApplication()) return 0; CMyWindow wnd; if (!wnd.Create(NULL, _T("My Application"), WS_OVERLAPPEDWINDOW)) return 0; ShowWindow(wnd, nCmdShow); MSG msg = {0}; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (int)msg.wParam; } ``` #### WTL对话框 对话框是WTL程序中非常常见的UI元素。WTL提供了多种方法来创建和管理对话框,包括使用资源编辑器、动态创建对话框以及使用对话框数据交换(DDX)等功能。 ##### 示例:创建对话框 ```cpp class CMyDialog : public CDialogImpl<CMyDialog> { public: BEGIN_DIALOG(IDD_MY_DIALOG) DIALOG_STYLE(DS_SETFONT | DS_MODALFRAME) CONTROL(_T("Edit"), IDC_EDIT1, CStatic) END_DIALOG() BEGIN_MSG_MAP(CMyDialog) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) CHAIN_MSG_MAP(CDialogImpl<CMyDialog>) END_MSG_MAP() LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // 初始化对话框 return TRUE; } }; ``` #### WTL控件封装 WTL还提供了一系列封装了Windows标准控件的类,这些类使得开发者可以更加方便地使用这些控件。例如,`CButtonCtrl`用于封装按钮控件,`CEditCtrl`用于封装编辑框控件等。 ##### 示例:使用封装的控件 ```cpp class CMyEditCtrl : public CEditCtrl { public: BEGIN_MSG_MAP(CMyEditCtrl) MESSAGE_HANDLER(WM_CREATE, OnCreate) CHAIN_MSG_MAP(CEditCtrl) END_MSG_MAP() LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // 初始化控件 return 0; } }; ``` #### 结论 通过本文的介绍,我们可以看出WTL不仅提供了轻量级的GUI框架,而且具有非常丰富的功能和高度的灵活性。对于那些希望开发高性能Windows应用程序的开发者来说,WTL无疑是一个非常值得考虑的选择。同时,对于熟悉MFC的开发者而言,学习WTL也是一种很好的技能扩展。
剩余186页未读,继续阅读
- 粉丝: 2
- 资源: 41
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DingTalk Design CLI是面向钉钉三方前端应用研发的命令行工具.zip
- Gridsome前端框架,一键部署到云开发平台.zip
- 基于xxl-job的Java增强包设计源码,支持注册中心与自动管理
- 基于Java与前端技术的开源企业培训系统设计源码
- python3 django3 结合Vue.js框架构建前后端分离web开发.zip
- Aurora前端实现(基于Vue.js + Bulma + Element开发).zip
- creator开发前端框架.zip学习资料
- 基于Java语言实现的图灵院第二次项目五子棋小游戏设计源码
- SAHX-Admin-iview 是套功能较为完整的后台管理系统架构, 以Thinkjs作为中间层, Vuejs作为前端模块化开发, iview作为前端UI.zip
- Automan一站式前端开发框架.zip学习资料
- 1
- 2
前往页