注意:1.所有与窗体、控件的操作的函数都只能在该窗体的相关函数中进行操作,
2.一个窗体类对象可以对应多个实例的对话框,如果用对话框对象通过对话框函数操纵对话框,将会出现异常,为此,可在对 话框的关联类中定义接口函数,来调用对话框函数完成相应功能。
3.产生对话框的必须在堆上进行,即用new关键字动态开辟,否则在调用类中的接口时,会出现错误。
4.MFC采用类和对话框相分离的方式,在尽可能多的情况下不要隐藏运行。
下面举几个例子:
(1)两个对话框相互交换数据:
主要代码如下:
void CDoModalDlg::OnOK() //主对话框中的OK按钮
{
// TODO: Add extra validation here
Child=new ChildDlg(); //注意这一句,Chlid是另一个对话框的指针
/*Child->Create(IDD_Child,this);
Child->ShowWindow(SW_SHOW);
CString content;
AfxMessageBox("OK");*/
Child->SetDoDlg(this);
Child->DoModal();
CString caption;
Child->GetPath(caption);
GetDlgItem(IDC_EDIT1)->SetWindowText(caption);
//CDialog::OnOK(); }
void ChildDlg::OnOK() //子对话框的OK按钮
{
// TODO: Add extra validation here
//GetDlgItem(IDC_EDIT1)->GetWindowText(m_path);
m_doModalDlg->GetDlgItem(IDD_Parent)->GetDlgItem(IDC_EDIT1)->SetWindowText("HelloWorld!"); //这一句错误
CDialog::OnOK();
}
//下面的东西是转载别人的
(1)不用DoModal,自己创建窗口,隐藏运行,模拟DoModal
第二种方法是仿单文档的运行过程,步骤如下: