임프랍니다.
대단한 건 아닙니다만, 필요한 분이 있을지도 모르겠고.. 마땅히 팁으로 올릴 만한 것이 생각나지 않아 간단한 걸로 하나 올립니다.
현재 시스템에 설치된 폰트들의 리스트를 얻어내는 것은 Win32 API의 EnumFontFamilies() 함수와 그 함수에 인자로 넘기는 EnumFontsProc() 콜백 함수에 의존합니다. 별로 복잡하지 않으므로 그냥 소스만 올리겠습니다.
int CALLBACK EnumFontsProc(LOGFONT *lplf, TEXTMETRIC *lptm, DWORD dwType,LPARAM lpData)
{
Form1->Memo1->Lines->Add(lplf->lfFaceName);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Clear();
EnumFontFamilies(GetDC(0), NULL, (FONTENUMPROC)EnumFontsProc, NULL);
Caption = 11;
}
그럼 이만...
|
CALLBACK 함수에서 return 값을 1로 줘야 계속 callback이 발생하는데..
return값을 따로 주지 않으므로.. 쓰레기 값이 return되겠네요..
callback이 한번만 발생할수도 있구.. 아닐수도 있구.. 그렇습니다.
그리고 가능하면 callback함수에서 전역변수 접그하기보다..
Callback함수 호출할때 LParam으로 객체 Pointer를 넘겨서 처리하는것이 더 좋을것 같습니다.
다음 링크를 참조하세요
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=61164