MFC中如何在模态对话框弹出后自动运行某个函数
RTDoModal()创建模态对话框后,发现对话框不结束DoModal不返回。但是我想在对话框弹出后就立即运行某个函数(必须在出现对话框后运行)。请问该怎么办?谢谢了!不...
RT
DoModal()创建模态对话框后,发现对话框不结束DoModal不返回。但是我想在对话框弹出后就立即运行某个函数(必须在出现对话框后运行)。请问该怎么办?
谢谢了!
不好意思。。。可能必须用模态对话框。。。 展开
DoModal()创建模态对话框后,发现对话框不结束DoModal不返回。但是我想在对话框弹出后就立即运行某个函数(必须在出现对话框后运行)。请问该怎么办?
谢谢了!
不好意思。。。可能必须用模态对话框。。。 展开
4个回答
展开全部
那你必须将这个函数的指针传递到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();
这样就可以了。
CXxxDlg* pDlg = new CXxxDlg;
pDlg->Create(IDD_XXX, this);
pDlg->ShowWindow(SW_SHOW);
补充1:
假如你有一个类CDo,他包含了你要实现运行的方法,那么设法获得它的指针pDo。然后这样:
CXxxDlg dlg(pDo); //修改CXxxDlg的构造函数将pDo传入dlg中。
…… //在对话框初始化的时候运行你的函数。
dlg.DoModal();
这样就可以了。
推荐于2018-04-07 · 知道合伙人软件行家
关注
展开全部
可以定义一个函数指针;假设要运行的函数原形是 void fun(); 类名为 Test
typedef void (Test::*pFuncPointer)();
在模态对话框中定义一个 pFuncPointer m_fun;成员变量,在构造函数中加一个pFuncPointer fun 的参数;并在实现中将这个参数传递给 m_fun = fun;
可以在模态对话框的OnInitDialog添加 m_fun()。
在创建模态对话框时如下即可:
xxxDlg dlg(fun);
dlg.DoModel();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般这种情况都用非模态,如果非要用模态,就用idealsoft所说的,在dlg中设一个变量,来保存函数指针(或者如果你想调用某个类的实例的方法,就保存实例的指针)
PS:虽然我经常这样干,但这确实是严重破坏C++程序美学的行为.
PS:虽然我经常这样干,但这确实是严重破坏C++程序美学的行为.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
模态对话框在不返回的情况下无法执行下面的语句,所以如果lz不需要用到模态对话框可以使用Ideasoft的方法,如果坚持要用模态对话框,可以在对话框类重载OnCreate函数完成有关的功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询