DrawStatustext仅在后续呼叫上不在第一次呼叫上绘制文本

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

本文关键字:呼叫 第一次 绘制 文本 DrawStatustext      更新时间:2023-10-16

我有一个程序在WM_PAINT消息中使用DrawStatusTextW()功能。当它被称为时,没有绘制文本。但是,在随后的呼叫中,例如将窗口移动任务栏下的窗口然后将其撤回,绘制了文本。

我尝试使用该功能使用不同的标志,并尝试将其放入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);

它应该在第一个呼叫上绘制状态文本。我不必在窗户上移动,以便重新绘制自己。

每个HWND都可以处理自己的绘画。如果您在绘画父窗口时画在状态栏上,那么状态栏自己的油漆处理将消除您的画。

如果要自定义油漆状态栏,请绘制状态栏并在其父窗口中处理WM_DRAWITEM消息。