Como: fazer a ligação de dados DDX/DDV com Windows Forms
DDX_ManagedControlchamadas CWinFormsControl::CreateManagedControl criar um controle correspondente a ID de controle de recurso.Se você usar DDX_ManagedControl para um CWinFormsControl controle (no gerado pelo Assistente de código), você não deve chamar CreateManagedControl explicitamente para o mesmo controle.
Chamar DDX_ManagedControl em CWnd::DoDataExchange para criar controles de recurso IDs.Para troca de dados, não precisa usar as funções DDX/DDV com controles Windows Forms.Em vez disso, você pode colocar o código para acessar as propriedades do controle no gerenciado de DoDataExchange método de sua classe de diálogo (ou exibição), como no exemplo a seguir.
O exemplo a seguir mostra como ligar uma seqüência de C++ nativa para um.NET user control.
Exemplo
A seguir está um exemplo de ligação de dados DDX/DDV de uma cadeia de caracteres MFC m_str com definido pelo usuário NameText propriedade de um.NET user control.
O controle é criado quando CDialog::OnInitDialog chamadas CMyDlg::DoDataExchange pela primeira vez, portanto, qualquer código que referencia m_UserControl deve vir após a DDX_ManagedControl de chamada.
Você pode implementar esse código no aplicativo MFC01 criado em Como: criar o controle de usuário e o Host em uma caixa de diálogo.
Coloque o seguinte código na declaração de CMFC01Dlg:
class CMFC01Dlg : public CDialog
{
CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_MyControl;
CString m_str;
};
Coloque o seguinte código na implementação de CMFC01Dlg:
void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_ManagedControl(pDX, IDC_CTRL1, m_MyControl);
if (pDX->m_bSaveAndValidate) {
m_str = m_MyControl->textBox1->Text;
} else
{
m_MyControl->textBox1->Text = gcnew System::String(m_str);
}
}
Agora adicionaremos o método de manipulador para um clique no botão OK.Clique o Exibição de recurso guia.No modo de exibição de recursos, clique duas vezes em IDD_MFC01_DIALOG.O recurso de caixa de diálogo aparece no Editor de recursos.Clique duas vezes no botão OK..
Defina o manipulador da seguinte maneira.
void CMFC01Dlg::OnBnClickedOk()
{
AfxMessageBox(CString(m_MyControl.GetControl()->textBox1->Text));
OnOK();
}
E adicione a seguinte linha para a implementação de CMFC01Dlg::OnInitDialog() de BOOL.
m_MyControl.GetControl()->textBox1->Text = "hello";
Agora já é possível compilar e executar o aplicativo.Observe que qualquer texto na caixa de texto será exibido em uma caixa de mensagem pop-up quando o aplicativo fecha.