掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ファイルコモンダイアログを「開く」ボタンで閉じた後ShellExecuteを正常に動作させるには? (ID:70800)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
田中と申します。WinXP + VC++6.0(MFC)でプログラムを行っています。 アプリ作成中に問題が生じたため、問題を絞り込むため以下のようなダイア ログベースのテスト確認プログラムを作成しました。 /////////////////////////////////////////////////////////////////// ボタンをクリックすることによりファイルコモンダイアログを開かせる(本体 のダイアログが小さいのでファイルコモンダイアログの後ろに本体のダイア ログ全体が隠れます)。 本体のダイアログにLButtonDownメッセージハンドラを追加し、その中でAPI のShellExecuteを使ってファイル(test.txt)を開かせる。 void CTestXDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください ::ShellExecute(NULL, "Open", "test.txt", NULL, NULL, 3); CDialog::OnLButtonDown(nFlags, point); } void CTestXDlg::OnButton1() { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください CFileDialog dlgFile(TRUE); dlgFile.DoModal(); } ////////////////////////////////////////////////////////////////// 上記のプログラムで確認したところ次のような結果が生じました。 ファイルコモンダイアログを開かずに本体をクリックした場合や、コモンダ イアログを開いてキャンセルボタンで閉じた後に本体をクリックした場合に はSellExecuteで指定したファイルが開く。 ファイルコモンダイアログを開いて、その中で任意のファイルを選択して「開く」ボタンで コモンダイアログを閉じた後に本体をクリックした場合にはSellExecuteで指 定したファイルは開かない。 ShellExecuteの代わりに複数のAPI(PostMessage等)で試したところ、すべて 正常に動作しました。 また、ファイルの種類も変えて見ましたがやはり開けませんでした。 なぜ、ファイルを選択した後「開く」ボタンで閉じた時にShellExecuteの場合 だけ上記のような結果になるのか、また、その解決法についてアドバイスを いただければ幸いです。 よろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.