MFC 有两个对话框A、B,A中有按钮C,要实现功能:单击C,弹出B并关闭A
作者&投稿:郅阮 (若有异议请与网页底部的电邮联系)
多次Create造成的,第二次以后直接showwindow就可以了
你在A对话框上直接对B对话框的控件进行操作肯定有问题,你需要获取B对话框的句柄,用它对其控件进行操作
这一句话要移动位置:CB* pNewB;放在class Cexample的外面,设置程全局变量……
而
if(!pNewB) { // 当B没有打开时
pNewB = new CB();
// 这里要将IDD_DIALOG_B改为B对话框的ID号
pNewB->Create(IDD_DIALOG_B);
// 这里根据情况修改SW_RESTORE,比如改成可以显示后就最大化之类的
pNewB->ShowWindow(SW_RESTORE);
}
CDialog::OnOK();
代替原来的代码放到Cexample::OnBTNC()里……
---------------------------
void Cexample::OnBTNC()
{
// 使用非模式调用对话框
CB* pNewB;
pNewB = new CB();
// 这里要将IDD_DIALOG_B改为B对话框的ID号
pNewB->Create(IDD_DIALOG_B);
// 这里根据情况修改SW_RESTORE,比如改成可以显示后就最大化之类的
pNewB->ShowWindow(SW_RESTORE);
CDialog::OnOK();
}
关闭的时候需要释放pNewB的内存……
也就是说,尽量把pNewB放为全局变量……
然后创建的时候:
if(!pNewB) { // 当B没有打开时
pNewB = new CB();
// 这里要将IDD_DIALOG_B改为B对话框的ID号
pNewB->Create(IDD_DIALOG_B);
// 这里根据情况修改SW_RESTORE,比如改成可以显示后就最大化之类的
pNewB->ShowWindow(SW_RESTORE);
}
关闭B的时候,在WM_CLOSE消息里使用:
delete pNewB;
pNewB = NULL;
模态对话框
养柿赛福: 这一句话要移动位置:CB* pNewB; 放在class Cexample的外面,设置程全局变量…… 而 if(!pNewB) { // 当B没有打开时 pNewB = new CB(); // 这里要将IDD_DIALOG_B改为B对话框的ID号 pNewB->Create(IDD_DIALOG_B); // 这里根据...
莲花县19537795283: MFC中基于单文档的应用程序,我新建了两个对话框A和B,怎样实现对话框中的数据相互传递? - ?
养柿赛福: 1·A对话框添加一个public的成员变量 float m_ok;2·A对话框OnOK函数添加如下代码 UpdateData(TRUE); m_ok = m_fRadio;3·B对话框调用A的(按钮)响应函数添加如下代码 if(DlgA.DoModal()==IDOK)//替换你原来的DoModal { m_fRadio1 = DlgA.m_ok; UpdateData(FALSE); }
莲花县19537795283: MFC中建立两个对话框,在其中一个中如何调用另一个类的函数? - ?
养柿赛福: MFC中建立两个对话框,想要在第一个中如何调用第二个类的函数就需要把第二个类在第一个类中实例化作为第一个类中的一个成员变量,这样第一个类就能通过第二个类的这个实例,调用第二个类的函数.假设两个类分别为A、B,则关系就...
莲花县19537795283: MFC界面跳转问题 - ?
养柿赛福: 举个列子,有两个对话框类A,B;点击A上的一个button,然后跳转到B上,且A关闭. 代码:A::OnOK(); B b; b.DoModal();
莲花县19537795283: MFC,想在一个对话框里面调用另一个对话的参数,怎么办呀? - ?
养柿赛福: 当然不可以,你没法获得对方的成员;你要获得它运行的实例对象;2个进程的通信,麻烦点;但是你可以通过Hwnd h=Findwindow(“ ”,窗口名字);来获取句柄 CWnd*w=Cwnd::FromHandler(h); 然后就可以做了 例如第2个对话框的成员为 int a=0; 给他够找一个方法 int getA(){return a;} void setA(int a){this->a=a;} 那么在对话框1对用 int a=w->getA();a=a+1; w->setA(a);
莲花县19537795283: 在MFC中创立了两个对话框A和B,每个对话框各有一个按钮,怎么实现按下其中的一个按钮 使另一个按钮变灰?
养柿赛福: 当一个按钮按下时,获取另一个按钮并将其置灰: HWND hWnd1 = GetDlgItem(g_hCapturePanel, IDC_CHECK1); // 获取按钮 ::EnableWindow(hWnd1, FALSE);//将获取的按钮置灰(如果这个参数为TRUE,则窗口可用.如果参数为FALSE,则窗口将被禁止即置灰)
莲花县19537795283: MFC对话框A中弹出一个子对话框B(模态),如何在A中关闭B对话框? - ?
养柿赛福: 如果B是模态,根本就点不到A上面,怎么关闭啊.根本就没法操作..
莲花县19537795283: mfc 如何调用其它对话框的控件变量? - ?
养柿赛福: 具体方法: 1、在需要操作另一个类的类头文件中的public 中定义被操作类的类指针变量: public: ProjectSelectDlg* pProSelcDlg; .2、在被操作类中某个位置,这里以要显示另一个窗口类为例: void ProjectSelectDlg::OnButtonAddPro() { ...
莲花县19537795283: MFC 关闭对话框 - ?
养柿赛福: 假设有A、B两个对话框 可以通过在A获取B的窗口句柄(HWND),再通过窗口句柄来控制B窗口;如 HWND hA = A的窗口句柄,则可以用hA来完全控制B窗口的一切了 个人拙见,仅供参考,希望能帮到您
莲花县19537795283: MFC两类互为成员的访问问题?
养柿赛福: 让B对话框成为A的子窗口,关闭前b用sendmessage 投递一个windows消息告诉A,A调用B对话的一个函数return回这个输入的数据显示在A对话框里,点击创建B后再把数据作为参数传给B,