[MFC] 시스템의 폰트를 모두 얻는 방법
2008. 5. 2. 15:56ㆍCoders
EndUser 를 위해 간결한 폰트 설정 다이얼로그를 만들다가 여기 적어 놓는다.
참고로, 해당 코딩은 SDI 의 View
주의점
참고로, 해당 코딩은 SDI 의 View
주의점
시스템에 설치되어 있는 폰트 목록을 구하기 위해서는 EnumFontFamilies 함수로 폰트 열거를 해야 한다. 폰트
열거는 시스템의 모든 폰트 정보를 조사해야 하므로 다소 시간이 걸리며 따라서 이 작업은 응용 프로그램이 시작될 때 한번만
하며 그 결과를 전역 배열에 저장해 두고 계속 사용하게 된다. 다만 시스템의 폰트 구성이 실행중에 변경되었다면 다시 열거를
해야 하는데 그 시점이 바로 WM_FONTCHANGE 메시지를 받았을 때이다. 폰트 목록을 사용하는 프로그램은 이 메시지를
반드시 처리해야 한다.
- int CALLBACK EnumFontsProc(
- ENUMLOGFONT FAR *lpelf,
- NEWTEXTMETRIC FAR *lpntm,
- int FontType,
- LPARAM lParam)
- {
- TRACE(_T("%s\n"), (LPSTR)lpelf->elfFullName);
- //lParam 을 casting 해서 사용..
- return 1;
- }
- ...
- HDC hdc = ::GetDC(this->m_hWnd);
- TRACE(_T("************************************\n"));
- ::EnumFontFamilies(hdc, NULL, (FONTENUMPROC)EnumAddFontsProc, (LPARAM)this);
- TRACE(_T("************************************\n"));
'Coders' 카테고리의 다른 글
[MFC] Printer DC 에는 DrawIconEx API 가 먹지 않는다. (0) | 2008.05.02 |
---|---|
[MFC] HDC, CDC 얻는 방법 (0) | 2008.05.02 |
[Javascript] document.all 은 표준이 아니다. 그래서... (0) | 2008.03.28 |