首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

MFC 視窗文字輸出:TextOut 與 DrawText 完整用法詳解

     編輯:關於C語言

在 MFC `OnDraw(CDC* pDC)` 中輸出文字,是繪圖基礎。`TextOut` 適合單行定位輸出,`DrawText` 支援矩形區域內多行、對齊、截斷省略號等豐富排版。本文詳細列舉 `DrawText` 格式旗標組合技巧,助你精準控制文字呈現。

兩大核心函數

函數特點適用場景
`BOOL TextOut(int x, int y, const CString& str)`單行、指定左上角座標簡單標籤、座標精確放置
`int DrawText(const CString& str, LPRECT lpRect, UINT nFormat)`矩形區域、多行、對齊、截斷、製表展開段落、按鈕文字、自動換行區域

DrawText 格式旗標(nFormat)速查表

旗標可用 `|` 組合。常用組合:

  • 對齊:`DT_LEFT`、`DT_CENTER`、`DT_RIGHT`、`DT_VCENTER`(垂直置中,需搭配 `DT_SINGLELINE`)
  • 換行控制:`DT_SINGLELINE`(單行)、`DT_WORDBREAK`(單字換行)、`DT_EDITCONTROL`(編輯控制風格)
  • 截斷省略號:`DT_END_ELLIPSIS`(尾部...)、`DT_PATH_ELLIPSIS`(路徑中間...),常搭配 `DT_MODIFYSTRING` 修改原字串
  • 其他:`DT_EXPANDTABS`(展開 Tab)、`DT_NOCLIP`(不裁剪、加速)、`DT_NOPREFIX`(禁用 `&` 快捷鍵前綴)、`DT_CALCRECT`(計算所需矩形大小,不實際繪製)

實戰範例

void CMyView::OnDraw(CDC* pDC) {
    CRect rect(10, 10, 300, 100);
    CString str = _T("這是一段很長的文字,將在矩形區域內自動換行顯示...");

    // 多行、置中、單字換行
    pDC->DrawText(str, &rect, DT_CENTER | DT_WORDBREAK | DT_VCENTER);

    // 單行、右對齊、尾部省略號
    CRect r2(10, 120, 200, 140);
    pDC->DrawText(str, &r2, DT_RIGHT | DT_SINGLELINE | DT_END_ELLIPSIS | DT_MODIFYSTRING);

    // 計算文字實際需求高度
    CRect rCalc(0, 0, 200, 0);
    int height = pDC->DrawText(str, &rCalc, DT_CALCRECT | DT_WORDBREAK);
    // height 即為所需高度,rCalc.bottom 更新為實際底部
}

列印/預覽無縫切換

`OnDraw` 參數 `pDC` 在螢幕、列印預覽、實際列印時分別對應 `CDC`、`CPreviewDC`、印表機 DC。同一份繪圖代碼即可實現 WYSIWYG,善用裝置無關特性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved