MFC文本設置字體發虛的問題

MFC 文本設置字體發虛的問題

最近在做一項目中,發現默認的字體比較正常,字體如下:

字體比較清晰,在代碼加入如下設置字體項後,反而顯示發虛,模糊

CFont * m_font= new CFont;

m_font->CreatePointFont(120,_T("Arial"));

GetDlgItem(IDC_EDIT_CONTENT)->SetFont(m_font);

可能是需要某些特別設置,現改用CreateFont創建並應用字體,感覺有所改善,代碼爲

CFont * m_font= new CFont;

m_font->CreateFont(16,0,0,0,0,0,0,0,GB2312_CHARSET,0,0,0,0,_T("Arial"));

GetDlgItem(IDC_EDIT_CONTENT)->SetFont(m_font);

其中CreateFont函數說明如下:

HFONT CreateFont(

int nHeight, // logical height of font height

int nWidth, // logical average character width

int nEscapement, // angle of escapement

int nOrientation, // base-line orientation angle

int fnWeight, // font weight

DWORD fdwItalic, // italic attribute flag

DWORD fdwUnderline, // underline attribute flag

DWORD fdwStrikeOut, // strikeout attribute flag

DWORD fdwCharSet, // character set identifier

DWORD fdwOutputPrecision, // output precision

DWORD fdwClipPrecision, // clipping precision

DWORD fdwQuality, // output quality

DWORD fdwPitchAndFamily, // pitch and family

LPCTSTR lpszFace // pointer to typeface name string

);

CreateFont 參數說明:

1、nHeight:指定字體的字符單元或字符的邏輯單位高度,字符的高度值(也被稱爲em高度)是指字符單元高度值減去內部標頭值。字體映射器以如下方式解釋nHeight指定的值,各值含義爲:
>0:字體映射器轉換這個值以設備單位,並和已有字體的單元高度相匹配。
0:字體映射器轉換在選擇匹配時用一個缺省的高度值。
<0:字體映射器轉換這個值到設備單位,並將它的絕對值和已有字體的字符高度相匹配。
比較所有的高度,字體映射器選擇不超過要求大小的最大字體。
此映射當字體第一次被使用時發生。
對於MM_TEXT映射方式,可以用下面的公式爲一種指定了點大小的字體確定高度:
nHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY),72)
2、nWidth:指定所要求字體的字符的邏輯單位的平均寬度。如果此值爲0,字體映射器選擇一個closest match值,closest match值是由比較當前設備的特徵係數與可使用字體的數字化特徵係數之差的絕對值而確定的。
3、nEscapement:指定移位向量和設備X軸之間的一個角度,以十分之一度爲單位。移位向量平行於正文行的基線。
Windows NT:當圖形設備設置爲GM_ADVANCED時,可以不依賴字符串的字符的定位角而指定字符串的移位角。
當圖形模式被設置爲GM_COMPATIBLE時,nEscapement同時指定移位角和定位角,可以設置nEscapement和nOrientation爲相同的值。
Windows 95:nEscapement同時指定移位角和定位角,可設置nEscapement和nOrientation爲相同的值。
4、nOrientation:指定每個字符的基線和設備X軸之間的角度。
5、FnWeight:在0到1000之間指定字體的權值,如400表示標準體,700表示黑(粗)體,如果此值爲0,則使用缺省的權值。
FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;
FW_NORMAL:400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;FW_BOLD:700;FW_EXTRABOLD;800;FW_BLACK;900。
6、fdwItalic:如果設置爲TRUE,則字體設置爲斜體。
7、fdwUnderline:如果設置爲TRUE,則字體增加下劃線。
8、fdwStrikeOut:如果設置爲TRUE,則字體增加刪除線。
9、fdwCharSet:指定字符集,下列值是預定義的:
ANSI_CHARSET; BALTIC_CHARSET; CHINESEBIG5_CHARSET; DEFAULT_CHARSET;
EASTEUROPE_CHARSET; GB2312_CHARSET; GREEK_CHARSET; HANGUL_CHARSET; MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;
SYMBOL_CHARSET; TURKISH_CHARSET。
韓國Windows:JOHAB_CHARSET;
中東地區Windows:HEBREW_CHARSSET; ARABIC_CHARSET
泰國Windows:THAI_CHARSET
OEM_CHARSET指定的字符集與操作系統有關。
可以使用DEFAULT_CHARSET值來允許字體的名字和大小來充分描述邏輯字體。如果指定的字體名不存在,任何字符集的字體都可以替代指定的字體,所以應該小心地用DEFAULT_CHARSET來避免不期望的結果出現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章