为什么在减小窗口大小时发送WM_ERASEBKGND消息?

为什么在减小窗口大小时发送WM_ERASEBKGND消息?,第1张

概述我注意到当我减小窗口大小时,正在发送WM_ERASEBKGND消息,任何人都可以解释为什么在这种情况下发送此消息,我的意思是我明白当我增加窗口大小时我应该删除新的背景显示区域,但为什么在减小窗口大小时需要擦除背景?! 这是一个说明此行为的屏幕截图(我将Spy设置为仅显示WM_ERASEBKGND消息): 这是我用来创建窗口的代码: #include <Windows.h>LRESULT CAL 我注意到当我减小窗口大小时,正在发送WM_ERASEBKGND消息,任何人都可以解释为什么在这种情况下发送此消息,我的意思是我明白当我增加窗口大小时我应该删除新的背景显示区域,但为什么在减小窗口大小时需要擦除背景?!

这是一个说明此行为的屏幕截图(我将Spy设置为仅显示WM_ERASEBKGND消息):

这是我用来创建窗口的代码:

#include <windows.h>LRESulT CALLBACK WndProc(HWND hWnd,UINT message,WParaM wParam,LParaM lParam){    switch(message)    {    case WM_CLOSE:        DestroyWindow(hWnd);        break;    case WM_DESTROY:        PostQuitMessage(0);        break;    default:        return DefWindowProc(hWnd,message,wParam,lParam);    }    return 0;}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdline,int nCmdshow){    WNDCLASSEX wc;    wc.cbSize = sizeof(WNDCLASSEX);    wc.style = 0;    wc.lpfnWndProc = WndProc;    wc.cbClsExtra = 0;    wc.cbWndExtra = 0;    wc.hInstance = hInstance;    wc.hIcon = LoadIcon(NulL,IDI_APPliCATION);    wc.hCursor = LoadCursor(NulL,IDC_ARROW);    wc.hbrBackground = (HBrush)(color_BTNFACE+1);    wc.lpszMenuname = NulL;    wc.lpszClassname = "WinClass";    wc.hIconSm = LoadIcon(NulL,IDI_APPliCATION);    RegisterClassEx(&wc);    HWND hWnd = CreateWindowEx(0,"WinClass","My Window",WS_OVERLAPPEDWINDOW,400,NulL,hInstance,NulL);    ShowWindow(hWnd,nCmdshow);    UpdateWindow(hWnd);    MSG msg;    while(GetMessage(&msg,0) > 0)    {        TranslateMessage(&msg);        dispatchMessage(&msg);    }    return msg.wParam;}

编辑:

我忘了提一个重要的细节:当我减小窗口大小时,只发送WM_ERASEBKGND消息而没有WM_PAINT消息.

解决方法 如果您不希望在调整大小时发送自动擦除,请从窗口类注册中删除CS_HREDRAW和/或CS_VREDRAW样式.这些标志告诉系统分别在水平或垂直调整大小上重绘窗口.

至于为什么这种行为可能是理想的,一些控件在调整大小时保持文本居中,如果它们没有擦除旧尺寸的背景伪像可能会被遗留.

总结

以上是内存溢出为你收集整理的为什么在减小窗口大小时发送WM_ERASEBKGND消息?全部内容,希望文章能够帮你解决为什么在减小窗口大小时发送WM_ERASEBKGND消息?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1227924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存