MFC 如何对话框1控制对话框2的控件
1个回答
展开全部
对话框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是否显示了就好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询