Happy Cat: 열두마리들의 고양이들과 함께 생활하는 개발자의 일상과 이런저런 이야기들...

리치에디트컨트롤에 일본어 약자 넣기

오늘 일과를 시작함과 동시에 메일을 열어보니 반가운 편지가 와있었습니다.
그 당시에는 일본어 학습 단어장을 만들어 볼까해서 샘플을 짜서 올렸는데
반응이 영 시원찮아서 그만둬버렸습니다... 소스를 뒤져 볼라고 했는데...
어디있는지 모르겠더라는... OTL 으허허허헉~~~ 예전홈피도 날려버리고... ㅋ
다시 하는수밖에 없네요... 메일을 잘 읽어보니 문제는 즉슨...

에디트 박스에 일본어 한자를 바로 넣을수 없다는것

리치에디트로도 바로 안들어가더군요.. 그래서 처리한 방법으로는 사용자정의 메시지를 날려버리는것이었습니다...제가 한것은 두가지 뿐입니다.

1. 우선 리치에디트 박스의 글꼴을 유니코드로 지정
2. 사용자 정의 메시지만들어서 스트링 날리기

invalid-file

파일다운로드

그럼 공부 열심히 하세요 ^_^
저도 아직 많이 부족하답니다.
관련부분 테스트한 파일을 첨부합니다.

#리치에디트 박스의 글꼴을 유니코드로 지정하는 부분
BOOL CRichMemoryDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    m_Font.CreatePointFont(100, _T("굴림"));
    m_showEdit.SetFont(&m_Font);
......

#사용자 정의 메시지 구조체
#define EM_SETTEXTEX (WM_USER + 97)
#define ST_DEFAULT 0x00000000
typedef struct _settextex {
    DWORD flags;
    UINT codepage;
} SETTEXTEX;

#사용자 정의 메시지 함수 만들어서 날리는 부분
void CRichMemoryDlg::SetUnicodeString(UINT id, LPWSTR str)
{
    SETTEXTEX setTextEx;
    setTextEx.codepage=1200;
    setTextEx.flags=ST_DEFAULT;

    CRichEditCtrl *caption=(CRichEditCtrl*)GetDlgItem(id);   
    if(caption!=NULL)
        caption->SendMessage(EM_SETTEXTEX, (WPARAM)&setTextEx,     (LPARAM)str);
}