DrawStatusText 不会在第一次调用时绘制文本,仅在后续调用时绘制

DrawStatusText does not draw text on first call, only on subsequent calls

我有一个程序在 WM_PAINT 消息期间使用了 DrawStatusTextW() 函数。调用时,不绘制任何文本。但是,在随后的调用中,例如将 window 移动到任务栏下方然后将其拉回,文本将被绘制。

我尝试在函数中使用不同的标志,还尝试将其放在 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);

它应该在第一次调用时绘制状态文本。我不应该在 window 周围移动,以便它重新绘制自己。

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

如果您想自定义绘制状态栏,make the status bar be owner drawn and handle the WM_DRAWITEM 其父级 window 中的消息。