首页 > 其他分享 >MFC-DrawText在指定的矩形里写入格式化的文本

MFC-DrawText在指定的矩形里写入格式化的文本

时间:2023-04-16 16:12:29浏览次数:46  
标签:lf MFC 格式化 DrawText 文本 DT 矩形

 

    
    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

相关文章

  • MFC-HFONT字体
    GDI中默认的字体,是系统等宽字体,比如对话框标题一般就采用这个字体。        ......
  • MFC-PtInRect判断一个点是否在矩形中
     HDChdc=::GetDC(m_hWnd);RECTrect={10,10,100,100};POINTpoint={50,50};BOOLb=PtInRect(&rect,point);//判断一个点是否在矩形中/*参数1:RECT*lprc参数2:POINT返回值:如果点在rect对象中,那么返回值为非零,......
  • MFC-IntersectRect获得两个矩形的交集部分
     HDChdc=::GetDC(m_hWnd);RECTrect={10,10,100,100};RECTrect1={50,50,150,150};RECTrect2;HBRUSHhbr;hbr=CreateSolidBrush(RGB(0,0,255));SelectObject(hdc,hbr);intf=FrameRect(hdc,&rect,hbr);......
  • MFC-UnionRect获得两个矩形的并集部分
     HDChdc=::GetDC(m_hWnd);RECTrect={10,10,100,100};RECTrect1={50,50,150,150};RECTrect2;HBRUSHhbr;hbr=CreateSolidBrush(RGB(0,0,255));SelectObject(hdc,hbr);intf=FrameRect(hdc,&rect,hbr)......
  • MFC-IsRectEmpty判断一个矩形是否为空矩形
     HDChdc=::GetDC(m_hWnd);RECTrect={10,10,100,100};BOOLb=IsRectEmpty(&rect);//返回值:如果矩形为空,则返回值为非零。如果矩形不为空,则返回值为零CStringstr;str.Format(_T("b=%d"),b);::OutputDebugString(str);  ......
  • MFC-SetRectEmpty将矩形各个坐标设置为0
     RECTrect={10,10,50,100};BOOLb=SetRectEmpty(&rect);//将矩形各个坐标设置为0/*参数1:LPRECTlprc指向RECT结构的指针返回值:如果该函数成功,则返回值为非零值。如果函数失败,则返回值为零*/     ......
  • MFC-SetCursorPos把光标移到屏幕的指定位置
     BOOLbb=SetCursorPos(10,10);//把光标移到屏幕的指定位置//参数1:intx坐标//返回值:如果成功,返回非零值;如果失败,返回值是零    ......
  • MFC-GetWindowRect获取指定窗口或控件的边框矩形的尺寸
     HWNDhDlgWnd=::FindWindow(_T("#32770"),_T("测试窗口"));if(hDlgWnd){::ShowWindow(hDlgWnd,SW_NORMAL);::SetForegroundWindow(hDlgWnd);HWNDhBtn=::GetDlgItem(hDlgWnd,0x3E8);CRectmRect;......
  • MFC-IsWindow判断指定窗口句柄是否标识了现有窗口
     HWNDhWnd=GetSafeHwnd();BOOLbb=IsWindow(hWnd);//判断指定窗口句柄是否标识了现有窗口//返回值:如果窗口句柄标识现有窗口,则返回值为非零//如果窗口句柄未标识现有窗口,则返回值为零     ......
  • vscode如何设置HTML/CSS/JS保存后自动格式化?
    具体操作:点击小齿轮,选择设置按钮  第二步:点击右上角按钮,进入设置页面  第三步:粘贴自动保存的js代码!  "editor.formatOnType":true,"editor.formatOnSave":true, ......