⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdemo.cpp

📁 c++从入门到精通
💻 CPP
字号:
#include <afx.h>

#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(	HINSTANCE hInstance,
						HINSTANCE hPrevInst,
						LPSTR lpszCmdLine,
						int nCmdShow)
{
	HWND hwnd ;
	MSG Msg ;
	WNDCLASS wndclass ;
	char lpszClassName[] = "文本输出格式"; 
	char lpszTitle[]= "文本输出示例";
	wndclass.style = 0;
	wndclass.lpfnWndProc = WndProc ;
	wndclass.cbClsExtra	= 0 ;
	wndclass.cbWndExtra	= 0 ;
	wndclass.hInstance = hInstance ;
	wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
	wndclass.hCursor = LoadCursor( NULL, IDC_ARROW) ;
	wndclass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH) ;
	wndclass.lpszMenuName = NULL ;
	wndclass.lpszClassName = lpszClassName ;

	if( !RegisterClass( &wndclass))
	{
		MessageBeep(0) ;
		return FALSE ;
	}
	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 hF1,hF2,hF3;	//定义两种字体句柄
	PAINTSTRUCT ps;
	TEXTMETRIC tm;//定义一个TEXTMETRIC结构,用以记录字体信息
	char ch_1[]="第一行字体,颜色为红色、字体为SYSTEM_FONT。";
	char ch_2[]="第二行字体,颜色为绿色。";
	char ch_3[]="第三行字体,颜色为蓝色,粗体。";
	char ch_4[]="第四行字体,斜体、灰色,带下划线。";
	char ch_5[]="第五行字体,黑色、删除线。";
	char ch_6[]="祝您成功!";
	int i=0;
	CString str;
	char buf[256];//定义一个字符缓冲区,用来存放从文件读出的字符
	CStdioFile cf("test.txt",CFile::modeRead);
	while((cf.ReadString(buf, 256)!=NULL)&&(i<1))
	{
			str=CString(buf);
			str.Remove('\n');
			i++;
			
	}
	cf.Close();
	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,str,strlen(str));	//使用当前字体输出文本
		//计算换行时下一行文本的输出坐标
		Y=Y+tm.tmHeight+100*tm.tmExternalLeading;	
		//创建自定义字体hF1
		hF1=CreateFont(30,// 字体的高度
						0,		// 由系统根据高宽比选取字体最佳宽度值
						0,		// 文本的倾斜度为0,表示水平
						0,		//字体的倾斜度为0
						FW_HEAVY,//字体的粗度,FW_HEAVY为最粗
						0,		//非斜体字
						0,		//无下划线
						0,		//无删除线
						ANSI_CHARSET,//表示所用的字符集为ANSI_CHARSET
						OUT_DEFAULT_PRECIS,	//输出精度为缺省精度
						CLIP_DEFAULT_PRECIS,	//剪裁精度为缺省精度
						DEFAULT_QUALITY,		//输出质量为缺省值
						DEFAULT_PITCH|FF_DONTCARE,//字间距和字体系列使用缺省值
						"粗体字"	//字体名称
						);
		SetTextColor(hdc,RGB(0,255,0));	//设置文本颜色为绿色
		SelectObject(hdc,hF1);	//将自定义字体选入设备环境
		GetTextMetrics(hdc,&tm);//获取字体的信息,并写入tm结构中
		TextOut(hdc,X,Y,ch_2,strlen(ch_2));//使用当前字体输出文本
		//换行继续输出文本,计算新行的起始Y坐标位置
		Y=Y+tm.tmHeight+10*tm.tmExternalLeading;	
		GetTextExtentPoint32(hdc,ch_2,strlen(ch_2),&size);//获取字符串的宽度
		SetTextColor(hdc,RGB(0,0,255));	//设置文本颜色为红色
		TextOut(hdc,X,Y,ch_3,strlen(ch_3));//用当前字体输出文本
		
		//创建自定义字体hF2
		hF2=CreateFont(40,	//字体高度
						0,
						0,
						0,
						FW_NORMAL,
						1,	//定义斜体
						1,	//定义输出时带下划线
						0,
						ANSI_CHARSET,//所使用的字符集
						OUT_DEFAULT_PRECIS,
						CLIP_DEFAULT_PRECIS,
						DEFAULT_QUALITY,
						DEFAULT_PITCH|FF_DONTCARE,
						"大号字"
						);
		SelectObject(hdc,hF2);	//将第二种自定义字体选入设备环境
		SetTextColor(hdc,RGB(155,155,155));	//设置文本颜色为红色
		GetTextMetrics(hdc,&tm);//获取字体的信息,并写入tm结构中
		X=0;//计算下一行文本的输出起始坐标
		Y=Y+tm.tmHeight+20*tm.tmExternalLeading; 
 		TextOut(hdc,X,Y,ch_4,strlen(ch_4));//以当前字体输出文本
		//创建自定义字体hF3
		hF3=CreateFont(50,// 字体的高度
						0,// 由系统根据高宽比选取字体最佳宽度值
						0,// 文本的倾斜度为0,表示水平
						0,//字体的倾斜度为0
						FW_HEAVY,//字体的粗度,FW_HEAVY为最粗
						0,//非斜体字
						0,//无下划线
						1,//有删除线
						ANSI_CHARSET,//表示所用的字符集为ANSI_CHARSET
						OUT_DEFAULT_PRECIS,	//输出精度为缺省精度
						CLIP_DEFAULT_PRECIS,//剪裁精度为缺省精度
						DEFAULT_QUALITY,//输出质量为缺省值
						DEFAULT_PITCH|FF_DONTCARE,//字间距和字体系列使用缺省值
						"特大字"//字体名称
						);
		SelectObject(hdc,hF3);	//将第三种自定义字体选入设备环境
		SetTextColor(hdc,RGB(0,0,0));//设置文本颜色为黑色
		GetTextMetrics(hdc,&tm);//获取字体的信息,并写入tm结构中
		X=0;//设定输出文本的X坐标位置
		//换行继续输出文本,计算新行的起始Y坐标位置		
		Y=Y+tm.tmHeight+30*tm.tmExternalLeading;
		TextOut(hdc,X,Y,ch_5,strlen(ch_5));//使用当前字体输出文本
		//在该行继续输出文本获取字符串的宽度
		GetTextExtentPoint32(hdc,ch_5,strlen(ch_5),&size);
		X=X+size.cx;//获取起始坐标
		TextOut(hdc,X,Y,ch_6,strlen(ch_6));	//输出文本
		EndPaint(hwnd,&ps);
		break;
case WM_DESTROY:
	DeleteObject(hF1);//退出窗口时删除自定义字体
	DeleteObject(hF2);
	DeleteObject(hF3);
	PostQuitMessage(0);
	break;
default:
	return  DefWindowProc(hwnd,message,wParam,lParam);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -