Windows — C ++ WinAPI TextOut () текст обновления

Поэтому я создаю приложение для Windows с WinAPI и использую функцию TextOut () при обработке WM_PAINT для записи текста в окне.

case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd,&ps);
SelectObject(hdc,hfDefault);
TextOut(hdc,10,70,"Points: 0",9);
TextOut(hdc,10,85,"Level: 0",8);
// ...
EndPaint(hwnd,&ps);
}
break;

Как я могу изменить текст, напечатанный TextOut () после вызова функции, а также последний параметр, который определяет длину печатного текста?

Я гуглил по этому поводу, но к своему удивлению не смог найти ничего связанного. Все, что спрашивалось о TextOut (), было о шрифте текста.

1

Решение

Может как то так ….

// I'll assume hwnd is global
void OnSomeActionToRefreshValues()
{
HDC hdc = ::GetDc(hwnd);
DrawValues(hdc, 88, 99);
ReleaseDC(hdc);
}

void DrawValues(HDC hdc, int points, int level)
{
// Might need a rectangle here to overwrite old text
SelectObject(hdc, hfDefault);    // I assume hfDefault is global
TCHAR text[256];
swprintf_s(text, 256, L"Points: %d", points);
TextOut(hdc, 10, 70, text, wcslen(text));
swprintf_s(text, 256, L"Level: %d", level);
TextOut(hdc, 10, 85, text, wcslen(text));
}

И у тебя победит проц:

case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd,&ps);
DrawValues(hdc, 88, 99);
EndPaint(hwnd,&ps);
break;
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]