ファイル選択画面で親ダイアログが操作できる。

[戻る]
sum42(超初心者) 2007/03/12(月) 17:03:05
VC++でダイアログベースでボタンを押下したときに
ファイル選択画面を表示するようにしてますが、
このとき、後に隠れている親ダイアログの操作ができてしまいます。
(ファイル選択画面が二重、三重起動できちゃいます)

OPENFILENAME構造体の2番目の変数に
親ハンドルを設定しなければならないようなのですが、
親ハンドルをどうやって取得するのかわかりません。
初歩的な質問だと思いますがよろしくお願いします。

Blue 2007/03/12(月) 17:10:03
>VC++でダイアログベース
MFCでしょうか?

>OPENFILENAME構造体
ということは、CFileDialogではなく、GetOpenFileName/GetSaveFileName
を使用しているのでしょうか?

MFCであれば、
GetOpenFileName/GetSaveFileNameの場合
CXXXDlgクラスのメンバ変数のm_hWnd 
もしくはGetSafeHwndメソッドでハンドルを取得できます。

CFileDialogの場合、最後の引数にthisを指定すればいいです。

sum42(超初心者) 2007/03/12(月) 17:17:13
[[解決]]
解決しました!!
ありがとうございました。

Blue 2007/03/12(月) 17:17:41
訂正)
>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


ということで、環境によって記述の仕方が変わる可能性があるため、
ご自分の環境は必ず明記してください。

古いスレッドには追加発言できません。