请教关于父子窗口数据传递和消息通信方面的问题!
有一个父窗口,在不同时间需要弹出不同的子窗口,但同一时间内只弹出一个子窗口。每个子窗口都派生自对话框dialog类。可否设置一个变量就可以代表这些子窗口?
我的意思是设置一个指针变量(比如void *),在生成子窗口的时候,让这个指针指向子窗口,这样父窗口给子窗口传递数据或者发送消息的时候,只要对这个指针操作就可以了,不需要判断当前是哪个子窗口。
也就是说如何定义一个通用的子窗口指针,让它可以指向任何一个子窗口。
还有就是如何使用这个指针?
不知道我说明白没有,希望各位帮忙解答!
问题点数:20、回复次数:10Top
1 楼XDZXG()回复于 2001-12-11 13:53:16 得分 3
既然你不是同时显示这些子窗口,那就定义一个全局的HWND指针,在各个子窗口初始化时讲其句柄付给这个全局指针就可以了吗!Top
2 楼ypos(叶开)回复于 2001-12-11 14:58:13 得分 0
说清楚你是准备怎样将数据传给子窗口?Top
3 楼linjiework(霖杰)回复于 2001-12-12 17:49:05 得分 0
通过 -> 的方式直接调用子窗口的变量。如:(CChildDlg *)p->childData
或者可以通过 SendMessage( (CChildDlg *)p, WM_MYMESSAGE, ... );
Top
4 楼zf925(天下哪来那么多高手)回复于 2001-12-12 17:56:40 得分 3
在父窗口中定义一个CDialog的指针,弹谁,就让他指谁,不就行了吗?Top
5 楼linjiework(霖杰)回复于 2001-12-13 12:37:27 得分 0
CDialog的指针可以调用我的对话框里的函数吗?
CDialog是对话框的父类呀。我对这样操作不太了解,能否指点一下?
Top
6 楼ypos(叶开)回复于 2001-12-13 14:05:05 得分 3
linjiework(霖杰)不是说了吗,用强制转换指针。Top
7 楼whoo(谁)回复于 2001-12-13 14:28:40 得分 6
首先:
Class CMyDialog : public CDialg
{
virtual void MyNotify(...) = 0;
}
然后:将所有需要探出的子窗口类的父类由CDialog改成CMyDialog;实现MyNotify(...)就行了。Top
8 楼whoo(谁)回复于 2001-12-13 14:30:04 得分 0
接上:
声明指针为 CMyDialog* pSubWnd;
调用为:pSubWnd->MyNotify(...);Top
9 楼xiaoxiaohan(萧晓寒)回复于 2001-12-13 14:52:53 得分 5
可以建一个CDialg *dlg = NULL;的全局变量。
每次确定调用具体窗口的地方可以对其进行赋值例:
dlg = pChildDlg1;
dlg = pChildDlg2;
当父窗口需要打开时,调用dlg->DoModal();
Top
10 楼linjiework(霖杰)回复于 2001-12-13 17:42:33 得分 0
十分感谢各位的答复!
Top




