字体颜色和字体样式的演示
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInst,
	LPSTR lpszCmdLine,
	int nCmdShow
)
{
	MSG Msg;
	HWND hwnd;
	WNDCLASS wndclass;
	char lpszClassName[] = "窗体";
	//是这个窗口的类名wndclass,不是窗口左上角的那个
	char lpszTitle[] = "My Window";
	HBRUSH hbrush;
	hbrush = CreateSolidBrush(RGB(0, 255, 0));//定义绿色画刷
	wndclass.style = 0;
	wndclass.lpfnWndProc = WndProc;
	wndclass.cbClsExtra = 0;
	wndclass.cbWndExtra = 0;
	wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	wndclass.hbrBackground = hbrush;
	//空值背景颜色,可用自定义画刷来调,绿色背景
	wndclass.hInstance = hInstance;
	wndclass.lpszClassName = lpszClassName;
	wndclass.lpszMenuName = NULL;
	
	if (!RegisterClass(&wndclass)) {
		MessageBeep(0);
		return 0;
	}
	hwnd = CreateWindow(
		lpszClassName,
		lpszTitle,
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL
	);
	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);
	while (GetMessage(&Msg, NULL, 0, 0))
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	//定义区
	HDC hdc;
	HFONT hF_black, hF_big; //定义两种字体
	PAINTSTRUCT ps;
	TEXTMETRIC tm;
	//定义6个字符数组
	char lpsz_1[] = "这是一个红色的,字体为SYSTEM_FONT的字体,红色代表未来。";
	char lpsz_2[] = "现在展示的是自定义字体,颜色为绿色,绿色代表生机勃勃。";
	char lpsz_3[] = "现在展示的是蓝色的粗体字,蓝色代表海洋与天空。";
	char lpsz_4[] = "当前字体为大号,斜体并带有下划线的文字。";
	char lpsz_5[] = "现在掌握了字体的操作了吗?";
	char lpsz_6[] = "祝你成功!";
	int X = 0, Y = 0;
	SIZE size; //定义一个SIZE类型的结构
	switch (message)
	{
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		SetTextColor(hdc, RGB(255, 0, 0));
		//设置文本颜色
		GetTextMetrics(hdc, &tm);
		//获取字体信息,返回到结构体变量tm中
		TextOut(hdc, X, Y, lpsz_1, strlen(lpsz_1));
		//输出文本信息 --- 》》》第一次输出
		Y = Y + tm.tmHeight + 100 * tm.tmExternalLeading;
		//获取下一次输入的Y坐标
		//创建一个自定义字体
		hF_black = CreateFont(
			20,
			0,
			0,
			0,
			FW_HEAVY,
			0,
			0,
			0,
			ANSI_CHARSET,
			OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS,
			DEFAULT_QUALITY,
			DEFAULT_PITCH | FF_DONTCARE,
			"粗体字"
		);
		SetTextColor(hdc, RGB(0, 255, 0)); //设置字体颜色
		SelectObject(hdc, hF_black);  //将自定义字体选入设备环境中
		GetTextMetrics(hdc, &tm);//获取字体信息,写入tm结构中
		TextOut(hdc, X, Y, lpsz_2, strlen(lpsz_2));//输出文本,————》》第二次
		Y = Y + tm.tmHeight + 10 * tm.tmExternalLeading;//获取下一个文本输入的Y坐标
		GetTextExtentPoint32(hdc, lpsz_2, strlen(lpsz_2), &size);
		//获取自定义字符串宽度
		SetTextColor(hdc, RGB(0, 0, 255));//设置字体颜色
		TextOut(hdc, X, Y, lpsz_3, strlen(lpsz_3));  //第三次输出
		Y = Y + tm.tmHeight + 20 * tm.tmExternalLeading;
		//定义一个大字号的自定义字体
		hF_big = CreateFont(
			30,
			0,
			0,
			0,
			FW_NORMAL,
			1,
			1,
			0,
			ANSI_CHARSET,
			OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS,
			DEFAULT_QUALITY,
			DEFAULT_PITCH | FF_DONTCARE,
			"大号字"
		);
		SelectObject(hdc, hF_big);
		SetTextColor(hdc, RGB(155, 155, 155));
		Y = Y + tm.tmHeight + 20 * tm.tmExternalLeading;
		TextOut(hdc, X, Y, lpsz_4, strlen(lpsz_4)); //第四次输出
		SetTextColor(hdc, RGB(255, 0, 0));
		Y = Y + tm.tmHeight + 30 * tm.tmExternalLeading;
		TextOut(hdc, X, Y, lpsz_5, strlen(lpsz_5));  //第五次输出
		//让同一行继续输出文本
		GetTextExtentPoint32(hdc, lpsz_5, strlen(lpsz_5), &size);
		X = X + size.cx; // 获取初始X坐标,X时上一个串结尾的X坐标
		TextOut(hdc, X, Y, lpsz_6, strlen(lpsz_6));
		
		EndPaint(hwnd, &ps);
		DeleteObject(hF_black);
		DeleteObject(hF_big);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
		//break很重要,没有的话窗口会址闪一下,因为直接执行完
	default:
		return DefWindowProc(hwnd, message, wParam, lParam);
	}
	return 0;
}


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号