Какой самый короткий код для записи текста / изображения в HWND - PullRequest
3 голосов
/ 19 февраля 2011

Мне не нужно иметь элементы управления или что-то еще, мне просто нужно написать что-то на HWND, либо центрированный текст, либо изображение, которое показывает, что оно было обработано.Фактический вариант использования - мне передают HWND в момент, когда я не готов с ним справиться, поэтому я хочу отобразить на нем текст типа «это окно нельзя использовать» или графику с грустным лицом и т. Д..

Ничего особенного, только грубый хакерский код, но все, что у вас есть, это HWND для работы в чистом Win32.

Ответы [ 2 ]

7 голосов
/ 19 февраля 2011

Это на самом деле довольно просто.

// 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);
7 голосов
/ 19 февраля 2011
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);

Возможно, вы захотите выбрать другой шрифт, прежде чем начертите текст, но это поможет вам начать работу.

...