Postupy: Přidání směrování příkazů do ovládacího prvku Windows Forms
CWinFormsView směruje příkazy a zprávy uživatelského rozhraní update-command do uživatelského ovládacího prvku, aby mohl zpracovávat příkazy MFC (například položky nabídky rámečku a tlačítka panelu nástrojů).
Uživatelský ovládací prvek používá ICommandTarget::Initialize k uložení odkazu na zdrojový objekt příkazu v m_CmdSrc
, jak je znázorněno v následujícím příkladu. Pokud chcete použít ICommandTarget
, musíte přidat odkaz na mfcmifc80.dll.
CWinFormsView
zpracovává několik běžných oznámení zobrazení MFC jejich předáním do spravovaného uživatelského ovládacího prvku. Tato oznámení zahrnují metody OnInitialUpdate, OnUpdate a OnActivateView .
V tomto tématu se předpokládá, že jste už dokončili postup: Vytvoření uživatelského ovládacího prvku a hostitele v dialogovém okně a postupy: Vytvoření uživatelského ovládacího prvku a zobrazení MDI hostitele.
Vytvoření hostitelské aplikace MFC
Otevřete model Windows Forms knihovnu ovládacích prvků, kterou jste vytvořili v části Postupy: Vytvoření uživatelského ovládacího prvku a hostitele v dialogovém okně.
Přidejte odkaz na mfcmifc80.dll, který můžete provést tak, že v Průzkumník řešení kliknete pravým tlačítkem na uzel projektu, vyberete Přidat, Odkaz a pak přejdete na Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Otevřete UserControl1.Designer.cs a přidejte následující příkaz using:
using Microsoft.VisualC.MFC;
V UserControl1.Designer.cs také změňte tento řádek:
partial class UserControl1
měli změnit na:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Přidejte ho jako první řádek definice třídy pro
UserControl1
:private ICommandSource m_CmdSrc;
Přidejte následující definice
UserControl1
metody (v dalším kroku vytvoříme ID ovládacího prvku MFC):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."); }
Otevřete aplikaci MFC, kterou jste vytvořili v části Postupy: Vytvoření uživatelského ovládacího prvku a zobrazení MDI hostitele.
Přidejte možnost nabídky, která vyvolá
singleMenuHandler
.Přejděte do zobrazení zdrojů (Ctrl+Shift+E), rozbalte složku Nabídky a poklikejte na IDR_MFC02TYPE. Zobrazí se editor nabídek.
V dolní části nabídky Zobrazit přidejte možnost nabídky. Všimněte si ID možnosti nabídky v okně Vlastnosti . Uložte soubor.
V Průzkumník řešení otevřete soubor Resource.h, zkopírujte hodnotu ID pro právě přidanou možnost nabídky a vložte tuto hodnotu jako první parametr do
m_CmdSrc.AddCommandHandler
volání v metodě projektuInitialize
C# (v případě potřeby nahraďte32771
).Sestavte a spusťte projekt.
V nabídce Sestavení klikněte na Sestavit řešení.
V nabídce Ladění klepněte na tlačítko Start bez ladění.
Vyberte možnost nabídky, kterou jste přidali. Všimněte si, že metoda v .dll je volána.
Viz také
Hostitelské poskytování uživatelského ovládacího prvku Windows Forms jako zobrazení MFC
ICommandSource – rozhraní
ICommandTarget – rozhraní