读书人

拖动子窗口父窗口重绘有有关问题产

发布时间: 2013-09-18 14:17:40 作者: rapoo

拖动子窗口,父窗口重绘有问题,产生拖影
在窗口上创建了一个对话框子窗口,用鼠标拖动子窗口的时候会在父窗口上留下拖影,鼠标松开拖影就会消失,不松开拖影一直在。
在主窗口的wm_paint下面打了日志,发现拖动子窗口的时候主窗口确实收到了wm_paint消息。而松开鼠标的一瞬间并没有该消息产生,拖影反而消失了。请教各位这是什么原因? 对话框 拖影
[解决办法]
其他窗口也都是主线程通过createwindow创建的

问题应该就在这,你创建一线程,然后用线程创建子窗口,问题一定会解决,我以前写过这样的程序,没出过楼主的问题,

至于为什么子窗口间拖动不会出现拖痕,这个我还真有点想不透,我先来大约猜下楼主的情况,当楼主拖动子窗口的时间,系统向主线程发送了WM_MOVE的消息,(因为子窗口也是在主进程里创建的,所以WM_MOVE发给主线程),因为主线程一直再处理WM_MOVE消息,所以PAINT消息一直在排队列,没有被处理。
再大约分析下,你的CreateDialog,VC里随便用个dlg.DoModal(),或者用非模态,都是在主进程内用的,但是绝不会发生子窗口拖动影响父窗口的问题,既然如此,那么是不是每一个DoModal都应该创建了一子窗口的线程,那么CreateDialog估计也会创建子窗口的线程,。。。。。
LZ别急,我也有点糊涂了,既然子窗口已经创建了线程,那么为什么父窗口还有拖痕,我猜这个CreateDialog创建子窗口的外部框架的相关消息是在主线程内执行?即WM_MOVE在主线程处理?

哪个DoModal的外部框架又是怎么回事@#@#!@¥
只能解释DoModal创建的窗口一上来就是在线程里创建的。。。。。
额,解释的有点乱,我要出去跑跑长辈家,要过15了,心里有点急,想到哪说哪。。
楼主不放跟踪下DoModal看看有没有什么发现,我走了

读书人网 >VC/MFC

热点推荐