用c++创建一个矩形框,并使用TextOut函数在矩形框里面添加文本
时间: 2023-06-20 07:09:46 浏览: 190
以下是一个简单的示例代码,可以创建一个矩形框并在其中添加文本:
```c++
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "MyClass";
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow("MyClass", "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// 消息循环
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// 创建矩形框
RECT rect = {50, 50, 250, 150};
HBRUSH hBrush = CreateSolidBrush(RGB(255, 255, 255));
FillRect(hdc, &rect, hBrush);
// 在矩形框内添加文本
SetTextColor(hdc, RGB(0, 0, 0));
SetBkMode(hdc, TRANSPARENT);
DrawText(hdc, "Hello, world!", -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
EndPaint(hWnd, &ps);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
{
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
return 0;
}
```
在 `WM_PAINT` 消息中,我们首先使用 `FillRect` 函数创建一个白色的矩形框,然后使用 `DrawText` 函数在矩形框内绘制文本。`DT_CENTER | DT_VCENTER | DT_SINGLELINE` 参数指定了文本的对齐方式,使其在矩形框内水平居中、垂直居中且只占用一行。注意在绘制文本之前要设置文本颜色和背景模式,以便文本能够显示出来。
阅读全文