`
ijavagos
  • 浏览: 1248067 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WTL学习笔记(1)

 
阅读更多
一、ATL的GUI类

1.ATL中和窗口相关的类
ATL中的CWindow类定义了窗口的接口,它封装了绝大部分以HWND作为第一个参数的API函数,并直接将m_hWnd作为public成员提供。另外,它还重载了operator HWND,这样就可以将CWindow对象直接当作一个窗口句柄使用了。
ATL中窗口的实现是由CWindowImpl完成的,其中包括窗口类的注册、窗口的子类化、消息映射以及一个基本的WindowProc。另外,对话框的实现是由CDialogImpl和CAxDialogImpl完成的。其中前者是普通对话框,后者用于包含ActiveX控件的对话框。

2.定义窗口的实现
所有需要创建的非对话框窗口都继承自CWindowImpl,在其中需要做三件事情:一,定义窗口类;二,消息映射;三,窗口使用的默认样式。
窗口类的定义是通过DECLARE_WND_CLASS或DECLARE_WND_CLASS_EX宏实现的,其中前者的参数是窗口类名,后者的参数分别是窗口类名、样式和背景色。如果使用NULL作为窗口类名称,那么ATL会自动生成一个窗口类名称。例如:
class CMyWindow : public CWindowImpl<CMyWindow>
{
public:
DECLARE_WND_CLASS(_T("My Window Class"))
};
消息映射是通过BEGIN_MSG_MAP和END_MSG_MAP宏完成的,如下:
class CMyWindow : public CWindowImpl<CMyWindow>
{
public:
DECLARE_WND_CLASS(_T("My Window Class"))

BEGIN_MSG_MAP(CMyWindow)
// 在这里完成映射内容
END_MSG_MAP()
};
窗口类特性不常用,它是通过CWinTraits这个类模板完成的。

3.消息映射表
ATL中用三个宏来实现消息映射,它们是:
COMMAND_ID_HANDLER(命令ID, 处理函数)——用来处理WM_COMMAND;
NOTIFY_HANDLER(控件ID, 通知码, 处理函数)——用来处理WM_NOTIFY;
MESSAGE_HANDLER(消息名称, 处理函数)——用来处理其它消息。
分享到:
评论

相关推荐

    深入剖析WTL

    ### 深入剖析WTL:WTL学习教程 #### Win32模型 在深入了解WTL之前,我们先从基础的Win32模型入手。Win32模型是微软为Windows平台设计的一套API集合,旨在简化Windows应用程序的开发。本文档主要介绍了Win32模型中...

    ATL与 WTL学习

    ATL与 WTL学习,学习两者互操作的.。

    WTL学习资料中文版(经典入门)

    1. **WTL 基础**:介绍WTL的基本架构和设计理念,包括如何创建基本的窗口类,理解ATL(Active Template Library)的基础知识,以及WTL与ATL的关系。 2. **控件和用户界面**:讲解如何在WTL中使用各种标准Windows...

    WTL4MFC1_demo

    **WTL4MFC1_demo** 是一个关于Windows Template Library(WTL)的学习示例,它与特定的博客文章——《WTL学习相关》相呼应,这篇文章详细介绍了如何使用WTL进行开发,尤其是如何与Microsoft Foundation Class (MFC)...

    WTL Viewer.rar_WIL查看器和WTL_WTL查看器_wtl_wtl文件查看器_wtl格式

    1. **wil查看器和wtl**:可能是因为命名上的误解,WIL查看器与WTL查看器是两个不同的概念,这里可能是想强调这个工具能处理WTL相关的文件。 2. **wtl查看器**:这是对软件功能的直接描述,即它是一个专门查看WTL文件...

    WTL 入门学习资料

    感谢网络前辈的无私分享,再整理一下 WTL 的学习文档。 所有源码都能在 VC6,WTL7.0 下编译通过。 具体内容如下: 1、WTL个性设置demo 文档和源码。 2、WTL for MFC Programmers 系列翻译文章,以及源码。 3、WTL ...

    wtl的学习资料,很不错的

    1. **Windows API**:WTL建立在Windows API之上,因此熟悉API函数和结构体对于使用WTL至关重要。例如,窗口类、消息处理、GDI(Graphics Device Interface)等。 2. **C++模板**:WTL大量使用了C++模板,这使得它...

    WTL学习指南(从MFC到WTL的转折)

    1. ATL基础:WTL建立在ATL之上,因此理解ATL的基本概念是必要的。这包括ATL的模板类、COM接口的实现以及轻量级窗口类。 2. ATL窗口类:学习如何定义和实现ATL窗口类,这涉及到消息映射和处理函数的编写。WTL提供了...

    ATL&WTL学习资料(含WTL7.1EXE)

    在"ATL&WTL学习资料(含WTL7.1EXE)"这个资源包中,你可以找到关于这两个库的学习材料,特别关注的是它们在界面UI开发上的应用。WTL7.1EXE可能是一个包含示例代码和教程的可执行程序,可以帮助你深入理解如何利用WTL...

    wtl 学习材料 wtl study.rar

    wtl study文件可能是另一份学习资料,可能包括笔记、示例代码、练习项目或者是一些深入讲解WTL特定功能的文章。例如,它可能会讲解如何使用WTL创建窗口、控件、菜单、对话框,以及如何处理用户输入和系统事件。此外...

    C++中ATL与WTL学习

    ### C++中ATL与WTL的学习指南 #### 第一部分:ATL中的GUI类 **ATL背景知识** - **ATL与WTL的历史:** 应用程序开发语言(ATL)最初由Microsoft开发,旨在提供一种轻量级、高性能的组件开发框架。随着Windows的...

    WTL 教程和部分学习资料

    建议大家下我的另外一个资源:WTL 学习资源(整合了不少东西,希望对初学者有用),这个东西是后来加上的,加入了另外的一些资料。

    ATL与WTL学习资料[pdf]

    ### ATL与WTL学习资料知识点概述 #### 一、ATL与WTL的历史与背景 - **ATL**: 应用程序开发库(Application Developer Library),最初由Microsoft开发,旨在简化COM组件的创建过程。随着时间的发展,ATL逐渐扩展了其...

    WTL 学习资源(整合了不少东西,希望对初学者有用)

    1. **文档**:WTL的官方文档虽然较为简洁,但包含了关键类和函数的描述。学习WTL时,应首先熟悉这些文档,了解基本的类结构和API。 2. **示例代码**:提供的Demo是学习WTL的重要途径,通过实际的代码,你可以看到...

    wtl开发,wtl

    通过学习和使用WTL,开发者可以深入理解Win32编程,提高效率,并且能够在不依赖大型框架的情况下构建高性能的应用程序。WTL的灵活性和效率使其成为C++开发者在创建Windows应用时的一个强大工具。

    WTL教程(学习)

    1. **开发平台SDK**:WTL依赖于平台SDK,确保正确安装并配置SDK,以便能够访问必要的头文件和库文件。 2. **WTL安装**:从微软官方网站获取最新版本的WTL,并按照指南完成安装过程。 3. **MFC基础**:熟悉MFC的基本...

    WTL Guide and WTL7.1

    学习WTL需要对Windows API有一定的了解,但一旦掌握,它能提供一种高效、直接的编程体验。通过阅读“WTL Guide”,开发者可以深入理解WTL的用法和最佳实践,而“WTL7.1 Exe”可能包含示例代码或可执行文件,帮助...

    WTL 学习资料(实例丰富最好的学习wtl的资料)

    WTL的学习资料因其丰富的实例而备受推崇,是提升C++ Windows编程技能的宝贵资源。 WTL的核心特性包括: 1. **轻量级**:WTL库的大小远小于MFC(Microsoft Foundation Classes),因此在开发小型、快速的应用程序时...

    wtl自学材料,10篇介绍文字

    下面我们将详细探讨WTL的核心概念、与MFC的关系以及如何利用这些资源进行学习。 WTL简介: WTL最初是作为MFC的一个补充,旨在提供更直接的对Windows API的访问。它提供了模板类,使得开发者可以更加简洁地编写...

Global site tag (gtag.js) - Google Analytics