티스토리 뷰

프로그래밍/MFC

다이얼로그 폰트 변경

에어버스 2019. 11. 30. 23:18

다이얼로그 폰트 변경, Dialog 폰트 변경

1
2
3
4
5
6
7
8
9
10
11
12
CFont* m_pDlgFont; // 멤버변수
 
// 생성자
m_pDlgFont = new CFont();
m_pDlgFont->CreateFont(20000, 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 0017062
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 정보"
FONT 9"나눔고딕"40000x81
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 0017062
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Test 정보"
FONT _폰트크기, "나눔고딕"40000x81
cs
 

.rc 파일에서
3행과 같이 정의 한다.
5~9행 : 3행에서 정의하면 폰트크기를 12, 정의하지 않으면 9 가 된다.

<원본> 6행을 <수정본> 14행과 같이 폰트 크기 값을 '_폰트크기' 로 코드 수정하면 폰트와 다이얼로그 크기도 변한다. ===> .rc 파일이 최종 적용된 폰트로 변하는거 같음.

 

이 방법은 폰트 크기를 변경할 때 마다 컴파일 해야 하는 문제가 있는데,
실행 중 다이얼로그 열기 전에 메뉴 등과 같은 곳에서 글씨 크기를 지정하면 좋은데 방법이 없나?

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31