是这样的,我画了一张图片在窗口中,比如距离窗口右下角的100,100好了,然后在onpaint里写绘制图片代码,用双缓冲绘制,
其他什么都不写,改变窗口大小时,窗口会留有之前图片的残影,这个我看了下载改变窗口大小时出发WM_SIZE事件,然后重新paint,不过可能之前背景没有刷新,导致原来图片的影子还在,然后onpaint又绘制了新的图片上去,于是就和拖拉了图片一样
现在有以下几个问题:
1:我想让改变窗口大小时,实时的现实改变后的窗口内容,而不是想拖动改变大小时先出现一个虚框,然后放开鼠标时才显示改变后的新窗口
2:onpaint中写绘制图片的代码,是写在CDialog::OnPaint();之前还是之后,这个地方有什么区别??
3:如果需要实时刷新时,那么是要加invalidate()吗?加在哪里,onsize还是onsizing里?
4:让窗口可以自由改变大小是不是在oninitdialog里写modifystyle(null,WS_THICKFRAME)吗?如果你 觉的麻烦就直接说一下,如何实现窗口实时改变窗口时显示新的改变后的窗口(比如这里随着窗口移动而移动的图片),而又不会在拖动时有强烈的图片闪烁现象。先谢了~!
其他什么都不写,改变窗口大小时,窗口会留有之前图片的残影,这个我看了下载改变窗口大小时出发WM_SIZE事件,然后重新paint,不过可能之前背景没有刷新,导致原来图片的影子还在,然后onpaint又绘制了新的图片上去,于是就和拖拉了图片一样
现在有以下几个问题:
1:我想让改变窗口大小时,实时的现实改变后的窗口内容,而不是想拖动改变大小时先出现一个虚框,然后放开鼠标时才显示改变后的新窗口
2:onpaint中写绘制图片的代码,是写在CDialog::OnPaint();之前还是之后,这个地方有什么区别??
3:如果需要实时刷新时,那么是要加invalidate()吗?加在哪里,onsize还是onsizing里?
4:让窗口可以自由改变大小是不是在oninitdialog里写modifystyle(null,WS_THICKFRAME)吗?如果你 觉的麻烦就直接说一下,如何实现窗口实时改变窗口时显示新的改变后的窗口(比如这里随着窗口移动而移动的图片),而又不会在拖动时有强烈的图片闪烁现象。先谢了~!
2、对于这个,我一般写在后面,没有研究过区别。
3、刷新就加到OnPaint里就够了。
4、好像没有必要说了吧,在任何代码段都可以改变窗口大小。
第一个问题你说的方法是可以的,但关键是这个是依赖于你的系统的,可以肯定,可以再程序中写出这种效果的,不然为什么那么多的软件都可以直接拖拉改变窗口大小而又实时显示窗口内容。不知道应该怎么实现,
有看到2种方法了:
1是在onsizing里写movewindow,2是程序启动时修改注册表。还有现在即使是已经设置为拖动时显示窗口内容,我拖动改变窗口大小依然会有闪烁,不知道怎么回事
高手能解释一下吗?