WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(5)对话框与控件 阅读

MFC程序员的WTL指南(5)对话框与控件

 2006-07-22 22:03:31 来源:WEB开发网   
核心提示: 将CMainDlg变量放在一个区块中是很重要的,因为CMainDlg可能有成员使用了ATL和WTL的特性,MFC程序员的WTL指南(5)对话框与控件(3),这些成员在析构时也会用到ATL/WTL的特性,如果不使用区块,也可以使用CWindowImpl的派生类,如果只是需要一个临时变量就用C

将CMainDlg变量放在一个区块中是很重要的,因为CMainDlg可能有成员使用了ATL和WTL的特性,这些成员在析构时也会用到ATL/WTL的特性,如果不使用区块,CMainDlg将在_Module.Term()(这个函数完成ATL/WTL的清理工作)调用之后调用析构函数销毁自己(和成员),并试图使用ATL/WTL的特性,这将导致程序出现诊断错误崩溃。(WTL 3的向导生成的代码没有使用区块,使得我的一些程序在结束时崩溃)

你现在可以编译并运行这个程序,尽管它只是一个简陋的对话框:

CMainDlg 的代码处理了WM_INITDIALOG, WM_CLOSE和三个按钮的消息,如果你喜欢可以浏览一下这些代码,你应该能够看懂CMainDlg的声明,它的消息映射和它的消息处理函数。

这个简单的工程还演示了如何将控件和变量联系起来,这个程序使用了几个控件。在接下来的讨论中你可以随时回来查看这些图表。

由于程序使用了list view控件,所以对AtlInitCommonControls()的调用需要作些修改,将其改为:

AtlInitCommonControls ( ICC_WIN95_CLASSES );

虽然这样注册的控件类比我们用到的多,但是当我们向对话框添加不同类型的控件时就不用随时记得添加名为ICC_*的常量(译者加:以ICC_开头的一系列常量)。

使用控件的封装类

有几种方法将一个变量和控件建立关联,可以使用CWindows(或其它Window接口类,如CListViewCtrl),也可以使用CWindowImpl的派生类。如果只是需要一个临时变量就用CWindow,如果需要子类化一个控件并处理发送给该控件的消息就需要使用CWindowImpl。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接