
1
只需要通过调用 CWnd
w
=
GetDlgItem
(IDD_XXXX);
即可获取
CWnd
的指针;
2
再根据控件类型通过指针
强制转换
就行,比如
CButton
btn
=
(CButton)w;
GetDlgItemText((Cnum1)IDC_EDIT1,dis);
这个不是一个合理的逻辑,不要这样考虑了。
GetDlgItemText是对话框函数,在这里这个函数相当于:
Clandlg::GetDlgItemText()
这样不可能对主对话框产生影响。
传递方法有二:
获取主对话框有效指针(注意不是类名就可以)并且不能是模态子对话框
或者domodal之后,通过两个对话框类的成员变量之间传递,在主对话框赋值和更新控件
我觉得应该是这样的:你的对话框一直存在,但是状态可能是隐藏的,那么在创建这个对话框的时候,你会保存这个对话框的指针。至于保存在哪里,是由你决定的。然后要在其他类中获取到这个指针的话,那么你就可以将这个类和保存对话框指针的类或者地方建立一个关系,然后就可以获取到了。
我觉得应该是这样的:你的对话框一直存在,但是状态可能是隐藏的,那么在创建这个对话框的时候,你会保存这个对话框的指针。至于保存在哪里,是由你决定的。然后要在其他类中获取到这个指针的话,那么你就可以将这个类和保存对话框指针的类或者地方建立一个关系,然后就可以获取到了。
你可以通过传递,例如:
你的主对话框是CMyDlg,子对话框是CKidDlg,
你要是想在CKidDlg中获得CMyDlg的指针,先在CKidDlg中声明CMyDlgdlg,然后自己写函数
void SetDlg(CMyDlgp){dlg=p;},
接着在CMyDlg中声明CKidDlg对象kid后,在初始化时调用kidSetDlg(this);这样你就可以在CKidDlg中 *** 作时方便地调用dlg,也就是主对话框指针了
在CWnd的派生类中可以调用GetDescendantWindow(ID值, FALSE )这个函数,返回对话框的指针,第一个参数是对话框的ID,第二个参数为真时只有永久性的窗口才可以返回,为假时可以返回一个临时窗口。
用GetParent()获取父窗口指针。
设你主对话框类为CMyDialog。
CMyDialog pDlg = (CMyDialog )GetParent()->GetParent()。
pDlg->函数或变量。
第一个GetParent()获取的是tab control指针,再通过tab control获取主对话框指针。
然后就可以对对话框 *** 作在子窗体中调用父窗体中函数。
比如父窗体是form1,子窗体form2
子窗体中:
From faFrom;
public Form2(From f)
{ faForm = f;
InitializeComponent(); }
父窗体
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
fgetForm(this);
fshow();
}
之后就可以通过对faForm *** 作,从而控制父窗体。
以上就是关于请问VC中如何获取对话框类中某个控件的指针全部的内容,包括:请问VC中如何获取对话框类中某个控件的指针、MFC子对话框传送数据失败了,那个高手给我看一看、如何获取无标题对话框的句柄或者指针等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)