请教关于父子窗口数据传递和消息通信方面的问题!

linjiework 2001-12-11 12:38:12
有一个父窗口,在不同时间需要弹出不同的子窗口,但同一时间内只弹出一个子窗口。每个子窗口都派生自对话框dialog类。可否设置一个变量就可以代表这些子窗口?
我的意思是设置一个指针变量(比如void *),在生成子窗口的时候,让这个指针指向子窗口,这样父窗口给子窗口传递数据或者发送消息的时候,只要对这个指针操作就可以了,不需要判断当前是哪个子窗口。
也就是说如何定义一个通用的子窗口指针,让它可以指向任何一个子窗口。
还有就是如何使用这个指针?
不知道我说明白没有,希望各位帮忙解答!
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
linjiework 2001-12-13
  • 打赏
  • 举报
回复
CDialog的指针可以调用我的对话框里的函数吗?
CDialog是对话框的父类呀。我对这样操作不太了解,能否指点一下?


linjiework 2001-12-13
  • 打赏
  • 举报
回复
十分感谢各位的答复!
xiaoxiaohan 2001-12-13
  • 打赏
  • 举报
回复
可以建一个CDialg *dlg = NULL;的全局变量。
每次确定调用具体窗口的地方可以对其进行赋值例:
dlg = pChildDlg1;
dlg = pChildDlg2;
当父窗口需要打开时,调用dlg->DoModal();
whoo 2001-12-13
  • 打赏
  • 举报
回复
接上:
声明指针为 CMyDialog* pSubWnd;
调用为:pSubWnd->MyNotify(...);
whoo 2001-12-13
  • 打赏
  • 举报
回复
首先:
Class CMyDialog : public CDialg
{
virtual void MyNotify(...) = 0;
}

然后:将所有需要探出的子窗口类的父类由CDialog改成CMyDialog;实现MyNotify(...)就行了。
ypos 2001-12-13
  • 打赏
  • 举报
回复
linjiework(霖杰)不是说了吗,用强制转换指针。
zf925 2001-12-12
  • 打赏
  • 举报
回复
在父窗口中定义一个CDialog的指针,弹谁,就让他指谁,不就行了吗?
linjiework 2001-12-12
  • 打赏
  • 举报
回复
通过 -> 的方式直接调用子窗口的变量。如:(CChildDlg *)p->childData
或者可以通过 SendMessage( (CChildDlg *)p, WM_MYMESSAGE, ... );
ypos 2001-12-11
  • 打赏
  • 举报
回复
说清楚你是准备怎样将数据传给子窗口?
XDZXG 2001-12-11
  • 打赏
  • 举报
回复
既然你不是同时显示这些子窗口,那就定义一个全局的HWND指针,在各个子窗口初始化时讲其句柄付给这个全局指针就可以了吗!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧