【发布时间】:2019-02-17 15:28:44
【问题描述】:
我有一个程序在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);
它应该在第一次调用时绘制状态文本。我不应该在窗口周围移动,以便它自己重绘。
【问题讨论】:
-
该代码来自您的
WM_PAINT消息处理程序吗?您没有使用油漆 DC。为什么不呢? -
是的。我以为paint dc仅适用于客户区?还是我错了?
-
如果不在客户区,你在哪里绘制状态栏文本?
-
客户区是指“窗口”。我认为 BeginPaint 的 hdc 不会包含状态栏和其他控件。我正在状态栏中绘制文本。
-
状态栏窗口绘制自己的文本。你不需要做任何特别的事情。只需在创建时设置它的文本。