问题1:
我在消息循环处,使用
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_PAINT)
continue;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
导致WM_PAINT不断发送,进入死循环。
我怎样从消息队列永久移除这条WM_PAINT消息呢?问题2:
发送什么消息,可以重绘系统菜单区(不是客户区)?谢谢!
我在消息循环处,使用
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_PAINT)
continue;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
导致WM_PAINT不断发送,进入死循环。
我怎样从消息队列永久移除这条WM_PAINT消息呢?问题2:
发送什么消息,可以重绘系统菜单区(不是客户区)?谢谢!
{
PAINTSTRUCT ps;
::BeginPaint(msg.hwnd, &ps);
::EndPaint(msg.hwnd, &ps);
continue;
}
{
if (msg.message == WM_PAINT)
continue;
}当然会进入死循环了,你 break 试试
如果不处理WM_PAINT讯息(这是很罕见的),它们必须被传送给DefWindowProc。DefWindowProc只是依次呼叫BeginPaint和EndPaint,以使显示区域有效。问题2:
发送什么消息,可以重绘系统菜单区(不是客户区)?
WM_NCPAINT