📄 testdemo.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 + -