MFC自绘标题栏,但是窗口缩放时 会有蓝色背景,这个如何解决?详情如下

MFC自绘标题栏,但是窗口缩放时 会有蓝色背景,这个怎么解决?详情如下:
自绘标题栏,其他一切正常,但是当点击最大化(恢复)/最小化按钮以后,窗口的缩放动画过程中,windows会绘制标题栏,只有图标和标题文本,没有按钮,也就是在XP下,在缩放过程中,标题栏的位置会出现一个蓝色的条,缩放完毕恢复正常。

这个情况如何解决? 

------解决方案--------------------
就算去掉WS_CAPTION也会这样,貌似是DrawAnimatedRects的问题
加上WS_EX_LAYERED,最小化的动画效果有所不同,会好一点
------解决方案--------------------
1。
如果你没有重载最大化和最小化消息函数及WM_SIZE消息函数,你重载并在函数里加上更新重绘函数,就是调用重绘函数
2。
如果你重载了上述函数,你就单步执行,看是进哪个系统函数造成先出现标准标题栏,然后,设法重载这个函数的消息
------解决方案--------------------
试一试 复写
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

// 0x00AE WM_NCUAHDRAWCAPTION
// 0x00AF WM_NCUAHDRAWFRAME
if( (message == 0x00AE) 
------解决方案--------------------
 (messae == 0x00AF) )
   return 0;
------解决方案--------------------
不知道你的需求是什么,MDI MAINFRAME重画标题栏老费劲了,那个蓝色标题栏在窗口大小改变时候总会闪出来的,你如果看看OUTLOOK就知道了,OUTLOOK2007都没有避免的。那个我试了好久没有结果,因为菜单 和 关闭按钮等是和标题栏一起画的,你只要鼠标移上去就会重画。如果你是公司的工作,应该叫老板知道这个需求的难度,以重新安排项目时间。

OnActivate, OnNcActivate,OnNcHittest... 都要重写,肯定会超出项目计划时间的。

最快捷的就是Modifystlye(WS_SYSMENU,0),这样默认的标题栏才不会重画,但是你的那些按钮就全要自己画了,而且还会有好多其它问题出现。

而且CHILDFRAME也要改,因为MDI里CHILDFRAME最大化后,MAINFRAME标题栏位置是按照CHILDFRAME的。