2009-08-24 7 views
5

Mam dużą aplikację MFC, którą rozszerzam, aby umożliwić wprowadzanie wielojęzyczne. W tej chwili muszę pozwolić użytkownikowi na wprowadzenie danych Unicode w polach edycji w jednym oknie dialogowym.Kawałkowa konwersja aplikacji MFC na Unicode/MBCS

Czy istnieje sposób, aby to zrobić bez włączania UNICODE lub MBCS dla całej aplikacji? Potrzebuję tylko niewielkiej części przekształconej aplikacji. Czy można to zrobić w całości, a jeśli tak, to w jaki sposób?


Wyjaśnienie: Mogę użyć :: GetWindowTextW(), aby uzyskać informacje Unicode z okna. Próbuję dowiedzieć się, jak zezwolić użytkownikowi na wprowadzenie tekstu Unicode w oknie. Obecnie znaki użytkownik typ poza stroną kodową Windows-1252 wyświetlają się jako "?". Czy istnieje sposób, aby to naprawić?

+1

Dlaczego nie możesz po prostu przejść do pełnego kodu Unicode? –

Odpowiedz

0

Pomyślnie - możesz spróbować włączyć UNICODE dla swojej kompilacji i używać wywołań ANSI tam, gdzie musisz (np. CStringA).

(Rozumiem, że to nie może być rozwiązaniem dla ciebie, ale pomyślałem, że warto zwrócić uwagę, że można rozwiązać ten problem na odwrót)

+0

Nie mogę tego zrobić w tym przypadku. Będą dziesiątki tysięcy wezwań do polowania i nawracania. –

4

Aby umożliwić CEdit pokazać znaków Unicode należy go utworzyć z CreateWindowW funkcji. Właśnie przetestowałem to w programie 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); 

Można by utworzyć wszystkie pola edycji ręcznie w oknie dialogowym funkcji OnInitDialog z. A później podklasuj je do niestandardowej klasy CMyEdit z obsługą Unicode.

2

Czy można zastąpić te pola edycyjne bogatymi formantami edycji? Wtedy możesz wprowadzić znaki międzynarodowe nawet w nie-Unicode; wewnętrznie, zostaną zakodowane rtf, ale kiedy wyślesz tekst z kontrolki, możesz użyć formatu SFU_UNICODE, aby uzyskać reprezentację Unicode.