我有一个程序在DrawStatusTextW()
消息期间使用了WM_PAINT
函数。调用时,不会绘制任何文本。但是,在随后的调用中,例如将窗口移到任务栏下然后将其拉回去,便会绘制文本。
我尝试对该函数使用不同的标志,并且还尝试将其放置在WM_CREATE
消息中。没有效果。
RECT status_rect;
HDC status_dc;
SNDMSG(controls.status_bar, SB_GETRECT, 0, reinterpret_cast<LPARAM>(&status_rect));
status_dc = GetDC(controls.status_bar);
SelectObject(status_dc, status_font);
DrawStatusText(status_dc, &status_rect, L"Ready.", SBT_NOBORDERS);
ReleaseDC(controls.status_bar, status_dc);
它应该在第一个呼叫时绘制状态文本。我不必在窗口周围移动,以使其重绘。
答案 0 :(得分:2)
每个HWND
都处理自己的画。如果在绘制父窗口时在状态栏上绘制,状态栏自身的绘制处理将清除您绘制的内容。
如果要自定义绘制状态栏,请make the status bar be owner drawn并在其父窗口中处理WM_DRAWITEM
消息。