MFC 在一个对话框的控件操作另一个对话框的控件

如题所述

想怎么操作?如果你可以获得另一个对话框指针或对象,实现起来应该很容易。追问

GetDlgItem(IDD_MYMFC_DIALOG)->GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);
我写成这样,编译正确,运行起来会出错,其中第一个为对话框地址,第二个为控件地址

追答

GetDlgItem(IDD_MYMFC_DIALOG)获得的是本对话框的对象指针,你在创建另一个对话框的时候你可以保存它的指针,然后用对话框指针—>GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);即可。

追问

你好,请问怎么保存对话框的指针呀,我真的很白,谢谢啦

追答

如果你的对话框类是CMydlg,假设你用到对话框的时候可以这样,首先定义一个全局作用域的指针 CMydlg* pMydlg;然后在你使用对话框的地方 pMydlg=new CMydlg;这样你就把对话框指针存到pMydlg了;

追问

全局作用域的指针怎么定义呀,是在什么地方的,是不是CMydlg的申明里面,还有,是不是在我使用的地方pMydlg=new CMydlg;pMydlg->GetDlgItem(IDC_BUTTON3)->EnableWindow(TRUE);,就可以用了呢,再次感谢

追答

是的。在CMydlg类里声明就可以(目的是在其他地方能用)。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-08
GetDlgItem不能获取本对话框以外的对象指针
第2个回答  2012-05-08
获取另一个对话框的指针 网上有方法

如何在MFC中把一个对话框的控件复制到另一个对话框?
直接ctrl+a全选复制粘贴。MFC中从一个dialog复制控件到另一个dialog只需要选中,复制,粘贴就可以了,剩下的就是添加调整布局和修改消息相应。同一个dialog的控件复制要注意ID和消息相应函数的修改,否则容易异常。

MFC中一个对话框上编辑框怎么和另一个对话框关联
你一个对话框肯定是为了是想实现某个功能而创建。当你用一个对话框调用另一个对话框的功能函数时,要注意类的封装性问题。简单来说,就是当你在对话框A内要使用对话框B的一部分功能(假如说想调用对话框B的成员函数C),那么你必须先在对话框A的cpp函数中包含对话框B的头文件,还必须注意C里面所操...

MFC中tab控件下子对话框切换问题
问题出在CDialog的缺省消息处理函数没有把切换按键的消息转发给父窗口,因此,在子对话框活动期间,实际上主窗口是得不到按键消息的。解决方案是你不要基于CDialog做tab的子窗口,应该使用面板类。如果你一定想用CDialog,那么你需要重载CDialog的键盘处理消息函数,让tab切换键的消息向父窗口转发由父窗口...

求解:MFC里在一个对话框里点击某个BUTTON,显示另外一个对话框。
你第一种方法叫“非模态”对话框调用,这种方法你的使用有问题,最好使用指针调用,确保子对话框窗口始终有效。修改后的是模态对话框,这个在调用代码上没有问题。对话框不出现,应该是子对话框控件有问题或者初始化代码有问题,检查子对话框使用的控件和InitDialog里面的代码。另外,可以用一个完全空的(...

如何实现MFC一个对话框的编辑框输入内容,另一个对话框的编辑框输出
void CQq1Dlg::OnButton1(){ \/\/ TODO: Add your control notification handler code here UpdateData(TRUE);CString strMsg;GetDlgItem(IDC_EDIT1)->GetWindowText(strMsg);HWND hWnd = ::FindWindow(NULL,"dialogText");\/\/第二个参数为另一个对话框的标题 CDialog1* dlg = (CDialog1*)CWnd::...

MFC 如何在一个对话框中修改另一个对话框里按钮的标题?
然后给在grade的虚函数OnInitDialog里面判断 if(m_btTitle)SetDlgItemTextA(IDC_BUTTON1, m_btTitle);使用时 grade dlg("hh", this);dlg.DoModal();如果不修改文本可以 grade dlg(NULL, this);dlg.DoModal();如果要在对话框已经弹出后再修改,那就要用自定义消息或者需要获取对话框窗口对象指针了...

在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框
1.可以调用模态的对话框 void ADlg:: Button(){ BDlg bdlg;bdlg.DoModal();} 2.调用非模态 在 Adlg.h 包含 Bdlg.h头文件 中定义 BDlg* m_pdblg;在Adlg.cpp中 在构造函数中初始化 m_pdblg = NULL;在析构函数中 if(m_pdblg != NULL){ delete m_pdblg;} 在单击按钮中 void ...

mfc中如何在一个对话框中调用另外一个对话框的函数
建立模态对话框 选择File\/New\/MFC AppWizard[exe],Project name为Test,单击OK. 选择Single document,单击Finish. 选择左侧Workspace\/ResourceView,在Dialog上单击右键,选择Insert Dialog,默认名字为IDD_DIALOG1. 双击右侧工作区中的对话框,弹出一对话框Adding a Class,默认选择Create a new class,单击OK. 在对...

mfc在通过父窗口的控件对子窗口中的控件进行操作做
你可以在父窗口中调用子窗口的头文件,然后通过在要操作的地方调用子窗口头文件,通过头文件可以看到子窗口的全部控件,然后对你要操作的控件进行修改。比如:子窗口头名为a.h,那你在父窗口的初始化中包含a.h,include "a.h",调用的时候 a newa = new a;然后通过"newa."调用子窗口的东西,给...

如何单击对话框上的空间然后弹出另一个对话框 MFC
添加另一个对话框资源:右键选Insert(插入)→选dialog(对话框)→选New(新建)ctrl+w为其建立类 假设是XXX,那么生成的类为CXXXDlg 下面给你的按钮添加BN_CLICKED函数,函数数内代码如下:CXXXDlg dlg;dlg.DoModal();

相似回答