Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
CWinFormsView roteia comandos e mensagens de interface do usuário de comando de atualização para o controle de usuário para permitir que ele manipule 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 origem do comando no m_CmdSrc
, conforme mostrado no exemplo a seguir. Para usar ICommandTarget
, você deve adicionar uma referência a mfcmifc80.dll.
CWinFormsView
lida com várias das notificações de exibição MFC comuns encaminhando-as para o controle de usuário gerenciado. Essas notificações incluem os métodos OnInitialUpdate, OnUpdate e OnActivateView .
Este tópico pressupõe que você tenha concluído anteriormente Como: Criar o controle de usuário e host em uma caixa de diálogo e Como: Criar o controle de usuário e exibição MDI do host.
Para criar o aplicativo host MFC
Abra a Biblioteca de Controle do Windows Forms que você criou em Como criar o controle de usuário e o host em uma caixa de diálogo.
Adicione uma referência ao mfcmifc80.dll, o que você pode fazer clicando com o botão direito do mouse no nó do projeto no Gerenciador de Soluções, selecionando Adicionar, Referência e navegando até Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Abra UserControl1.Designer.cs e adicione a instrução "using" seguinte:
using Microsoft.VisualC.MFC;
Além disso, em UserControl1.Designer.cs, altere esta linha:
partial class UserControl1
para o seguinte:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Adicione esta como a primeira linha da definição de classe para
UserControl1
:private ICommandSource m_CmdSrc;
Adicione as seguintes definições de método a
UserControl1
(criaremos a ID 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 MFC que você criou em Como: Criar o controle de usuário e Host MDI View.
Adicione uma opção de menu que invocará
singleMenuHandler
.Vá para Modo de Exibição de Recursos (Ctrl+Shift+E), expanda a pasta Menu e clique duas vezes em IDR_MFC02TYPE. Isso exibe o editor de menu.
Adicione uma opção de menu na parte inferior do menu Exibir . Observe o ID da opção de menu na janela Propriedades . Salve o arquivo.
No Gerenciador de Soluções, abra o arquivo Resource.h, copie o valor de ID para a opção de menu que você acabou de adicionar e cole esse valor como o primeiro parâmetro para a
m_CmdSrc.AddCommandHandler
chamada no método doInitialize
projeto C# (substituindo32771
se necessário).Crie e execute o projeto.
No menu Build, clique em Build Solution.
No menu Depurar , clique em Iniciar sem depuração.
Selecione a opção de menu que você adicionou. Observe que o método no .dll é chamado.
Ver também
Hospedando um controlo de utilizador do Windows Forms como uma vista MFC
ICommandSource Interface
ICommandTarget Interface