HOW TO:建立使用者控制項並裝載至對話方塊中
更新:2007 年 11 月
本主題中的程序假設您是要建立新的對話方塊架構的 (CDialog Class) MFC 專案,但是您也可以在現有的 MFC 對話方塊中加入 Windows Form 控制項的支援。
若要建立 .NET 使用者控制項
建立名稱為 WindowsControlLibrary1 的新的 Visual C# Windows 控制項程式庫專案。
從 [檔案] 功能表中,選取 [新增],再選取 [專案]。在 [Visual C#] 資料夾中,選取 [Windows 控制項程式庫] 圖示。
按一下 [確定],接受預設的專案名稱 WindowsControlLibrary1。
.NET 控制項的預設名稱將會是 UserControl1。
在 UserControl1 中加入子控制項。
在 [工具箱] 中,開啟 [所有 Windows Form] 清單。將 Button 控制項拖曳至 UserControl1 設計介面。
另外再加入 TextBox 控制項。
在 UserControl1.Designer.cs 檔案中,將 TextBox 和 Button 控制項的宣告從 private 變更為 public。
建置專案。
在 [建置] 功能表中,按一下 [建置方案]。
請將所產生之 DLL 的檔案名稱與完整路徑記載在建置記錄中,因為您將會在 MFC 應用程式中輸入這項資訊。
若要建立 MFC 主應用程式
建立新的 MFC 應用程式專案。
從 [檔案] 功能表中,選取 [新增],再選取 [專案]。在 [Visual C++] 資料夾中,選取 [MFC 應用程式] 圖示。
在 [名稱] 方塊中,輸入 MFC01。將方案設定變更為 [加入至方案]。按一下 [確定]。[MFC 應用程式精靈] 隨即出現。
在 [MFC 應用程式精靈] 中,選取 [應用程式類型]。選擇 [對話方塊架構]。接受其餘的預設值,然後按一下 [完成]。這時將會建立含有 MFC 對話方塊的 MFC 應用程式。
在 MFC 對話方塊中加入預留位置控制項。
按一下 [資源檢視] 索引標籤。在 [資源檢視] 中,按兩下 [IDD_MFC01_DIALOG]。對話方塊資源隨即出現在 [資源編輯器] 中。
在 [工具箱] 中,開啟 [對話方塊編輯器] 清單。將靜態文字控制項拖曳至對話方塊資源中。靜態文字控制項將會當做 .NET Windows Form 控制項的預留位置。將其大小調整為大約 Windows Form 控制項的大小。
在 [屬性] 視窗中,將靜態文字控制項的 ID 變更為 [IDC_CTRL1],並將 [TabStop] 屬性變更為 [True]。
設定專案。
在 [方案總管] 中,以滑鼠右鍵按一下 [MFC01] 專案節點,然後從內容功能表中選取 [屬性]。[屬性頁] 對話方塊便會出現。
在 [屬性頁] 對話方塊的 [組態屬性] 樹狀控制項中,選取 [一般],然後在 [專案預設值] 區段中,將 [Common Language Runtime 支援] 設定為 [Common Language Runtime 支援 (/clr)]。按一下 [確定]。
將參考加入至 .NET 控制項。
在 [方案總管] 中,以滑鼠右鍵按一下 [MFC01] 專案節點並選取 [參考]。在 [屬性頁] 中,按一下 [加入新參考],選取 [WindowsControlLibrary1] (在 [專案] 索引標籤下),然後按一下 [確定]。這時便會以 /FU 編譯器選項的形式加入參考,讓程式能夠進行編譯,同時也會將 WindowsControlLibrary1.dll 複製到 MFC01 專案目錄中,讓程式能夠執行。
在 stdafx.h 中,找出下列這一行:
#endif // _AFX_NO_AFXCMN_SUPPORT
在其上方加入下列這幾行:
#include <afxwinforms.h> // MFC Windows Forms support
加入建立 Managed 控制項的程式碼。
首先,請宣告 Managed 控制項。在 MFC01Dlg.h 中,移至對話方塊類別的宣告部分,然後在 Protected 範圍內加入使用者控制項的資料成員,如下所示:
class CMFC01Dlg : public CDialog { // ... // Data member for the .NET User Control: CWinFormsControl<WindowsControlLibrary1::UserControl1> m_ctrl1;
接下來,提供 Managed 控制項的實作。在 MFC01Dlg.cpp 內由 [MFC 應用程式精靈] 所產生的 CMFC01Dlg::DoDataExchange 對話方塊覆寫中 (而不是同一個檔案中的 CAboutDlg::DoDataExchange),加入下列程式碼,建立 Managed 控制項並且使其與靜態的預留位置 IDC_CTRL1 產生關聯:
void CMFC01Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1); }
建置及執行專案。
在 [方案總管] 中,以滑鼠右鍵按一下 [MFC01] 並選取 [設定為啟始專案]。
在 [建置] 功能表中,按一下 [建置方案]。
在 [偵錯] 功能表中,按一下 [啟動但不偵錯]。現在您就會看見 MFC 對話方塊中顯示了 Windows Form 控制項。