안녕하세요! 담비입니다.
폰트명을 구하는 경우는 다음과 같이 합니다.
void __fastcall TForm1::GetFontNames(void)
{
HDC hDC = GetDC(0);
void* cTmp = (void*)ComboBox1->Items;
EnumFonts(hDC, NULL, (FONTENUMPROC)EnumFontsProc, (long) cTmp);
ReleaseDC(0, hDC);
FontName->Stored = True;
}
EnumFonts라는 API는 현재 컴퓨터의 폰트명들을 핸들로 받아 이것을 나열해
줍니다. EnumFontsProc는 EnumFonts로부터 폰트 데이터를 받아서 처리하는
Application callback함수입니다.
int __stdcall EnumFontsProc(TLogFontA &LogFont, TTextMetricA
& /*TextMetric*/, int /*FontType*/, Pointer Data)
{
TCharsetObject *FontCharset;
FontCharset = new TCharsetObject((int)LogFont.lfCharSet);
((TStrings*)Data)->AddObject((AnsiString)LogFont.lfFaceName,
FontCharset);
return 1;
}
정보문화사의 알기쉬운 Borland C++ 3를 참고했습니다.
|