初识WTL(下)

代码运行效果图如下:

接上一节,我们这次在SDI中添加一个按钮,用来演示弹出一个自己添加的对话框。

因为WTL目前不支持像MFC那样的Class Wizard,所以我们得手动添加一些代码。首先我们在Resource View中Insert Dialog,接下来我们也可以借用一下MFC的Class Wizard,如图:

这里的CAxDialogImpl也可是CDialogImpl,MFC的Class wizard确实没为我们的小程序作些贡献,除了生成.h和.cpp文件,相信以后WTL也可以有Class Wizard支持。别忘了在你的.h文件中添加#include "resource.h"可以参照AboutDlg添加你的代码。这里我主要介绍在WTL中怎样使用DDX/DDV机制,如果你很清楚MFC中的DDX/DDV,这对你来说是so easy!

首先,你的在头文件中添加

(1)#include <atlddx.h> //对使用DDX/DDV macro的定义
#include <atlcom.h>
#include <atlhost.h>  //这两个文件是使对话框可以使用ActiveX控件
(2)class CDlgTest : public CAxDialogImpl<CDlgTest>,
public CWinDataExchange<CDlgTest>//封装了DDX/DDV运行机制
(3)添加宏:BEGIN_DDX_MAP(CDlgTest)
DDX_CONTROL(IDC_TREE_WTL, m_Tree) // m_Tree我们自己定义的一个控件
END_DDX_MAP()
这些都和MFC的基本类似,最后在OnInitDialog中添加DoDataExchange(false);就完成了和MFC一样的DDX/DDV。另外,在对话框添加了一个菜单,添加方法和MFC的一样,你也可以在程序中添加代码来完成!

参考资料:WTL for MFC Programmers 作者:Michael Dunn 在此深表感谢

本文配套源码

时间: 2024-11-02 12:44:34

初识WTL(下)的相关文章

初识WTL(上)

代码运行效果图如下: 1.前言 虽然MFC的功能很强大,但Windows Template Library(WTL)的出现,无疑说明了MFC有一定的弊病.和MFC相比,功能并没有MFC完善.比如MFC支持doc/view架构,而WTL并不支持.同时,WTL也没有Microsoft的官方支持.但是,WTL是基于模版(template)的,其应用程序最小只有24KB,同时不象MFC,依赖DLL.但是WTL也实现了CString.CRect.CSize.CPoint等常用的类,还CStaticT<TB

解析在WTL下使用双缓冲的实现方法_C 语言

使用WTL的CDoubleBufferImpl类可以方便的实现双缓冲,而不必自己实现繁琐的代码,不仅可以绘制一般窗口,也可以绘制对话框的背景等.首先 #include <atlframe.h>其次需要双缓冲画图的类需要派生自CDoubleBufferImpl<>:class CMainDlg : public CDialogImpl<CMainDlg>, public CDoubleBufferImpl<CMainDlg>{}然后消息链中加入BEGIN_MS

HOOK自绘原理

做"HOOK文件打开/保存对话框"的过程中,我首先研究了界面库的相关知识.界面库一般都是由C/C++这种中低级语言编码,这是因为在Windows下的界面库实现技术大都以直接操作控制Windows的消息和调用Windows的API为主,这就是这种中低级语言的优势了.无论何种界面库,最为根本的原理就是获得或者截获窗口的某些消息,按照自己的需要处理这些消息,画出自己需要的界面. 按照Windows下的界面库的使用方法来分类,可以分为两种: 1. 通过派生.继承界面库中的类来使用库.这类界面库

初识数据仓库(Data Warehousing)-“掀起你的盖头来”

数据 初识数据仓库(Data Warehousing)-"掀起你的盖头来"我在这里就说说我初学的一些认识和看法,希望这些能够作为一些简单的介绍给那些初学的朋友们,更希望起到抛砖引玉的效果.    说到数据仓库,我们了解一下他产生的背景.自从DBASEⅢ(dBase是dos年代发展过来得数据库管理程序,先归属于Borland旗下)的兴起,数据库的应用进入了个人计算机,使得中小企业也纷纷进入商业性的数据库应用阶段.这时的数据库应用主要是进行数据的记录,我们称这类为OLTP(线上事务处理)数

Flash AS 3.0入门教程:初识AS 3.0

初识AS3.0 学习AS3.0已有一段时间了,想把自已对AS3的一些认识和大家分享一下.主要想说说AS3与AS2的不同之处,没有什么逻辑性,想到什么就写点什么,因此,它不适合AS高手们阅读.本文将力求用最直白的语言,尽量不用那些艰涩难懂的名词和术语. 一.在什么地方写代码 失望,以为要说点啥,原来是这么小儿科的问题.没办法,我说过了,本文不适合AS高手阅读的.为了更好地理解,我们还是用例子来说明.现在,就让我们一起来回顾一下,在AS2中我们都会把代码写在什么地方.我们在AS2中建一新文档,新建一

一起学WINS系列(一)初识、基础

<一起学WINS>系列是新出的一个系列专题,旨在用通俗的语言和精细的实例向大家介绍windows2003 服务之一,WINS服务.尽管现在server 2008比较火,且很受欢迎,但这些基础的东西还是不能忘的,希 望大家通过本系列的讨论和学习,对WINS有一些更多的认识和理解.不过,事先声明,本系列并非WINS的 帮助文件,不可能面面俱到,过于常规的知识点可能会很少提及,本文出发点是从实用角度来学习和理解 WINS. 此系列第一节:初识.基础. WINS是什么?从字面理解就是Windows I

MFC程序员WTL指南(7)包容ActiveX控件

介绍 在第六章,我将介绍ATL对在对话框中使用ActiveX控件的支持,由于ActiveX控件就是ATL的专业,所以WTL没有添加其他的辅助类.不过,在ATL中使用ActiveX控件与在MFC中有很大的不同,所以需要重点介绍.我将介绍如何包容一个控件并处理控件的事件,开发ATL应用程序相对于MFC的类向导来说有点不方便.在WTL程序中自然可以使用ATL对包容ActiveX控件的支持. 例子工程演示如何使用IE的浏览器控件,我选择浏览器控件有两个好处: 每台计算机都有这个控件,并且 它有很多方法和

初识Android的ReactiveX

初识Android的ReactiveX 开发一个复杂一点的Android应用都会用到网络请求,交互和动画.这些都意味着 要写很多的回调嵌套.这样的代码也被称为callback hell(回调地狱).这样的 代码不仅长,很难理解,而且也是错误高发的地方.ReactiveX 提供了一个清晰.准确处理异步问题和事件的方法. RxJava是一个ReactiveX在JVM上的实现,由NetFlix开发.这个库在Java开发者中 广为流传.这个教程中你会学到如何在Android应用开发中使用RxJava.这

[译]安卓界面导航初识

本文讲的是[译]安卓界面导航初识, 原文地址:A Primer on Android navigation 原文作者:Liam Spradlin 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:horizon13th 校对者:SumiMakito, laiyun90 安卓界面导航初识 界面中任何引领用户跳转于页面之间的媒介 -- 这便是导航 当你的应用中的两个不同页面产生联系时,导航便由此而生.跳转链接(不论从哪跳到哪)便是页面间传递用户的媒介.创建导