TEXTMETRIC是在WINGDI.H中定義的型態的結構。git
TEXTMETRIC是在WINGDI.H中定義的型態的結構。windows
TEXTMETRIC結構有20個欄位:markdown
typedef struct tagTEXTMETRIC { // tm LONG tmHeight; //字符高度TEXTMETRIC結構字段的圖示 LONG tmAscent; //字符上部高度(基線以上) LONG tmDescent; //字符下部高度(基線如下) LONG tmInternalLeading, //由tmHeight定義的字符高度的頂部空間數目 LONG tmExternalLeading, //夾在兩行之間的空間數目 LONG tmAveCharWidth, //平均字符寬度 LONG tmMaxCharWidth, //最寬字符的寬度 LONG tmWeight; //字體的粗細輕重程度 LONG tmOverhang, //加入某些拼接字體上的附加高度 LONG tmDigitizedAspectX, //字體設計所針對的設備水平方向 LONG tmDigitizedAspectY, //字體設計所針對的設備垂直方向 BCHAR tmFirstChar; //爲字體定義的第一個字符 BCHAR tmLastChar; //爲字體定義的最後一個字符 BCHAR tmDefaultChar; //字體中所沒有字符的替代字符 BCHAR tmBreakChar; //用於拆字的字符 BYTE tmItalic, //字體爲斜體時非零 BYTE tmUnderlined, //字體爲下劃線時非零 BYTE tmStruckOut, //字體被刪去時非零 BYTE tmPitchAndFamily, //字體間距(低4位)和族(高4位) BYTE tmCharSet; //字體的字符集 } TEXTMETRIC;
變量:ide
BYTE tmPitchAndFamily:函數
TMPF_FIXED_PITCH字體
爲真表示變長型字體,爲假是定長型字體atom
TMPF_VECTORspa
爲真表示矢量字體設計
TMPF_TRUETYPEcode
爲真表示全真字體
TMPF_DEVICE
爲真表示設備字體。.
TEXTMETRIC類型的變量用於存儲裝置字體結構信息(上述變量),在窗口中輸出文字時須要用到上述變量。
示例要得到TEXTMETRIC類型變量的值在windows SDK中能夠用GetTextMetrics(HDC,LPTEXTMETRIC)函數;在MFC中能夠用GetTextMetrics(&tm)。
運用例子以下:
運用Windows SDK的狀況:
TEXTMETRIC tm; GetTextMetrics(hdc,&tm);
運用MFC 的使用狀況:
TEXTMETRIC tm; CDC::GetTextMetrics(&tm);
下面是取得系統字體的字符寬度和高度的WM_CREATE程序代碼:
case WM_CREATE: hdc = GetDC (hwnd) ; GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cyChar = tm.tmHeight + tm.tmExternalLeading ; ReleaseDC (hwnd, hdc) ; return 0 ;
其中cxChar、cyChar、cxCaps都是在回調函數中定義的static int類型的變量。對於固定寬度的字體, cxCaps等於cxChar。對於可變寬度字體,cxCaps設定爲cxChar乘以150%。對於可變寬度字體,TEXTMETRIC結構中的tmPitchAndFamily字段的低位爲1,對於固定寬度字體,該值爲0。
示例二中使用這個位從cxChar計算cxCaps: cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;