- - PR -
オーナードローにした場合に表示される文字化けについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-21 17:40
いつもお世話になっております。
VS2005 C++を使用しており、オーナードローによって設定した ボタンのキャプションを表示させようとしたところ、実行時に日本語が文字化け状態になり正しく表示させることができません。 ただし、英語での表記には特に問題なく、またMessageBoxを使用した日本語表記にも問題がありません。さらには、オーナードローを使用しない場合にも日本語、英語とも問題がありません。 オーナードローを使用して、日本語を表示させたい場合にはどのようにすればよろしいのでしょうか?なにかスタイルを設定するべきですか? ちなみに、プロジェクトのキャラクタセットはMulti-Byteであり、ストリングテーブルの言語は日本語に設定してあります。 なお、ボタンのプロパティをわざと使わずに、(CButtonの継承クラス).SetWindowText("テスト")としても 文字化け状態になりました。OSはWindows XP 日本語版です。 対策をご存知の方、よろしくお願いします。 | ||||
|
投稿日時: 2008-01-21 18:56
こんばんは。
フォントは疑ってみましたか? 文字列を描画(CDC::DrawText?)する前に 明示的にフォントを指定していますか? CWnd::GetFontで取得したフォントを、 デバイスコンテキストに対してCDC::SelectObjectで設定してやるのが筋だと思います。 | ||||
|
投稿日時: 2008-01-22 11:22
ご返信ありがとうございます。
おっしゃるとおりフォントが原因でした。 ちなみに、多言語対応アプリケーションを使用したい場合に 使用すべきフォントは一般的に何が推進されているのでしょうか? | ||||
|
投稿日時: 2008-01-22 11:58
どのような目的のフォントかによりますが、原則として以下のいずれかでしょう。 ・ユーザが任意に指定できるようにする。 ・ストックフォントを利用する。 ・MS UI Gothicを利用する。 今回はボタンの文字列と言うことなので、ストックフォントからSYSTEM_FONTを取得するのが理想だと思います。 ストックフォントを取得するには、GetStockObjectを使用します。 [ メッセージ編集済み 編集者: 甕星 編集日時 2008-01-22 11:59 ] | ||||
|
投稿日時: 2008-01-22 13:51
了解です。
貴重な情報ありがとうございました。 |
1