MFC 如何对话框1控制对话框2的控件

比如对话框1的按钮我单击后希望对话框2的某个按钮直接响应它的单击事件怎么操作... 比如对话框1的按钮 我单击后希望对话框2的某个按钮直接响应它的单击事件 怎么操作 展开
 我来答
Suzics
2013-08-20 · TA获得超过225个赞
知道小有建树答主
回答量:86
采纳率:100%
帮助的人:52.2万
展开全部
对话框1类设为DlgA,实例dlgA,有一个按钮响应函数BtnClick;对话框2类设为DlgB,实例dlgB,有一个按钮响应函数BtnClick。在DlgA的BtnClick函数中调用dlgB->BtnClick调用就可以了。问题很可能出在dlgA不知道dlgB的实例的存在,只要设计的时候,生成dlgB的时候,让dlgA有一个指针知道dlgB的生成就可以了。不过,你若是想对不同应用程序的对话框之间实现此类效果(黑客、木马程序之类),你需要了解有关Windows Hook以及Winform的窗口句柄捕获等知识。
追问
那怎么才能让A知道B生成了 因为我是两个独立的对话框 好像没有代码上创建实例的地方。。
求教。。
追答
一般情况下程序员使用对话框,会用比较偷懒的方式,也就是在需要的时候才生成。也就是类似于:
//需要显示A时
DlgA* dlgA = new DlgA();
dlgA->doModal();
//....
//需要显示B时
DlgB* dlgB = new DlgB();
dlgB->doModal();
大概是这样做吧!而且两段代码还不在一个地方。
但是其实很好改!只要把局部变量dlgA,dlgB提升为同一个生存域级别(如果不了解这个概念,你可以都定义为全局变量就好了):
DlgA* dlgA, dlgB;
然后生成的地方分别使用这两个指针变量生成对象空间即可。
这样,dlgA不论什么时候,都可以直接通过dlgB访问到另一个对话框;
只是调用dlgB->BtnClick之前,先判断一下指针是否为空,对话框B是否显示了就好。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式