转:MFC 基于对话的程序界面显示完全后立即执行一个函数
2013-01-13 01:54 youxin 阅读(1363) 评论(0) 编辑 收藏 举报基本上网上百度来的,和一些帖子里的讨论都是这两个方案。
1.可以在OnInitDialog最后用SetTimer
然后在onTimer里KillTimer,再执行函数
2.也可以在OnInitDialog最后用PostMessage让对话框响应一个函数去执行
但我认为,前者在时间设定上不好敲定,时间长短没有准确依据,如果CPU很忙,可能很长时界面也没显示出来呢。
后者倒是个好方法。
不过,在哪里PostMessage,也有很多说法。
OnInitDialog
OnPaint
int nResponse = dlg.DoModal();语句之后
这三处,经过我实际测试,只有第一处可行。
其它两个会不断的执行影响函数。当然,我小菜,也不知其所以然,呵呵。
还有一种说法是:
首次响应WM_PAINT:消息后就可以了
方法建一变量初始化为零(i = 0;),第一次wm_paint之后加一i++
WM_PAINT:
....;
if(i==0)
{
Func();
i++;
}
响应WM_PAINT消息
在 ::OnPaint()函数里执行你的函数,刚刚做了一个,你看看:
void CModelDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
ClickFirstLine();//你的函数
// Do not call CDialog::OnPaint() for painting messages
}
void CModelDlg::ClickFirstLine()
{
....
....
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通