如何禁止窗体上系统按钮的重绘

//===================
//作者:aaaSoft
//日期:2010年2月9日
//论坛:http://bbs.scbeta.com/
//===================

要做出一个好看的界面,必然要自己处理窗体的边框和标题框,也就是非客户区(Non-ClientArea)。一般来说拦截窗体的WM_NCPAINT就可以自己想画什么就画什么了。不过当窗体激活/非激活时,你就会发现Windows自带的标题栏,边框,系统按钮就冒出来了。虽然可以在WM_NCACTIVATE处再画一次标题栏边框等,但窗体会出现闪烁。如果在NCACTIVATE消息被处理前禁止窗体的重绘,等NCACTIVATE消息处理完成后再允许窗体的重绘,那么就能解决这个问题了。那就是今天的主角:WM_SETREDRAW。

禁止窗体重绘:
SendMessage(hWnd, WM_SETREDRAW, FALSE, 0L);
允许窗体重绘:
SendMessage(hWnd, WM_SETREDRAW, TRUE, 0L);


PS:这个问题已经困扰了我很久,总算在Google上找到答案了,今天分享给大家。
原文地址:https://www.cnblogs.com/aaaSoft/p/1666256.html