请教一个对话框初始化的问题

maoloverme1 2009-08-17 02:06:29
在一个对话框的OnInitDialog中要做两件事情
1 初始化设备
2 动态的产生一系列的控件到对话框上。

但是由于初始化设备需要较长的时间,所以现在的处理方法为
先动态的产生控件然后发送消息PostMessage(WM_INITDEVICE)来进行初始化。
原以为postMessage会马上返回,不会出现窗口绘制的延迟,但是结果确是仍然产生了延迟。请问怎样解决这个问题?
我想产生一个初始化线程应该可以解决这个问题,但不知有没有更简单的方法?
...全文
167 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以把初始化放到构造函数中
shakeyou123 2009-08-17
  • 打赏
  • 举报
回复
原以为postMessage会马上返回,不会出现窗口绘制的延迟,但是结果确是仍然产生了延迟。
postMessage是将消息放入消息队列,等消息队列里之前的消息都运行结束才会响应你刚放入的消息
animalxu 2009-08-17
  • 打赏
  • 举报
回复
还有一个办法,仅供参考,用定时器,在定时器触发后再进行其他初始化,注意要关该定时器,不要重复触发。
ydfy6 2009-08-17
  • 打赏
  • 举报
回复
不管是开线程还是不开线程实现,都建议在界面显示进度条或者漏斗形等提示,否则就会出现还没初始化结束,你就开始操作了
yuhudie203 2009-08-17
  • 打赏
  • 举报
回复
如果初始化的时间很长的话,如果用线程会出现对话框显示后操作出错的状况。

如果不用线程 你可以判断初始化的是否完成~~

if(初始化完成 )
return true;
这时候才开始显示主界面~~

或者Sleep(时间),这个时间根据你初始化的时间定~~
churenxh 2009-08-17
  • 打赏
  • 举报
回复
你放在BOOL CXXApp::InitInstance()里面初始设备,并弹出初始化完成BOX之类就好了
这样不回出现窗口绘制的延迟
我基本都是这样做的
bragi523 2009-08-17
  • 打赏
  • 举报
回复
等待界面,进度条之类是个解决办法
你怎么也得初始化完才能显示出来哈
hhwei1985 2009-08-17
  • 打赏
  • 举报
回复
up
flyoxs 2009-08-17
  • 打赏
  • 举报
回复
如果程序一定要等待设备初始化后才能向前操作,建议在界面显示后鼠标设为漏斗形。或者显示一个初始化进度条(设备初始化过程比较久)。

如果程序允许设备未初始化即可操作(其它功能),并且设备初始化过程比较久,只能使用多线程了。
lyhui2008 2009-08-17
  • 打赏
  • 举报
回复
拿分的
  • 打赏
  • 举报
回复
可以放一个等待初始化的进度条,显示初始化进度。初始化完成后,显示主窗口
fishion 2009-08-17
  • 打赏
  • 举报
回复
如果你要开一个线程的话,就怕会在程序没初始化完就你就开始操作程序
fishion 2009-08-17
  • 打赏
  • 举报
回复
可以像现在很多的软件那样,初始化的时候就显示一个等待窗口,初始化完再显示主窗口
FirryHere 2009-08-17
  • 打赏
  • 举报
回复
可以将初始化,放进线程里面去;待处理结束,线程退出前,发送消息(或者其他方法,如事件等)给主线程。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧