c - 如何知道 WM_PAINT 是否必须删除背景?窗口API

标签 c windows winapi

我正在尝试记录绘画消息以解决问题,我需要一种方法来了解 WM_PAINT 消息是否必须删除背景, 所以我在 WM_PAINT 处理中做了这个:

hdc = BeginPaint(hwnd,&ps);
//code to output the Invalid RECT is ommited.....
if(ps.fErase){
    //output true
}else{
    //output false
};

ps.rcPaint 具有正确的值,但 ps.fErase 始终为“false”,即使我调用 InvalidateRect(hwnd,0,true); 其中 hwnd 是我记录 WM_PAINT 消息的窗口 这是一些 output image

我想知道无效的王朝绘画请求是否像我对上次所做的那样包括删除背景 InvalidateRect(hwnd,0,1); 我做错了什么?

最佳答案

如果背景需要删除,系统会在WM_PAINT之前发送WM_ERASEBKGND。如果您不处理此消息,那么它将通过 DefWindowProc 自动清除背景。

您需要处理WM_ERASEBKGND 并返回0 以向系统指示背景尚未被删除。然后它会在 WM_PAINT 中给你另一次机会。

关于c - 如何知道 WM_PAINT 是否必须删除背景?窗口API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322672/

相关文章:

c - 从指针打印地址时,%lx 和 %ld 有什么区别?

windows - 从批处理中解析 SSH 流

ruby - 在windows上的ruby中查找文件的真实文件名

c++ - 同步 I/O 与调用线程?

c# - 用 C# 为 Windows API 编写 COM 服务器,从哪里开始?

c++ - C\C++开源PCM到Mp3转换器?

C:信号函数(参数?)

C 编程 while 循环

windows - 如何测试我的 DNS 和站点配置

c - 使用 ShellExecuteEx() 将 UAC 窗口置于顶部