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

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

 2006-07-22 22:03:31 来源:WEB开发网   
核心提示: ATL 方式 1 - 连接一个CWindow对象最简单的方法是声明一个CWindow或其它window接口类,然后调用Attach()方法,MFC程序员的WTL指南(5)对话框与控件(4),还可以使用CWindow的构造函数直接将变量与控件的HWND关联起来,下面的代码三种方法将变量和一个

ATL 方式 1 - 连接一个CWindow对象最简单的方法是声明一个CWindow或其它window接口类,然后调用Attach()方法,还可以使用CWindow的构造函数直接将变量与控件的HWND关联起来。

下面的代码三种方法将变量和一个list控件联系起来:

HWND hwndList = GetDlgItem(IDC_LIST);
CListViewCtrl wndList1 (hwndList); // use constructor
CListViewCtrl wndList2, wndList3;
 wndList2.Attach ( hwndList );   // use Attach method
 wndList3 = hwndList;       // use assignment operator

记住CWindow的析构函数并不销毁控件窗口,所以在变量超出作用域时不需要将其脱离控件,如果你愿意的话还可以将其作为成员变量使用:你可以在OnInitDialog()处理函数中建立变量与控件的联系。

ATL 方式 2 - 包容器窗口(CContainedWindow)

CContainedWindow是介于CWindow和CWindowImpl之间的类,它可以子类化控件,在控件的父窗口中处理控件的消息,这使得所有的消息处理都放在对话框类中,不需要为为每个控件生成一个单独的CWindowImpl派生类对象。需要注意的是不能用CContainedWindow 处理WM_COMMAND, WM_NOTIFY和其他通知消息,因为这些消息是发给控件的父窗口的。

CContainedWindow只是CContainedWindowT定义的一个数据类型,CContainedWindowT才是真正的类,它是一个模板类,使用window接口类的类名作为模板参数。这个特殊的CContainedWindowT<CWindow>和CWindow功能一样,

CContainedWindow只是它定义的一个简写名称,要使用不同的window接口类只需将该类的类名作为模板参数就行了,例如CContainedWindowT<CListViewCtrl>。

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

Tags:MFC 程序员 WTL

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