其他窗口也都是主线程通过createwindow创建的 问题应该就在这,你创建一线程,然后用线程创建子窗口,问题一定会解决,我以前写过这样的程序,没出过楼主的问题, 至于为什么子窗口间拖动不会出现拖痕,这个我还真有点想不透,我先来大约猜下楼主的情况,当楼主拖动子窗口的时间,系统向主线程发送了WM_MOVE的消息,(因为子窗口也是在主进程里创建的,所以WM_MOVE发给主线程),因为主线程一直再处理WM_MOVE消息,所以PAINT消息一直在排队列,没有被处理。 再大约分析下,你的CreateDialog,VC里随便用个dlg.DoModal(),或者用非模态,都是在主进程内用的,但是绝不会发生子窗口拖动影响父窗口的问题,既然如此,那么是不是每一个DoModal都应该创建了一子窗口的线程,那么CreateDialog估计也会创建子窗口的线程,。。。。。 LZ别急,我也有点糊涂了,既然子窗口已经创建了线程,那么为什么父窗口还有拖痕,我猜这个CreateDialog创建子窗口的外部框架的相关消息是在主线程内执行?即WM_MOVE在主线程处理? 哪个DoModal的外部框架又是怎么回事@#@#!@¥ 只能解释DoModal创建的窗口一上来就是在线程里创建的。。。。。 额,解释的有点乱,我要出去跑跑长辈家,要过15了,心里有点急,想到哪说哪。。 楼主不放跟踪下DoModal看看有没有什么发现,我走了
手机没电了,打字也慢,如果是createwindow,就不用试上面说得了,根据你主窗口的情况实现paint
哦,子窗口是用CreateDialog加载的对话框,那么至少可以知道,这个对话框资源一定有自己的重绘的消息响应,你的主窗口是用的createwindow吧
会不会是你的子窗口一直在绘制着什么,而父窗口至少在子窗口移动的时间停止了绘制
鼠标松开了,子窗口不再移动,父窗口也就不再需要重绘了。 没见过这样的情况,如果父窗口不是你自绘的话,paint也没有重载过,有没有可能是系统的问题,我出过一次类似的问题,不过那是我的窗口重绘很慢闪屏,删了几个插件好了
建议给父窗口和子窗口加入: WS_CLIPCHILDREN WS_CLIPSIBLINGS
15,980
社区成员
115,900
社区内容
加载中
试试用AI创作助手写篇文章吧