hur.cn - 华软网

 热门搜索

如何MFC 基于对话的程序界面显示完全后立即执行某一个函数

  作者:未知    来源:网络    更新时间:2011/6/13
我是想说等这个程序界面完全显示出来以后, 
立即去运行一个函数,然后还有一个进度条显示执行的。 
 
如果把我要执行的函数放在OnInitDialog()中的话, 
对话框还没有显示出来函数就运行了。 

请问有什么方法来做呢?谢谢大家!
---华软 网友回答---
BOOL CTstDisableDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
static BOOL boFirst=TRUE;
if (boFirstDrawn)
{
你的函数();
boFirstDrawn = FALSE;
}


return CDialog::PreTranslateMessage(pMsg);
}
---华软网友回复---
在onshowwindow里面执行一次。

---华软网友回复---
boFirstDrawn 写错了,是boFirst;
只有泵出来的消息才经过PreTranslateMessage,所以当第一次调用PreTranslateMessage时,程序应该已经初始化完毕了.
---华软网友回复---
引用楼主 muyufeng 的回复:
我是想说等这个程序界面完全显示出来以后, 
立即去运行一个函数,然后还有一个进度条显示执行的。 
 
如果把我要执行的函数放在OnInitDialog()中的话, 
对话框还没有显示出来函数就运行了。 

请问有什么方法来做呢?谢谢大家!

OnInitDialog中PostMessage一个自定义消息,在自定义消息的响应函数中加入你的代码即可
---华软网友回复---
4楼的老师,能给个代码吗,我是初学,很弱啊。
---华软网友回复---
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
//  dismissed with OK
}

 对话框在这里就显示出来了,如果要做什么事情,加在TODO的位置就可以了。可以收索一下,定位到这个代码那里。

如果是自定了的窗体要显示,在DoModal或者ShowWindow()执行成功后,窗体就出来了。
---华软网友回复---
找到解决办法了,谢谢大家了
http://wmnmtm.blog.163.com/blog/static/3824571420097510938616/      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。