yop*_*yop 1 c++ windows winapi wm-paint textout
我正在使用 WinAPI 创建一个 Windows 应用程序。我正在使用该函数在处理窗口消息TextOut()时向用户显示更新的文本。WM_PAINT
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd, &ps);
SelectObject(hdc, hfDefault);
// display the user data in the window
TextOut(hdc,10,70, "Points: 0", 9);
TextOut(hdc,10,85, "Level: 0", 8);
// ...
EndPaint(hwnd, &ps);
}
break;
Run Code Online (Sandbox Code Playgroud)
如何更改调用TextOut()函数后打印的文本以及确定打印文本长度的最后一个参数?
我发现有关使用的所有内容都TextOut()与文本字体有关。
也许是这样的......
// 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));
}
Run Code Online (Sandbox Code Playgroud)
在你获胜的过程中:
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint(hwnd,&ps);
DrawValues(hdc, 88, 99);
EndPaint(hwnd,&ps);
break;
Run Code Online (Sandbox Code Playgroud)