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);
标签:lf,MFC,格式化,DrawText,文本,DT,矩形 From: https://www.cnblogs.com/liming19680104/p/17323417.html