2009-08-24 2 views
5

다국어 입력을 허용하도록 확장 한 대형 MFC 애플리케이션이 있습니다. 지금은 사용자가 단일 대화 상자에서 편집 상자에 유니 코드 데이터를 입력 할 수 있어야합니다.MFC 앱을 유니 코드/MBCS 단위로 변환

전체 응용 프로그램에서 UNICODE 또는 MBCS를 켜지 않고이 작업을 수행 할 수 있습니까? 난 단지 순간에 변환 된 응용 프로그램의 작은 부분이 필요합니다. 이것을 조각별로 할 수 있습니까? 그렇다면 어떻게해야합니까?


설명 : GetWindowTextW()를 사용하여 유니 코드 정보를 창 밖으로 가져올 수 있습니다. 사용자가 유니 코드 텍스트를 창에 입력하는 방법을 알아 내려고 노력 중입니다. 현재 문자로 사용자가 windows-1252 코드 페이지 외부에을 입력하면 '?'로 표시됩니다. 이 문제를 해결할 수있는 방법이 있습니까?

+1

왜 유니 코드 전체를 사용할 수 없습니까? –

답변

0

그냥 생각해보십시오. 빌드를 위해 UNICODE를 켜고 필요할 때 ANSI 호출을 사용할 수 있습니다 (예 : CStringA).

(나는이 당신을 위해 옵션이되지 않을 수 있음을 이해하지만, 가치 당신이의 둘레에이 문제를 다른 방법으로 해결할 수 있다고 지적 생각)

+0

이 경우에는 그럴 수 없습니다. 사냥하고 개종시키는 데는 수만 건의 전화가 필요합니다. –

1

이 파워 포인트 슬라이드 쇼가 당신에게 관심이있을 수 있습니다 - - 조금 오래되었지만 (2000 년), 프로그램을 으로 변환하는 것에 대해 이야기합니다. ANSI/유니 코드.

Case Study: Porting an MFC Application to Unicode

4

CEdit 당신이 CreateWindowW 기능을 작성해야합니다 유니 코드 문자를 표시 할 수 있도록합니다. 방금 ANSI MFC 프로그램에서 테스트했습니다.

// allows Unicode characters 
CreateWindowW(L"EDIT", L"", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0); 

// shows Unicode characters as ? 
CreateWindow("EDIT", "", WS_CHILD|WS_VISIBLE, 10, 10, 50, 20, GetSafeHwnd(), 0, 0, 0); 

당신은 대화 상자의 OnInitDialog 기능을 수동으로 모든 편집 상자를 만들 수 있습니다. 그리고 나중에 유니 코드를 지원하는 사용자 지정 CMyEdit 클래스로 서브 클래 싱합니다.

2

이 편집 상자를 다양한 편집 컨트롤로 대체 할 수 있습니까? 그렇다면 유니 코드가 아닌 빌드에서도 국제 문자를 입력 할 수 있습니다. 내부적으로는 rtf로 인코딩되지만 컨트롤에서 텍스트를 스트리밍 할 때 SF_UNICODE 형식을 사용하여 유니 코드 표현을 얻을 수 있습니다.

관련 문제