我正在尝试记录绘画消息以解决问题,并且我需要一种方法来了解WM_PAINT消息是否必须擦除背景,因此我在WM_PAINT处理中进行了此操作:
hdc = BeginPaint(hwnd,&ps);
//code to output the Invalid RECT is ommited.....
if(ps.fErase){
//output true
}else{
//output false
};
Run Code Online (Sandbox Code Playgroud)
在ps.rcPaint有正确的价值观,但ps.fErase始终是“假的”,甚至当我打电话InvalidateRect(hwnd,0,true);哪里hwnd是我记录在这里WM_PAINT消息的窗口是一些输出图像
我想知道无效的绘画请求是否包括像我上次一样所做的擦除背景InvalidateRect(hwnd,0,1);错误吗?
如果背景需要擦除WM_ERASEBKGND,WM_PAINT则系统先发送。如果您不处理此消息,那么它将一直进行到DefWindowProc将自动删除背景的状态。
您需要处理WM_ERASEBKGND并返回0以指示系统尚未删除背景。然后它将为您提供另一个机会WM_PAINT。