如何获一个对话框资源ID的控制权

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:04:37
我定义了一个ID为IDD_DIG_MYDIG对话框和对应的类CDig,怎么才能在另外一个类中根据这个ID,调用CDig中的方法?不能使用全局变量
又或者可以有其它的途径?
先谢谢各路高手啦 (*^__^*) 嘻嘻……
再补充一下:上面的说法有误,应该是在另外一个类中给CDig类中的方法传参数。通过构造函数可以吗?

诚信回答的会加分的。

你这是个伪命题。

如果你知道对话框的ID了,那么你就是程序的编制者,就当然就知道对话框的窗口类名称等数据了,完全没有必要通过ID去获取哪个对话框的指针。

而如果是个用户他是不可能知道对话框ID的,包括对话框子控件的ID,都是不公开的。你可以通过工具得到窗口的类名称,窗口名称然后再得到句柄。(当然子控件的ID可以得到)

MSDN上说,对话框的ID是无效的,获取了不保证有效性,也就是说mfc体系内不支持通过ID获取对话框句柄的。

最好在你的类中保存一份CDig类的指针m_pMyDlg,使用的时候用这个指针比较好.
m_pMyDlg->DoSth();

==================

你的方法有参数的话调用的时候传入就可以了啊。m_pMyDlg->DoSth(1,2,3);
如果你的参数指的是CDig的属性的话你可以通过构造函数传入,也可以定义一个SetMyProperty(int iSth)之类的函数来设置。

建立CDig的一个对象,然后直接使用其方法。
void COtherDlg::Fun()
{
CDig customDlg;
customDlg.Fun1();
}