共用方式為


HOW TO:新增命令傳送至 Windows Form 控制項

CWinFormsView 傳送命令並更新命令 UI 訊息至使用者控制項,以允許該控制項處理 MFC 命令 (例如,框架功能表項目和工具列按鈕)。

使用者控制項使用 ICommandTarget::Initialize 來儲存參考至 m_CmdSrc 中的命令來源物件,如下列範例所示。 若要使用 ICommandTarget,您需要加入對 mfcmifc80.dll 的參考。

CWinFormsView 會將數個常見的 MFC 檢視告知轉寄至管理的使用者控制項,藉此來處理它們。 這些告知包含 IView InterfaceOnInitialUpdateOnUpdateOnActivateView 方法。

本主題假設您先前已完成 HOW TO:建立使用者控制項並裝載至對話方塊中HOW TO:建立使用者控制項並裝載 MDI 檢視

若要建立 MFC 主應用程式

  1. 開啟您在 HOW TO:建立使用者控制項並裝載至對話方塊中建立的 Windows Form 控制項程式庫。

  2. 加入對 mfcmifc80.dll 的參考,其方式是以滑鼠右鍵按一下 [方案總管] 中的專案節點,並選取 [加入參考],然後瀏覽至 Microsoft Visual Studio 10.0\VC\atlmfc\lib。

  3. 開啟 UserControl1.Designer.cs,並加入下列 using 陳述式:

    using Microsoft.VisualC.MFC;
    
  4. 此外,也在 UserControl1.Designer.cs 中將這一行:

    partial class UserControl1
    

    變更為:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. 將這一行加入到 UserControl1 之類別定義的第一行:

    private ICommandSource m_CmdSrc;
    
  6. 將下列方法定義加入到 UserControl1 (將會在下一個步驟中建立 MFC 控制項的 ID):

    public void Initialize (ICommandSource cmdSrc)
    {
       m_CmdSrc = cmdSrc;
       // need ID of control in MFC dialog and callback function 
       m_CmdSrc.AddCommandHandler(32771, new CommandHandler (singleMenuHandler));
    }
    
    private void singleMenuHandler (uint cmdUI)
    {
       // User command handler code
       System.Windows.Forms.MessageBox.Show("Custom menu option was clicked.");
    }
    
  7. 開啟您在 HOW TO:建立使用者控制項並裝載 MDI 檢視建立的 MFC 應用程式。

  8. 加入一個將叫用 singleMenuHandler 的功能表選項。

    移至 [資源檢視] (CTRL+SHIFT+E),並展開 [功能表] 資料夾,然後按兩下 [IDR_MFC02TYPE], 如此即會顯示功能表編輯器。

    在 [檢視] 功能表的底端加入功能表選項, 請記下 [屬性] 視窗中的功能表選項 ID。 儲存檔案。

    在 [方案總管] 中開啟 Resource.h 檔,並複製您剛加入的功能表選項 ID 值,然後貼上該值,當做 C# 專案的 Initialize 方法中 m_CmdSrc.AddCommandHandler 呼叫的第一個參數 (請視需要取代 32771)。

  9. 建置及執行專案。

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

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

    選取您加入的功能表選項; 請注意,會呼叫此 .dll 中的方法。

請參閱

參考

ICommandSource Interface

ICommandTarget Interface

CommandHandler Delegate

其他資源

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