这是一个说明此行为的屏幕截图(我将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消息?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)