トップ回答者
CPrintDialogをアラビア語で表示する方法

質問
-
お世話になっております。
CPrintDialog(コモンダイアログ)の表示言語について、質問させて下さい。
表示言語をアラビア語に設定したWindowsで、CPrintDialogを呼び出すと、英語で表示されてしまいます。
アラビア語のRtoLレイアウトで表示する方法をご存知ないでしょうか?
検証は、以下のような簡単なアプリで実施しています。
1.VisualStudioで、MFCアプリケーションのダイアログベースで、作成したプロジェクト
2.実装は、メインのダイアログにボタンを配置し、ボタン押下でCPrintDialogを呼び出すだけ
3.CPrintDialogの呼び出し部は以下の通り
void CTestCPrintDialogDlg::OnBnClickedButton1() { // TODO: ここにコントロール通知ハンドラー コードを追加します。 CPrintDialog dlg(TRUE); dlg.DoModal(); }
検証は以下の2つのWindowsで実施しました。
Windows 7 (アラビア語)
Windows 8.1 (日本語環境に、言語パックでアラビア語をインストールしたもの)
開発環境は、以下です。
VisualStudio2010
Windows 7(x86) 日本語
また、アラビア語以外の言語(例 トルコ語、日本語、etc...)では、ローカライズされて表示されます。
具体的な方法でなくても、何か気になる点や検証すべき事があれば教えて下さい。
よろしくお願い致します。
- 編集済み osu 2016年5月17日 11:27
回答
-
すみません。検証などはまったく行ってないのですが、気になる記事を見つけました。(英語ですが・・)
https://www.microsoft.com/middleeast/msdn/faq.aspx
こちらの情報によりますと、コモンダイアログはオーナーウィンドウのスタイルを見てアラビア語バージョンかどうかを判定するというような記述が見られました。一度、コモンダイアログのオーナーウィンドウ(ご質問のケースですとメインのダイアログ)にWS_EX_RIGHT や WS_EX_RTLREADINGのスタイルをつけて確認できますでしょうか?
- 回答としてマーク osu 2016年5月17日 12:29
すべての返信
-
すみません。検証などはまったく行ってないのですが、気になる記事を見つけました。(英語ですが・・)
https://www.microsoft.com/middleeast/msdn/faq.aspx
こちらの情報によりますと、コモンダイアログはオーナーウィンドウのスタイルを見てアラビア語バージョンかどうかを判定するというような記述が見られました。一度、コモンダイアログのオーナーウィンドウ(ご質問のケースですとメインのダイアログ)にWS_EX_RIGHT や WS_EX_RTLREADINGのスタイルをつけて確認できますでしょうか?
- 回答としてマーク osu 2016年5月17日 12:29
-
ご回答ありがとうございます。
教えて頂いた記事の通り、オーナーウィンドウのスタイルで決まるようです。
メインダイアログのOnCreateでWS_EX_LAYOUTRTLのスタイルを付けたところ、アラビア語のRtoLで表示されました。
void CTestCPrintDialogDlg::OnBnClickedButton1() { // TODO: ここにコントロール通知ハンドラー コードを追加します。 CPrintDialog dlg(TRUE); dlg.DoModal(); }
レスポンスが早くて、大変助かりました。
ありがとうございます。