level 11
就差个界面了。。。
string GetFontInfo(HFONT hFont)
{
LOGFONT logFont;
ostringstream ostr;
GetObject(hFont,
sizeof(LOGFONT),&logFont);
ostr<<"nHeight: "<<logFont.lfHeight<<"\r\n";
ostr<<"nWidth: "<<logFont.lfWidth<<"\r\n";
ostr<<"nEscapement: "<<logFont.lfEscapement<<"\r\n";
ostr<<"nOrientation: "<<logFont.lfOrientation<<"\r\n";
switch(logFont.lfWeight)
{
case 0:
ostr<<"fnWeight: FW_DONTCARE = 0\r\n";
break;
case 100:
ostr<<"fnWeight: FW_THIN = 100\r\n";
break;
case 200:
ostr<<"fnWeight: FW_EXTRALIGHT or FW_ULTRALIGHT = 200\r\n";
break;
case 300:
ostr<<"fnWeight: FW_LIGHT = 300\r\n";
break;
case 400:
ostr<<"fnWeight: FW_NORMAL or FW_REGULAR = 400\r\n";
break;
case 500:
ostr<<"fnWeight: FW_MEDIUM = 500\r\n";
break;
case 600:
ostr<<"fnWeight: FW_SEMIBOLD or FW_DEMIBOLD = 600\r\n";
break;
case 700:
ostr<<"fnWeight: FW_BOLD = 700\r\n";
break;
case 800:
ostr<<"fnWeight: FW_EXTRABOLD or FW_ULTRABOLD = 800\r\n";
2012年10月31日 12点10分
10
level 11
break;
case 900:
ostr<<"fnWeight: FW_HEAVY or FW_BLACK = 900\r\n";
break;
default:
ostr<<"fnWeight: unknown\r\n";
}
if(logFont.lfItalic) ostr<<"fdwItalic:
true\r\n";
else ostr<<"fdwItalic:
false\r\n";
if(logFont.lfUnderline) ostr<<"fdwUnderline:
true\r\n";
else ostr<<"fdwUnderline:
false\r\n";
if(logFont.lfStrikeOut) ostr<<"fdwStrikeOut:
true\r\n";
else ostr<<"fdwStrikeOut:
false\r\n";
switch(logFont.lfCharSet)
{
case ANSI_CHARSET:
ostr<<"fdwCharSet: ANSI_CHARSET = 0\r\n";
break;
case BALTIC_CHARSET:
ostr<<"fdwCharSet: BALTIC_CHARSET = 186\r\n";
break;
case CHINESEBIG5_CHARSET:
ostr<<"fdwCharSet: CHINESEBIG5_CHARSET = 136\r\n";
break;
case DEFAULT_CHARSET:
ostr<<"fdwCharSet: DEFAULT_CHARSET = 1\r\n";
break;
case EASTEUROPE_CHARSET:
ostr<<"fdwCharSet: EASTEUROPE_CHARSET = 238\r\n";
break;
case GB2312_CHARSET:
ostr<<"fdwCharSet: GB2312_CHARSET = 134\r\n";
break;
case GREEK_CHARSET:
ostr<<"fdwCharSet: GREEK_CHARSET = 161\r\n";
2012年10月31日 12点10分
11
level 11
break;
case HANGUL_CHARSET:
ostr<<"fdwCharSet: HANGUL_CHARSET = 129\r\n";
break;
case MAC_CHARSET:
ostr<<"fdwCharSet: MAC_CHARSET = 77\r\n";
break;
case OEM_CHARSET:
ostr<<"fdwCharSet: OEM_CHARSET = 255\r\n";
break;
case RUSSIAN_CHARSET:
ostr<<"fdwCharSet: RUSSIAN_CHARSET = 204\r\n";
break;
case SHIFTJIS_CHARSET:
ostr<<"fdwCharSet: SHIFTJIS_CHARSET = 128\r\n";
break;
case SYMBOL_CHARSET:
ostr<<"fdwCharSet: SYMBOL_CHARSET = 2\r\n";
break;
case TURKISH_CHARSET:
ostr<<"fdwCharSet: TURKISH_CHARSET = 162\r\n";
break;
case VIETNAMESE_CHARSET:
ostr<<"fdwCharSet: VIETNAMESE_CHARSET = 163\r\n";
break;
case JOHAB_CHARSET:
ostr<<"fdwCharSet: JOHAB_CHARSET = 130\r\n";
break;
case ARABIC_CHARSET:
ostr<<"fdwCharSet: ARABIC_CHARSET = 178\r\n";
break;
case HEBREW_CHARSET:
ostr<<"fdwCharSet: HEBREW_CHARSET = 177\r\n";
break;
case THAI_CHARSET:
ostr<<"fdwCharSet: THAI_CHARSET = 222\r\n";
2012年10月31日 12点10分
12
level 11
break;
default:
ostr<<"fdwCharSet: unknown\r\n";
}
switch(logFont.lfOutPrecision)
{
case OUT_CHARACTER_PRECIS:
ostr<<"fdwOutputPrecision: OUT_CHARACTER_PRECIS = 2\r\n";
break;
case OUT_DEFAULT_PRECIS:
ostr<<"fdwOutputPrecision: OUT_DEFAULT_PRECIS = 0\r\n";
break;
case OUT_DEVICE_PRECIS:
ostr<<"fdwOutputPrecision: OUT_DEVICE_PRECIS = 5\r\n";
break;
case OUT_OUTLINE_PRECIS:
ostr<<"fdwOutputPrecision: OUT_OUTLINE_PRECIS = 8\r\n";
break;
case OUT_PS_ONLY_PRECIS:
ostr<<"fdwOutputPrecision: OUT_PS_ONLY_PRECIS = 10\r\n";
break;
case OUT_RASTER_PRECIS:
ostr<<"fdwOutputPrecision: OUT_RASTER_PRECIS = 6\r\n";
break;
case OUT_STRING_PRECIS:
ostr<<"fdwOutputPrecision: OUT_STRING_PRECIS = 1\r\n";
break;
case OUT_STROKE_PRECIS:
ostr<<"fdwOutputPrecision: OUT_STROKE_PRECIS = 3\r\n";
break;
case OUT_TT_ONLY_PRECIS:
ostr<<"fdwOutputPrecision: OUT_TT_ONLY_PRECIS = 7\r\n";
break;
case OUT_TT_PRECIS:
ostr<<"fdwOutputPrecision: OUT_TT_PRECIS = 4\r\n";
break;
2012年10月31日 12点10分
13
level 11
default:
ostr<<"fdwOutputPrecision: unknown\r\n";
}
switch(logFont.lfClipPrecision)
{
case CLIP_CHARACTER_PRECIS:
ostr<<"fdwClipPrecision: CLIP_CHARACTER_PRECIS = 1\r\n";
break;
case CLIP_DEFAULT_PRECIS:
ostr<<"fdwClipPrecision: CLIP_DEFAULT_PRECIS = 0\r\n";
break;
case CLIP_DFA_DISABLE:
ostr<<"fdwClipPrecision: CLIP_DFA_DISABLE = 4<<4\r\n";
break;
case CLIP_EMBEDDED:
ostr<<"fdwClipPrecision: CLIP_EMBEDDED = 8<<4\r\n";
break;
case CLIP_LH_ANGLES:
ostr<<"fdwClipPrecision: CLIP_LH_ANGLES = 1<<4\r\n";
break;
case CLIP_MASK:
ostr<<"fdwClipPrecision: CLIP_MASK = 0xf\r\n";
break;
case CLIP_STROKE_PRECIS:
ostr<<"fdwClipPrecision: CLIP_STROKE_PRECIS = 2\r\n";
break;
case CLIP_TT_ALWAYS:
ostr<<"fdwClipPrecision: CLIP_TT_ALWAYS = 2<<4\r\n";
break;
default:
ostr<<"fdwClipPrecision: unknown\r\n";
}
switch(logFont.lfQuality)
{
case ANTIALIASED_QUALITY:
ostr<<"fdwQuality: ANTIALIASED_QUALITY = 4\r\n";
break;
case CLEARTYPE_QUALITY:
2012年10月31日 12点10分
14
level 11
ostr<<"fdwQuality: CLEARTYPE_QUALITY = 5\r\n";
break;
case CLEARTYPE_NATURAL_QUALITY:
ostr<<"fdwQuality: CLEARTYPE_NATURAL_QUALITY = 6\r\n";
break;
case DEFAULT_QUALITY:
ostr<<"fdwQuality: DEFAULT_QUALITY = 0\r\n";
break;
case DRAFT_QUALITY:
ostr<<"fdwQuality: DRAFT_QUALITY = 1\r\n";
break;
case NONANTIALIASED_QUALITY:
ostr<<"fdwQuality: NONANTIALIASED_QUALITY = 3\r\n";
break;
case PROOF_QUALITY:
ostr<<"fdwQuality: PROOF_QUALITY = 2\r\n";
break;
default:
ostr<<"fdwQuality: unknown\r\n";
}
bitset<8> b(logFont.lfPitchAndFamily);
switch(logFont.lfPitchAndFamily>>2)
{
case FF_DECORATIVE>>2:
ostr<<"fdwPitchAndFamily: FF_DECORATIVE | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
break;
case FF_DONTCARE>>2:
ostr<<"fdwPitchAndFamily: FF_DONTCARE | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
2012年10月31日 12点10分
15
level 11
break;
case FF_MODERN>>2:
ostr<<"fdwPitchAndFamily: FF_MODERN | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
break;
case FF_ROMAN>>2:
ostr<<"fdwPitchAndFamily: FF_ROMAN | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
break;
case FF_SCRIPT>>2:
ostr<<"fdwPitchAndFamily: FF_SCRIPT | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
break;
case FF_SWISS>>2:
ostr<<"fdwPitchAndFamily: FF_SWISS | ";
if(b.test(0)) ostr<<"FIXED_PICH\r\n";
else if(b.test(1)) ostr<<"VARIABLE_PITCH\r\n";
else ostr<<"DEFAULT_PITCH\r\n";
break;
default:
ostr<<"fdwPitchAndFamily: unknown\r\n";
}
ostr<<"lpszFace: "<<logFont.lfFaceName<<"\r\n";
return ostr.str();
}
2012年10月31日 12点10分
16