BLOG main image
전체 (276)
[Computer] (42)
[Programming] (62)
[DBMS] (26)
[Operating System] (21)
[Study English] (8)
[For money] (28)
[Interest] (89)
«   2009/11   »
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          
77915 Visitors up to today!
Today 12 hit, Yesterday 95 hit
'완성'에 해당되는 글 1건
[폭주기관차, 2007/11/07 17:41, [Programming]/Visual C++ API/MFC]
아래와 같은 코드를 View클래스의 OnCreate 함수에 아래와 같은 글꼴 변수 함수를 수행하도록 한다.

void ChangeFont(CString strFont, int iFontSize)
{
    CHARFORMAT2    cf;
    CRichEditCtrl &ctrlRich = GetRichEditCtrl();

    cf.cbSize          = sizeof(CHARFORMAT2);
    cf.dwMask          = //  CFM_CHARSET
                           CFM_FACE
                         | CFM_SIZE
                         | CFM_OFFSET
                         | CFM_COLOR
                         | CFM_PROTECTED
                         ;
    cf.dwEffects       = CFE_PROTECTED;
   
    // 데스크탑 모니터와 노트북 모니터의 픽셀 크기를 맞추기 위함
    cf.yHeight         = MulDiv( iFontSize,GetDeviceCaps(::GetDC(HWND_DESKTOP),LOGPIXELSY),72);
    cf.yHeight        *= (1440 / GetDeviceCaps(::GetDC(HWND_DESKTOP),LOGPIXELSY));

    cf.wWeight         = FW_NORMAL;
    cf.yOffset         = 0;
    cf.crTextColor     = RGB(255, 0, 0);
//    cf.bCharSet        = JOHAB_CHARSET;                       5시간 헤매게 한 코드
    cf.bPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
   
    strcpy( cf.szFaceName, strFont );   
       
    // 기본 폰트 변경
    ctrlRich.SetDefaultCharFormat  ( cf );
}


아마 이렇게 하면 한글은 제대로 나오는데 영문이 다른 글꼴(Arial), 혹은 영어/한글 모두 다른 글꼴로
나올 수도 있다.

그 이유는 RichEdit 2.0 이상부터는 자동으로 폰트를 변경해주는 옵션이 있기 때문이다.

아래와 같은 코드를 OnCreate맨위에 작성해주면 된다.

//////////////////////////////////////////////////////////////////////////
// 자동으로 영문 폰트 변경 방지
 ctrlRich.SendMessage( EM_SETLANGOPTIONS
                     , 0
                     , (LPARAM)(ctrlRich.SendMessage( EM_GETLANGOPTIONS, 0, 0 ) & ~IMF_AUTOFONT) );


이게 왜 디폴트로 설정되어있는지 -_-
아무튼 5시간 넘은 삽질 끝에 겨우 완성^^

출처 : 데브피아 답변

Trackback Address :: http://kongmks.cafe24.com/trackback/265
ccoder | 2009/03/09 22:23 | PERMALINK | EDIT/DEL | REPLY
더블로 감사합니다
BlogIcon 폭주기관차 | 2009/04/02 18:13 | PERMALINK | EDIT/DEL
도움 되셨길 바래요~^^
dokde | 2009/06/01 02:07 | PERMALINK | EDIT/DEL | REPLY
와 정말 감사합니다.
이것때문에 밤잠설치고 있었는데
한방에 해결햇네요
BlogIcon 폭주기관차 | 2009/09/14 16:18 | PERMALINK | EDIT/DEL
아 잘 해결 되었다니 다행이네요^^
Name
Password
Homepage
Secret
*1