티스토리 뷰
다이얼로그 폰트 변경, Dialog 폰트 변경
1
2
3
4
5
6
7
8
9
10
11
12 |
CFont* m_pDlgFont; // 멤버변수
// 생성자
m_pDlgFont = new CFont();
m_pDlgFont->CreateFont(20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET
, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, _T("나눔고딕"));
// OnInitDialog()
SendMessageToDescendants(WM_SETFONT, (WPARAM)m_pDlgFont->GetSafeHandle(), 1, TRUE, FALSE);
// 소멸자
delete m_pDlgFont; |
cs |
폰트가 변경되긴 하나, 다이얼로그 크기는 변하지 않아 컨트롤에서 폰트가 잘리는 문제가 있다.
<원본>
1
2
3
4
5
6 |
// Test.rc
IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 정보"
FONT 9, "나눔고딕", 400, 0, 0x81 |
cs |
<수정본>
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
// Test.rc
#define _폰트크기12
#ifdef _폰트크기12
#define _폰트크기 12
#else
#define _폰트크기 9
#endif
IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 정보"
FONT _폰트크기, "나눔고딕", 400, 0, 0x81 |
cs |
.rc 파일에서
3행과 같이 정의 한다.
5~9행 : 3행에서 정의하면 폰트크기를 12, 정의하지 않으면 9 가 된다.
<원본> 6행을 <수정본> 14행과 같이 폰트 크기 값을 '_폰트크기' 로 코드 수정하면 폰트와 다이얼로그 크기도 변한다. ===> .rc 파일이 최종 적용된 폰트로 변하는거 같음.
이 방법은 폰트 크기를 변경할 때 마다 컴파일 해야 하는 문제가 있는데,
실행 중 다이얼로그 열기 전에 메뉴 등과 같은 곳에서 글씨 크기를 지정하면 좋은데 방법이 없나?