如何在一个A对话框类中中调用B对话框类控件,且A类和B类豪不相关?例如:一个对话框类CMailDlg,另一个对话框类CMyDlg,程序运行后,我如何在CMyDlg的方法中调用对话框类CMailDlg控件以及使用控件ID,望大大解惑并劳大大说的详细点,小弟在此谢过
解决方案 »
- 关于内存泄口
- PDA数据库采用哪个比较好?采用C++调用ADOCE的方式来访问Pocket Access数据库的方式微软操作系统不支持~
- 类似BitComet的预览功能是如何实现的
- 寻找无薪实习的机会
- 请问atoi怎么判断是否越界啊?
- 如何根据文件的后缀名获得文件相应的图标?
- 急 "unexpected end of file while looking for precompiled header directive"编译错误
- wj59还在线吗?你写的代码只能得到树型控件的父节点的信息
- 求助老是这个错误“gethostbyname” : 不能将参数 1 从“CString”转换为“const char *”
- 怎样在线程函数中得到子窗口的指针?
- 如何在几个同一个对象那?
- 招VC高手
==晕。A对话框都用到B对话框的控件了,怎么说A类和B类毫不相关呢???
当两个对话框都处于运行状态时,你必须先获得另一个对话框当前的运行对象,然后才可以获取它的控件的信息。至于怎么获取,要看你这两个对话框分别在哪里被调用启动才能判断。
把CMydlg的指针放到一个CMailDlg可以取的地方
全局变量或CApp中
再用FindWindowEx得到另一对放框上的控件句柄就可以通过发送消息的方法来控制另一对话框上的控件的操作了这是MFC中最普遍的做法了,也是最简单的做法
//注:控件标识(参数3)是固定的,你必须通过SPY++工具来查到,一般OK是固定的:0x2::SendMessage(hWnd,WM_COMMAND,0x2,0);
//如果有你要得到的控件在子窗口中,就再用::FindWindowEx 函数得到另一窗口上的子窗口句柄下例为如何得到编辑框控件并设置编辑框内容:
//通过该窗口句柄和控件标识,使用GetDlgItem函数来得到控件的句柄HWND hbtnWnd = ::GetDlgItem(hWnd,0x3FC); //得到编辑框控件的句柄然后就可以通这个窗口句柄和控件句柄向该控件发送消息来控制该控件了::SendMessage(hbtnWnd,WM_SETTEXT,0,(LPARAM)str.GetBuffer(str.GetLength())); //更改文本