5

多言語入力を可能にするために拡張している大規模な MFC アプリケーションがあります。現時点では、ユーザーが 1 つのダイアログの編集ボックスに Unicode データを入力できるようにする必要があります。

アプリケーション全体で UNICODE または MBCS を有効にせずにこれを行う方法はありますか? 現時点では、アプリケーションのごく一部のみを変換する必要があります。これを区分的に行うことは可能ですか?


明確化: ::GetWindowTextW() を使用して、ウィンドウから Unicode 情報を取得できます。ユーザーがウィンドウに Unicode テキストを入力できるようにする方法を見つけようとしています。現在、 windows-1252 コードページ以外でユーザーが入力した文字は、 '?' として表示されます。これを修正する方法はありますか?

4

4 に答える 4

4

CEditUnicode 文字を表示できるようにするには、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ダイアログ ボックスの機能ですべての編集ボックスを手動で作成できます。その後、Unicode をサポートするカスタム CMyEdit クラスにサブクラス化します。

于 2009-08-24T15:52:14.703 に答える
2

これらの編集ボックスを豊富な編集コントロールに置き換えることはできますか?そうすれば、Unicode以外のビルドでも国際文字を入力できます。内部的にはrtfでエンコードされますが、コントロールからテキストをストリーミングするときに、SF_UNICODE形式を使用してUnicode表現を取得できます。

于 2009-08-24T15:58:50.997 に答える
1

少し古い (2000 年) ですが、プログラムを混合ANSI/Unicodeに変換する方法について説明しています。

ケース スタディ: MFC アプリケーションの Unicode への移植

于 2009-08-24T15:13:14.410 に答える
0

ちょっと考えてみてください - ビルドで UNICODE をオンにして、必要な場所で ANSI 呼び出しを使用することができます (例: CStringA)。

これはあなたにとって選択肢ではないかもしれないことを理解していますが、この問題に逆の方法で取り組むことができることを指摘する価値があると思いました

于 2009-08-24T15:02:49.323 に答える