Como adicionar roteamento de comando ao controle dos Windows Forms
CWinFormsView roteia comandos e mensagens da interface de usuário do comando de atualização para o controle de usuário para permitir a manipulação de comandos MFC (por exemplo, itens de menu de quadro e botões da barra de ferramentas).
O controle de usuário usa ICommandTarget::Initialize para armazenar uma referência ao objeto de fonte de comando em m_CmdSrc, conforme mostrado no exemplo o seguir. Para usar ICommandTarget você deve adicionar uma referência a mfcmifc80.dll.
CWinFormsView manipula várias das notificações de exibição MFC ao encaminhá-las para o controle de usuário gerenciado. Essas notificações incluem os métodos OnInitialUpdate, OnUpdate e OnActivateView da Interface IView.
Este tópico pressupõe que você completou anteriormente Como criar o controle de usuário e hospedá-lo em uma caixa de diálogo e Como criar o controle de usuário e hospedar uma exibição MDI.
Para criar o aplicativo de host do MFC
Abra a Biblioteca de Controle do Windows Forms que você criou em Como criar o controle de usuário e hospedá-lo em uma caixa de diálogo.
Adicionar uma referência a mfcmifc80.dll, o que você pode fazer clicando com o botão direito do mouse no nó de projeto em Gerenciador de Soluções, selecionando Adicionar, Referência e, em seguida, navegando até Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Abra o UserControl1.Designer.cs e adicione as seguintes instruções de uso:
using Microsoft.VisualC.MFC;
Além disso, em UserControl1.Designer.cs, altere essa linha:
partial class UserControl1
para isto:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Adicione isso como a primeira linha da definição de classe para UserControl1:
private ICommandSource m_CmdSrc;
Adicione as definições do seguinte método a UserControl1 (nós criaremos a identificação do controle MFC na próxima etapa):
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."); }
Abra o aplicativo do MFC que você criou no Como criar o controle de usuário e hospedar uma exibição MDI.
Adicionar uma opção de menu que invoca singleMenuHandler.
Vá para Modo de Exibição de Recurso (Ctrl+Shift+E), expanda a pasta Menu e clique duas vezes em IDR_MFC02TYPE. Isso exibe o editor de menu.
Adicionar uma opção de menu na parte inferior do menu de Modo de Visualização. Observe a ID da opção de menu na janela de Propriedades. Salve o arquivo.
No Gerenciador de Soluções, abra o arquivo Resource.h, copie o valor da ID para a opção de menu que você acabou de adicionar e cole esse valor como o primeiro parâmetro da chamada m_CmdSrc.AddCommandHandler no método Initialize do projeto C# (substituindo 32771, se necessário).
Criar e executar o projeto.
No menu Compilar, clique em Compilar Solução.
No menu Depurar, clique em Iniciar sem depuração.
Selecione a opção de menu que você adicionou. Observe que o método no arquivo .dll é chamado.
Consulte também
Referência
Outros recursos
Hospedando um controle de usuário dos Windows Forms como uma exibição MFC