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

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

但是由于初始化设备需要较长的时间,所以现在的处理方法为
先动态的产生控件然后发送消息PostMessage(WM_INITDEVICE)来进行初始化。
原以为postMessage会马上返回,不会出现窗口绘制的延迟,但是结果确是仍然产生了延迟。请问怎样解决这个问题?
我想产生一个初始化线程应该可以解决这个问题,但不知有没有更简单的方法?
...全文
92 点赞 收藏 14
写回复
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
可以将初始化,放进线程里面去;待处理结束,线程退出前,发送消息(或者其他方法,如事件等)给主线程。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告