首页 > 解决方案 > DrawStatusText 在第一次调用时不绘制文本,仅在后续调用时绘制

问题描述

我有一个在消息期间使用该DrawStatusTextW()功能的程序。WM_PAINT当它被调用时,不会绘制任何文本。但是,在随后的调用中,例如在任务栏下移动窗口然后将其拉回,将绘制文本。

我尝试在函数中使用不同的标志,并尝试将其放在WM_CREATEmessage.xml 中。没有影响。

   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);

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

标签: c++winapistatusbar

解决方案


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

如果要自定义绘制状态栏,请将状态栏设为所有者绘制WM_DRAWITEM并在其父窗口中处理消息。


推荐阅读