CBrowseFolderDialogのDoModalに関して – プログラミング – Home

通知
すべてクリア

[解決済] CBrowseFolderDialogのDoModalに関して


haru
 haru
(@haru)
ゲスト
結合: 24年前
投稿: 41
Topic starter  

Area of VC++ Tipsより
フォルダ選択ダイアログクラス(CBrowseFolderDialog)
をダウンロードして使わせて頂いております。
http://rararahp.cool.ne.jp/vc/class/browseFolderDialog.htm)
質問ですが以下のような使い方を下のですが、モーダルではなくモードレスにて動作します。
----------------------------------
CBrowseFolderDialog dlg;
dlg.DoModal(lpszSamplePath); // lpszはサンプルのパスです
----------------------------------
呼び出し元のダイアログが閉じられても残ってしまうという問題があるため
対処したいと思います。
対応された方いらっしゃいましたらご教授よろしくお願い致します。
CBrowseFolderDialog::Modal()
のBROWSEINFO bi;にて指定可能ではないかと予想しているのですが(というかそれ以外に
さわる場所が見あたらないのですが)、なかなか上手く行きません。
よろしくお願い致します。


引用未解決
トピックタグ
nyaine
 nyaine
(@nyaine)
ゲスト
結合: 20年前
投稿: 1
 

> 呼び出し元のダイアログが閉じられても残ってしまうという問題があるため
> 対処したいと思います。

CBrowseFolderDialogをメンバ変数に宣言して、親ウィンドウが閉じられた時のイベントに
EndDialogもしくはSendMessageで終了のメッセージを飛ばすだけで出来たと思います。


返信引用
haru
 haru
(@haru)
ゲスト
結合: 24年前
投稿: 41
Topic starter  

nyaine さん
ご回答ありがとうございます。確かにモーダルダイアログを実現しなくても、モードレス
としてダイアログを削除すればいいだけの問題ですね。(失念しておりました)
ありがとうございました。


返信引用
haru
 haru
(@haru)
ゲスト
結合: 24年前
投稿: 41
Topic starter  

追記>>

呼び出し元のm_hWndをCBrowseFolderDialogのメンバ変数に設定するAPIを追加して
CBrowseFolderDialog::Modal()のbi.hwndOwnerを設定する処理を以下の通り変更すること
で対応致しました。

if ( m_Owner == NULL )
bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();//hWnd;
else
bi.hwndOwner = m_Owner;

以上です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました