代碼運行效果圖如下:
接上一節,我們這次在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的定義
(2)
#include <atlcom.h>
#include <atlhost.h> //這兩個文件是使對話框可以使用ActiveX控件class CDlgTest : public CAxDialogImpl<CDlgTest>,
(3)添加宏:
public CWinDataExchange<CDlgTest>//封裝了DDX/DDV運行機制BEGIN_DDX_MAP(CDlgTest)
這些都和MFC的基本類似,最後在OnInitDialog中添加DoDataExchange(false);就完成了和MFC一樣的DDX/DDV。另外,在對話框添加了一個菜單,添加方法和MFC的一樣,你也可以在程序中添加代碼來完成!
DDX_CONTROL(IDC_TREE_WTL, m_Tree) // m_Tree我們自己定義的一個控件
END_DDX_MAP()
參考資料:WTL for MFC Programmers 作者:Michael Dunn 在此深表感謝
本文配套源碼