📄 subject_63901.htm
字号:
<p>
序号:63901 发表者:sanyeshu 发表日期:2003-12-07 12:41:46
<br>主题:各位大侠,怎么样才能让我的程序停下来!
<br>内容:利用多媒体定时器,每次触发显示一帧图像。这时问题出来了<BR>1.如果我把定时器的时钟设的比较低,比如0.1秒时还好,但如果设为0.01秒或者更低,系统就像死机一样,不在响应我的任何鼠标键盘动作,直到它把缓存中的图片全部显示完毕。我怎么才能打破这种霸道的独占模式阿?<BR>2.我显示图像后,要把对话框上的一个编辑框不断实时更新,如果时钟设置得比较低,比如0.01秒,虽然我把updatedata(false)放在了显示图片函数之后,但它还是在全部图片显示完毕后才会更新编辑框。如果时钟设置的比较高比如0.1秒,则没有这回事。尝试在显示图片函数后发送消息更新好像不是很有效,我该怎么做才能打破这种独占模式阿?<BR><BR><BR>请各位高人仁者见仁,智者见智!谢谢
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:bbsbbs2003 回复日期:2003-12-07 12:59:51
<br>内容:多线程
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jackyxio 回复日期:2003-12-08 01:52:19
<br>内容:这个不叫独占,你写个死循环也能出现这样的情况。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sanyeshu 回复日期:2003-12-08 03:33:34
<br>内容:多线程我也尝试了一下,在图像显示后设置信号灯-----启动辅助线程------然后在辅助线程中发送消息(因为在辅助线程中不能更新对话框,这个好像很多人都这么认为吧)给主线程-----在主线程中更新对话框。<BR><BR>但是还是不能正常显示,只有全部图像显示完毕后对话框的刷新才能显示出来,怎么才能解决这个问题呢?<BR><BR>还有,什么叫独占啊?不太理解,请jackyxio 讲解,谢谢 !
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-12-08 13:07:23
<br>内容:在定时器的响应函数里,加上<BR>MSG msg;<BR>while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)<BR>{<BR> ::TranslateMessage(&msg);<BR> ::DispatchMessage(&msg);<BR>}<BR><BR>试试
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:jackyxio 回复日期:2003-12-08 18:03:47
<br>内容:你让它慢一点行不行。。。只能挑一百斤的担子,你非让它挑二百斤。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:胡涛 回复日期:2003-12-08 19:16:01
<br>内容:BigJames 的方法好像仅仅是发送了一个消息而已,和一般的postmessage没什么区别吧。<BR><BR><BR>我倒是想让他慢下来,让他sleep一会,但老板不允许阿,就要以0.01秒的时间间隔显示序<BR><BR>列图片,同时看到国外的一个软件就可以,郁闷。<BR><BR>谁能给我指一条明路啊,否则我就惨了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-12-08 20:45:48
<br>内容:那是让你的界面有机会更新呀!<BR>你试一下,看看效果吧。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:zzjhsj 回复日期:2003-12-09 10:07:18
<br>内容:我提一种思路:<BR>1.建立绘图线程池,在固定的定时间隔(0.01s)或绘图点保证有一个线程开始工作,其工作环境利用内存DC,形成图元文件或bmp;把结果存入显示队列<BR>2.显示线程在固定的时间间隔利用blt进行屏幕绘制<BR>3.多媒体定时器只作为触发器使用<BR>4.优化绘图代码<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sanyeshu 回复日期:2003-12-09 23:06:32
<br>内容:zzjhsj兄,线程池美用过,不知能否再详细一些或者提供一些源码研究一下?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:zzjhsj 回复日期:2003-12-10 10:14:06
<br>内容:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=61315&forum_id=<BR>这里有些东西你可能有用<BR><BR>你也可以利用完成口建立线程池
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:sanyeshu 回复日期:2003-12-11 05:10:25
<br>内容:谢谢各位,感激不尽!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -