MFC中如何在模态对话框弹出后自动运行某个函数

RTDoModal()创建模态对话框后,发现对话框不结束DoModal不返回。但是我想在对话框弹出后就立即运行某个函数(必须在出现对话框后运行)。请问该怎么办?谢谢了!不... RT
DoModal()创建模态对话框后,发现对话框不结束DoModal不返回。但是我想在对话框弹出后就立即运行某个函数(必须在出现对话框后运行)。请问该怎么办?
谢谢了!
不好意思。。。可能必须用模态对话框。。。
展开
 我来答
Idealsoft
推荐于2016-10-24 · TA获得超过639个赞
知道小有建树答主
回答量:461
采纳率:0%
帮助的人:288万
展开全部
那你必须将这个函数的指针传递到dlg中去,不过还有一个方法就是,你也可以不用DoModal来创建对话框,而是这样:
CXxxDlg* pDlg = new CXxxDlg;
pDlg->Create(IDD_XXX, this);
pDlg->ShowWindow(SW_SHOW);

补充1:
假如你有一个类CDo,他包含了你要实现运行的方法,那么设法获得它的指针pDo。然后这样:
CXxxDlg dlg(pDo); //修改CXxxDlg的构造函数将pDo传入dlg中。
…… //在对话框初始化的时候运行你的函数。
dlg.DoModal();
这样就可以了。
lgao622
推荐于2018-04-07 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6549
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
  1. 可以定义一个函数指针;假设要运行的函数原形是 void fun(); 类名为 Test

    typedef void (Test::*pFuncPointer)();

  2. 在模态对话框中定义一个 pFuncPointer m_fun;成员变量,在构造函数中加一个pFuncPointer  fun 的参数;并在实现中将这个参数传递给 m_fun = fun;

  3. 可以在模态对话框的OnInitDialog添加 m_fun()。

  4. 在创建模态对话框时如下即可:

    xxxDlg dlg(fun);

    dlg.DoModel();

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2008-07-31 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
一般这种情况都用非模态,如果非要用模态,就用idealsoft所说的,在dlg中设一个变量,来保存函数指针(或者如果你想调用某个类的实例的方法,就保存实例的指针)

PS:虽然我经常这样干,但这确实是严重破坏C++程序美学的行为.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
eire1224
2008-07-30 · TA获得超过407个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:289万
展开全部
模态对话框在不返回的情况下无法执行下面的语句,所以如果lz不需要用到模态对话框可以使用Ideasoft的方法,如果坚持要用模态对话框,可以在对话框类重载OnCreate函数完成有关的功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式