共用方式為


如何:建立使用者控制項並裝載 MDI 檢視

下列步驟示範如何建立 .NET Framework 使用者控制項、在控制項類別庫中撰寫使用者控制項(特別是 Windows 控制項程式庫專案),然後將專案編譯成元件。 然後,您可以從 MFC 應用程式取用控制項,該應用程式會使用衍生自 CView 類別 CWinFormsView 類別的類別

如需如何建立 Windows Forms 使用者控制項及撰寫控制項類別庫的詳細資訊,請參閱 如何:撰寫使用者控制項

注意

在某些情況下,Windows Forms 控制項,例如協力廠商方方格控制項,在 MFC 應用程式中裝載時可能無法可靠地運作。 建議的因應措施是將 Windows Forms 使用者控制項放在 MFC 應用程式中,並將協力廠商方方格控制項放在使用者控制項內。

此程式假設您已建立名為 WindowsFormsControlLibrary1 的 Windows Forms 控制項程式庫專案,如如何:在對話方塊中 建立使用者控制項和主機中的 程式。

建立 MFC 主應用程式

  1. 建立 MFC 應用程式專案。

    在 [ 檔案] 功能表上,選取 [新增 ],然後按一下 [ 專案 ]。 在 [ Visual C++] 資料夾中,選取 [MFC 應用程式 ]。

    在 [ 名稱] 方塊中,輸入 MFC02 並將 [方案 ] 設定變更 [新增至方案 ]。 按一下 [確定]

    [MFC 應用程式精靈 ] 中,接受所有預設值,然後按一下 [ 完成 ]。 這會建立具有多個檔介面的 MFC 應用程式。

  2. 設定 Common Language Runtime (CLR) 支援的專案。

    方案總管 中,以滑鼠右鍵按一下 MFC01 專案節點,然後從操作功能表中選取 [屬性 ]。 [ 屬性頁] 對話方塊隨即出現。

    在 [設定屬性] 底下,選取 [一般]。 在 [ 專案預設值] 區段底 下,將 Common Language Runtime 支援 設定 Common Language Runtime 支援 (/clr)

    在 [組態屬性] 底下 ,展開 [C/C++ ],然後按一下 [ 一般 ] 節點。 將 [偵錯資訊格式 ] 設定 [程式資料庫] (/Zi)

    按一下 [程式 代碼產生] 節點。 將 [啟用最小重建 ] 設定 [否] (/Gm-) 。 同時將 [基本執行時間檢查 ] 設定 [預設值 ]。

    按一下 [ 確定 ] 以套用您的變更。

  3. pch.h 中 ( Visual Studio 2017 和更早版本中的 stdafx.h ),新增下列這一行:

    #using <System.Windows.Forms.dll>
    
  4. 新增 .NET 控制項的參考。

    方案總管 中,以滑鼠右鍵按一下 MFC02 專案節點,然後選取 [ 新增 ]、 [參考 ]。 在 [屬性頁 ] 中,按一下 [ 新增參考 ],選取 [WindowsFormsControlLibrary1] (在 [專案 ] 索引標籤下),然後按一下 [ 確定 ]。 這會以 /FU 編譯器選項的形式 新增參考,讓程式能夠編譯;它也會將 WindowsFormsControlLibrary1.dll MFC02 複製到專案目錄中,讓程式執行。

  5. 在 stdafx.h 中,尋找這一行:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    在上面新增這幾行:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. 修改檢視類別,使其繼承自 CWinFormsView

    在 MFC02View.h 中,將 CView 取代 CWinFormsView ,讓程式碼如下所示:

    class CMFC02View : public CWinFormsView
    {
    };
    

    如果您想要將其他檢視新增至 MDI 應用程式,您必須針對您所建立的每個檢視呼叫 CWinApp::AddDocTemplate

  7. 修改 MFC02View.cpp 檔案,將IMPLEMENT_DYNCREATE宏和訊息對應中的 CView 變更為 CWinFormsView,並以如下所示的建構函式取代現有的空白建構函式:

    IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView)
    
    CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid)
    {
    }
    BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView)
    //leave existing body as is
    END_MESSAGE_MAP()
    
  8. 建置並執行專案。

    方案總管 中,以滑鼠右鍵按一下 [MFC02],然後選取 [ 設定為啟始專案 ]。

    在 [建置] 功能表上,按一下 [建置方案]。

    在 [偵錯] 功能表上,按一下 [ 開始但不偵錯 ]。

另請參閱

將 Windows Form 使用者控制項裝載為 MFC 檢視