HOW TO:建立使用者控制項並裝載 MDI 檢視
更新:2007 年 11 月
下列程序說明如何建立 .NET Frameworks 使用者控制項、在控制項類別程式庫中撰寫使用者控制項 (特別是 Windows 控制項程式庫專案),然後將專案編譯至組件。然後您將會從 MFC 應用程式使用控制項,而此控制項則是使用衍生自 CView Class 和 CWinFormsView Class 的類別。
如需如何建立 Windows Form 使用者控制項以及撰寫控制項類別程式庫的詳細資訊,請參閱 HOW TO:撰寫使用者控制項。
![]() |
---|
在某些情況下,當 WinForms 控制項 (例如協力廠商的方格控制項) 裝載於 MFC 應用程式中時,可能無法正常運作。建議的解決方法是將 Windows Form 使用者控制項放置在 MFC 應用程式中,然後將協力廠商的方格控制項放置在使用者控制項中。 |
如 HOW TO:建立使用者控制項並裝載至對話方塊中的程序所示,此程序假設您已建立名為 WindowsControlLibrary1 的 Windows Form 控制項程式庫專案。
若要建立 MFC 主應用程式
建立新的 MFC 應用程式專案。
在 [檔案] 功能表上,選取 [新增],然後再按一下 [專案]。在 [Visual C++] 資料夾中,選取 [MFC 應用程式]。
在 [名稱] 方塊中,輸入 [MFC02],並且將方案設定變更為 [加入至方案]。按一下 [確定]。
在 [MFC 應用程式精靈] 中,接受所有預設值,然後按一下 [完成]。這樣便會建立具備多重文件介面 (MDI) 的 MFC 應用程式。
設定專案。
在 [方案總管] 中以滑鼠右鍵按一下 [MFC02] 方案節點,然後從內容功能表中選取 [屬性]。[屬性頁] 對話方塊便會出現。
在 [屬性頁] 對話方塊的 [組態屬性] 樹狀控制項中,選取 [一般],然後在 [專案預設值] 區段中,將 [Common Language Runtime 支援] 設定為 [Common Language Runtime 支援 (/clr)]。按一下 [確定]。
將參考加入至 .NET 控制項。
在 [方案總管] 中,以滑鼠右鍵按一下 [MFC02] 專案節點,並且選取 [參考]。在 [屬性頁] 中,按一下 [加入新參考],選取 [WindowsControlLibrary1] (在 [專案] 索引標籤下),然後按一下 [確定]。這樣便會將參考加入至 /FU 編譯器選項的表單中,所以程式將會編譯;也會將 WindowsControlLibrary1.dll 複製到 MFC02 專案目錄,所以程式將會執行。
在 stdafx.h 中尋找此行:
#endif // _AFX_NO_AFXCMN_SUPPORT
將這些行加入至那行上面:
#include <afxwinforms.h> // MFC Windows Forms support
修改檢視類別,使其繼承 CWinFormsView。
在 MFC02View.h 中,以 CWinFormsView 取代 CView,使程式碼看起來如下所示:
class CMFC02View : public CWinFormsView { };
如果要將其他檢視加入至 MDI 應用程式,則需要針對每個建立的檢視呼叫 CWinApp::AddDocTemplate。
修改 MFC02View.cpp 檔,將 IMPLEMENT_DYNCREATE 巨集和訊息對應 (Message Map) 中的 CView 變更為 CWinFormsView,並且以下列顯示的建構函式 (Constructor) 取代現有之空的建構函式:
IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView) CMFC02View::CMFC02View(): CWinFormsView(WindowsControlLibrary1::UserControl1::typeid) { } BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView) //leave existing body as is END_MESSAGE_MAP()
建置及執行專案。
在 [方案總管] 中,以滑鼠右鍵按一下 [MFC02],並按一下 [設定為啟始專案]。
在 [建置] 功能表上,按一下 [建置方案]。
在 [偵錯] 功能表上,按一下 [啟動但不偵錯]。