DrawStatusText不会在首次调用时绘制文本,而只会在后续调用中绘制文本

时间:2019-02-17 06:15:15

标签: c++ winapi statusbar

我有一个程序在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);

它应该在第一个呼叫时绘制状态文本。我不必在窗口周围移动,以使其重绘。

1 个答案:

答案 0 :(得分:2)

每个HWND都处理自己的画。如果在绘制父窗口时在状态栏上绘制,状态栏自身的绘制处理将清除您绘制的内容。

如果要自定义绘制状态栏,请make the status bar be owner drawn并在其父窗口中处理WM_DRAWITEM消息。