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

C++ DrawStatusText不会在第一次调用时绘制文本,仅在后续调用时绘制文本,c++,winapi,statusbar,C++,Winapi,Statusbar,我有一个程序在WM_PAINT消息期间使用了DrawStatusTextW()函数。调用时,不会绘制任何文本。但是,在随后的调用中,如在任务栏下移动窗口,然后将其向上拉,则会绘制文本 我尝试对函数使用不同的标志,并尝试将其放置在WM\u CREATE消息中。没有效果 RECT status_rect; HDC status_dc; SNDMSG(controls.status_bar, SB_GETRECT, 0, reinterpret_cast<LPARAM>(&

我有一个程序在
WM_PAINT
消息期间使用了
DrawStatusTextW()
函数。调用时,不会绘制任何文本。但是,在随后的调用中,如在任务栏下移动窗口,然后将其向上拉,则会绘制文本

我尝试对函数使用不同的标志,并尝试将其放置在
WM\u 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);
RECT status\u RECT;
HDC状态\u dc;
SNDMSG(controls.status_-bar、SB_-GETRECT、0、reinterpret_-cast(&status_-rect));
status_dc=GetDC(controls.status_bar);
选择对象(状态\ dc、状态\字体);
DrawStatusText(状态为dc和状态为rect,L为“就绪”,SBT为NOBU);
释放dc(控制状态栏、状态dc);

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

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


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

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


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

该代码是否来自
WM\u paint
消息处理程序?您没有使用油漆DC。为什么不呢?是的。我以为油漆dc只适用于客户区域?或者我错了?如果不是在客户端区域,你在哪里绘制状态栏文本?客户端区域指的是“窗口”。我认为从开始绘制时的hdc将不包括状态栏和其他控件。我正在状态栏中绘制文本。状态栏窗口绘制自己的文本。你不需要做任何特别的事情。创建时只需设置它的文本。这是来自
WM\u PAINT
消息处理程序的代码吗?您没有使用油漆DC。为什么不呢?是的。我以为油漆dc只适用于客户区域?或者我错了?如果不是在客户端区域,你在哪里绘制状态栏文本?客户端区域指的是“窗口”。我认为从开始绘制时的hdc将不包括状态栏和其他控件。我正在状态栏中绘制文本。状态栏窗口绘制自己的文本。你不需要做任何特别的事情。创建时只需设置其文本。