
HDC hdc = ::GetDC(m_hWnd);
LOGFONT lf = { 0 };
lf.lfWeight = 16; //平均宽度
lf.lfHeight = 40;//字体高度
lf.lfCharSet = GB2312_CHARSET;
HFONT hfont = ::CreateFontIndirect(&lf);
HFONT holdfont= (HFONT)SelectObject(hdc, hfont);
RECT rect = { 50,50,400,400 };
int n=DrawText(hdc,_T("GDI测试"),-1,&rect,DT_LEFT);//在指定的矩形里写入格式化的文本
/*
参数1:HDC hDC 设备描述表句柄
参数2:LPCTSTR lpString 指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以\0结束的。
如果uFormat包含DT_MODIFYSTRING,则函数可为此字符串增加4个字符,存放字符串的缓冲区必须足够大,能容纳附加的字符
参数3:int nCount 指向字符串中的字符数。如果nCount为-1,则lpString指向的字符串被认为是以\0结束的,DrawText会自动计算字符数
参数4:LPRECT lpRect 指向结构RECT的指针,其中包含文本将被置于其中的矩形的信息(按逻辑坐标)
参数5:UINT uFormat 指定格式化文本的方法。它可以下列值的任意组合
DT_CALCRECT:这个参数比较重要,可以使DrawText函数计算出输出文本的尺寸。
如果输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行
如果输出文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符
出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本
DT_CENTER:指定文本水平居中显示
DT_VCENTER:指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用
DT_SINGLELINE:单行显示文本,回车和换行符都不断行
DT_BOTTOM 使文本对齐到矩形底部。 此值仅用于DT_SINGLELINE值
DT_LEFT 将文本对齐到左侧
DT_RIGHT 将文本对齐到右侧
DT_TOP 将文本对齐到矩形的顶部
我只写了常用的,其余的看:https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-drawtext
返回值:如果函数成功,则返回值是逻辑单元中文本的高度。
如果指定了DT_VCENTER或DT_BOTTOM,则返回值是绘制文本底部的偏移量lpRect->top
如果函数失败,则返回值为零
*/
SelectObject(hdc, holdfont);
DeleteObject(hfont);
