Windows 10 上で、MFC の CFileDialog で作成したダイアログを小さくリサイズできない

こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、Windows 10 上で、MFC の CFileDialog クラスを利用した場合に、ダイアログのサイズを、小さくリサイズできない現象についてご紹介します。

 

概要

MFC では、「ファイルの保存」、「印刷」等の一般的なダイアログ ボックスをカプセル化したコモンダイアログ クラスが利用可能です。

コモン ダイアログ クラスは、Windows が提供しており、OS の動作に依存します。
このコモン ダイアログ クラスにある、CFileDialog クラスでは、「ファイルを開く」と「名前を付けて保存」ダイアログの二種類のファイルダイアログを表示できます。

CFileDialog クラスを Windows 10 上で利用した場合、ダイアログのサイズを大きくリサイズすることはできますが、小さくすることができません。

また、サイズを大きくした後にアプリケーションを再起動した場合、大きいサイズのまま表示されます。

- 参考情報

各クラスの詳細については、以下の技術資料をご参照ください。

  コモン ダイアログ クラス
  <https://msdn.microsoft.com/ja-jp/library/5fcd0hw9.aspx>

  CFileDialog クラス
  <https://msdn.microsoft.com/ja-jp/library/dk77e5e7.aspx>

 

状況

本現象については、Windows 10 November Update にて修正されていますので、Windows Update を実施ください。

  Windows 10 初のメジャーアップデートを本日公開
  <https://blogs.windows.com/japan/2015/11/13/first-major-update-for-windows-10-available-today/>

 

対処方法

CFileDialog クラス作成時、Vista スタイル ファイル ダイアログを使用する場合は、本現象は発生しません。

具体的には、CFileDialog::CFileDialog 関数の第八引数に指定できる bVistaStyle を TRUE に設定することによって、対処可能です。

bVistaStyle を変更した場合、ダイアログの見た目については変化はありませんが、bVistaStyle が TRUE の場合は、CFileDialog::SetTemplate 関数が利用できません。

なお、Windows 10 では Visual Studio 2005 をサポートしていませんが、もし、Visual Studio 2005 以前のバージョンで作成した場合、上記 bVistaStyle は存在しないため、有効な対処方法はありません。

 

対象製品

Windows 10

Windows 8.1 以前の OS では本現象は発生しません。