一般都是处理WM_NCPAINT消息来自绘非客户区,但是有些程序员说我WM_NCPAINT后第一次运行了正确,但是当我点其他窗口时这个又变回去了。主要是因为还需要处理窗口激活和非激活的消息!因为WINDOWS会在这两个消息中用系统默认的背景来重画非客户区。下面来看下当一个窗口从激活到非激活状态接受了哪几个消息:
SPY++后发现,主要有3个:
WM_NCACTVIE WM_ACTIVE WM_ACTIVEAPP 和非客户区有关的就是WM_NCACTIVE 所以我们应该处理这个消息来重画自己需要的非激活状态的非客户区,否则WINDOWS会用默认的重画这个区域导致重绘失效!当然在WM_NCACTIVE的wParam指示是将激活还是非激活,两种情况都要处理来画激活和非激活的背景!
这样就OK拉~
return !(BOOL)wParam;
SPY++后发现,主要有3个:
WM_NCACTVIE WM_ACTIVE WM_ACTIVEAPP 和非客户区有关的就是WM_NCACTIVE 所以我们应该处理这个消息来重画自己需要的非激活状态的非客户区,否则WINDOWS会用默认的重画这个区域导致重绘失效!当然在WM_NCACTIVE的wParam指示是将激活还是非激活,两种情况都要处理来画激活和非激活的背景!
这样就OK拉~
return !(BOOL)wParam;