VC++でダイアログベースでボタンを押下したときに
ファイル選択画面を表示するようにしてますが、
このとき、後に隠れている親ダイアログの操作ができてしまいます。
(ファイル選択画面が二重、三重起動できちゃいます)
OPENFILENAME構造体の2番目の変数に
親ハンドルを設定しなければならないようなのですが、
親ハンドルをどうやって取得するのかわかりません。
初歩的な質問だと思いますがよろしくお願いします。
>VC++でダイアログベース
MFCでしょうか?
>OPENFILENAME構造体
ということは、CFileDialogではなく、GetOpenFileName/GetSaveFileName
を使用しているのでしょうか?
MFCであれば、
GetOpenFileName/GetSaveFileNameの場合
CXXXDlgクラスのメンバ変数のm_hWnd
もしくはGetSafeHwndメソッドでハンドルを取得できます。
CFileDialogの場合、最後の引数にthisを指定すればいいです。
解決しました!!
ありがとうございました。
訂正)
>CFileDialogの場合、最後の引数にthisを指定すればいいです。
はコンストラクタでの話です。
さらにMFCのバージョンによって引数が違うようです。
VC6までのMFCであれば、最後の引数がpParentWnd になるのですが、
VC2003以降のMFCの場合、最後の引数ではないようです。
VC++6
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/vcmfc98/html/_mfc_cfiledialog.3a3a.cfiledialog.asp
VC++2002以降
http://msdn.microsoft.com/library/ja/default.asp?url=/library/en-
us/vclib/html/_mfc_cfiledialog.3a3a.cfiledialog.asp
ということで、環境によって記述の仕方が変わる可能性があるため、
ご自分の環境は必ず明記してください。