将文本/图像写入HWND的最短代码是什么

时间:2011-02-18 21:27:15

标签: c++ winapi gdi

我不需要控件或任何东西,我只需要在HWND上写一些东西,无论是居中的文本还是图像,都表明它已被渲染到。实际的用例是我在一个我尚未准备好处理的地方通过HWND,因此我想在其上显示文本,如“此窗口无法使用”,或者悲伤的图形等等

没有什么特别的,只是原始的hacky代码,但你所拥有的只是在纯Win32中使用的HWND。

2 个答案:

答案 0 :(得分:7)

HDC hdc = GetDC(hwnd);
RECT rect;
GetClientRect(hwnd, &rect);
char * text = "this Window cannot be used";
DrawTextA(hdc, text, strlen(text), &rect, DT_CENTER | DT_VCENTER);
ReleaseDC(hdc);

您可能希望在绘制文本之前选择其他字体,但这样可以让您开始使用。

答案 1 :(得分:7)

这实际上非常简单。

// Grab the window dimensions.
RECT bounds;
GetClientRect(hwnd, &bounds);

// Grab a DC to draw with.
HDC hdc = GetDC(hwnd);

// The money shot!
DrawText(hdc, messageText, -1, &bounds, DT_CENTER | DT_VCENTER);

// Now give back the borrowed DC.
ReleaseDC(hdc);