#include <windows.h>
void OnPaint(HWND hWnd)
{
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint(hWnd, &ps);
SetTextColor(hdc, RGB(255, 0, 0));//设置字体颜色
SetBkColor(hdc, RGB(0, 255, 0));//设置背景颜色,只适用于不透明模式
SetBkMode(hdc, OPAQUE);
//SetBkMode(hdc, TRANSPARENT);//设置背景色为透明
char szText[] = "hello text";
HFONT hFont = CreateFont(30, 0, 45, 0, 900, 1, 1, 1, GB2312_CHARSET, 0, 0, 0, 0, "黑体");
HGDIOBJ nOldFont = SelectObject(hdc, hFont);
//指定位置画,不会换行
TextOut(hdc, 100, 100, szText, strlen(szText));
HGDIOBJ hBrush = GetStockObject(NULL_BRUSH); //透明画刷 ,透明刷子是借系统的,不用自己销毁
HGDIOBJ nOldBrush = SelectObject(hdc, hBrush);
RECT rc;
rc.left = 100;
rc.top = 150;
rc.right = 200;
rc.bottom = 200;
Rectangle(hdc, 100, 150, 200, 200);
//DrawText(hdc, szText, strlen(szText),&rc,DT_LEFT|DT_TOP|DT_WORDBREAK|DT_NOCLIP);//左上角对其,换行,多出来的不剪切
DrawText(hdc, szText, strlen(szText),&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_NOCLIP);//水平和垂直都居中
//DT_VCENTER DT_BOTTOM 只适用于DT_SINGLELINE, 和 DT_WORDBREAK 冲突
//销毁字体
SelectObject(hdc, nOldFont);
DeleteObject(nOldFont);
EndPaint(hWnd, &ps);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT msgID, WPARAM wParam, LPARAM lParam)
{
switch (msgID)
{
case WM_PAINT:
OnPaint(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, msgID, wParam, lParam);
}
//入口函数
int CALLBACK WinMain(HINSTANCE hIns, HINSTANCE hPreIns, LPSTR IpCmdLine, int nCmdShow)
{
//注册窗口类
WNDCLASS wc = { 0 };
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 3);
wc.hCursor = NULL;
wc.hIcon = NULL;
wc.hInstance = hIns;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = "Main";
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);
//在内存创建窗口
HWND hWnd = CreateWindowEx(0, "Main", "window", WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, NULL, NULL, hIns, NULL);
//显示窗口
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
//消息循环
MSG nMsg = { 0 };
while (GetMessage(&nMsg, NULL, 0, 0))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);//将消息给窗口处理函数来处理
}
return 0;
}
win32 编程 字体
最新推荐文章于 2024-09-12 14:11:12 发布
本文详细介绍了使用WindowsAPI中的GDI(图形设备接口)进行窗口绘图,包括OnPaint函数的实现、文本输出和不同对齐方式,以及窗口消息处理的示例。
摘要由CSDN通过智能技术生成