我在做一个程序,程序是这样的:一个主界面+一个子对话框(带有几十个按钮)。问题是:当按钮最小化后再点击打开时,那(带有几十个按钮)的子对话框刷新界面时,按钮是一个一个的刷新,很慢,很难看,不知是什么原因。双缓冲,剪辑子窗口也设置,但解决不了。求帮忙
希望:各位能帮我调试一个代码,找出原因来。代码在这:http://yun.baidu.com/share/link?shareid=1682958422&uk=2852477476
希望:各位能帮我调试一个代码,找出原因来。代码在这:http://yun.baidu.com/share/link?shareid=1682958422&uk=2852477476
如果没有的话试试加上看看
有子对话框,加上WS_CLIPCHILDREN还是有必要的
对于XButton类
内存dc设为类成员变量
SetImage的时候以及各种事件响应的时候在内存dc(没创建先创建)上重绘(位图需要改变的时候才绘制)
Onpaint只干一件事 把memdc bitblt到paintdc反正原则是OnPaint里干的事尽量少
位图需要改变的时候才重绘 而不是每次刷新就重绘一遍这样处理以后 非按钮点击响应时,一般的窗体刷新 最大化最小化刷新时(只调用OnPaint里的bitblt,而不需要调用具体的绘制)会很快,速度只跟按钮尺寸有关与具体的绘制实现无关(用慢的跟蜗牛的GDI+,跟用很快的GDI,在这时候速度是一样的)。
有没有Border不会影响最小化还原吧?Dialog Frame 就是多了个DS_MODALFRAME STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_SYSMENU
不关WS_CLIPCHILDREN的事,应该是按钮多了,GdiPlus绘制效率慢导致的
有子对话框,加上WS_CLIPCHILDREN还是有必要的
一个界面几十个按钮,这不算多吧.另外根据我上面提的另一个思路“就是如果主对话框的Border是Dialog Frame时,不会出现问题,因为最小化还原是跟Border是NONE不一样”
我最小化的时候就加上ModifyStyle(0, WS_CAPTION);即加上标题栏,还原的时候就ModifyStyle(WS_CAPTION, 0);这样就解决了,虽然不是好办法。但如果主界面再加多一个窗口,那么窗口切换还是会这样的,但现在我不需要多个窗口先,所以如果还找不到方法就这样先啦(以后要用贴图,不要用按钮个哦)