none
CPrintDialogをアラビア語で表示する方法 RRS feed

  • 質問

  • お世話になっております。

    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
    2016年5月17日 11:25

回答

  • すみません。検証などはまったく行ってないのですが、気になる記事を見つけました。(英語ですが・・)

    https://www.microsoft.com/middleeast/msdn/faq.aspx

    こちらの情報によりますと、コモンダイアログはオーナーウィンドウのスタイルを見てアラビア語バージョンかどうかを判定するというような記述が見られました。一度、コモンダイアログのオーナーウィンドウ(ご質問のケースですとメインのダイアログ)にWS_EX_RIGHT や WS_EX_RTLREADINGのスタイルをつけて確認できますでしょうか?

    • 回答としてマーク osu 2016年5月17日 12:29
    2016年5月17日 12:07

すべての返信

  • すみません。検証などはまったく行ってないのですが、気になる記事を見つけました。(英語ですが・・)

    https://www.microsoft.com/middleeast/msdn/faq.aspx

    こちらの情報によりますと、コモンダイアログはオーナーウィンドウのスタイルを見てアラビア語バージョンかどうかを判定するというような記述が見られました。一度、コモンダイアログのオーナーウィンドウ(ご質問のケースですとメインのダイアログ)にWS_EX_RIGHT や WS_EX_RTLREADINGのスタイルをつけて確認できますでしょうか?

    • 回答としてマーク osu 2016年5月17日 12:29
    2016年5月17日 12:07
  • ご回答ありがとうございます。

    教えて頂いた記事の通り、オーナーウィンドウのスタイルで決まるようです。

    メインダイアログのOnCreateでWS_EX_LAYOUTRTLのスタイルを付けたところ、アラビア語のRtoLで表示されました。

    void CTestCPrintDialogDlg::OnBnClickedButton1()
    {
    	// TODO: ここにコントロール通知ハンドラー コードを追加します。
    	CPrintDialog dlg(TRUE);
    	dlg.DoModal();
    }

    レスポンスが早くて、大変助かりました。

    ありがとうございます。

    2016年5月17日 12:29