• ベストアンサー

【VC++2005(CLR)】ダイアログ呼び出し元ダイアログを手前に表示させたい

VC++初心者です。 現在、VC++ express edition、CLRプロジェクトでコーディングしております。 いろいろな方の力を借りて、モードレスでダイアログ(子ダイアログ)を 呼び出しだすことができました。ありがとうございました。 しかしながら、常にその子ダイアログが呼び出し元ダイアログ(親ダイアログ)の手前に 表示されてしまいます。 各ダイアログがクリックされるたびに、クリックされたダイアログが手前に表示する ようにできませんでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

回答を読んでいただいていますか? 親フォームとして設定しなければ、 >所有する側のフォームの背面に表示すること は可能です。 あとは、自力で親フォームを最小化/最大化/アイコン化したとき、子フォームの動きを処理すればいいだけです。 (親フォームが×ボタンだけであれば、メンバ変数になっているので、親フォームを閉じるときに、勝手に子フォームは閉じる)

yuki7091
質問者

お礼

ご指摘、ありがとうございます。 this->childForm_ = gcnew Form2(); this->childForm_->Show(this); と書いていたため、親ダイアログが前面に出てくれませんでした。 this->childForm_ = gcnew Form2(); this->childForm_->Show(); show()としたことによって、問題が解決しました。 ありがとうございました!

その他の回答 (2)

回答No.2

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.owner(VS.80).aspx より >gcnew Form2(this); という指定の場合はOwnerウィンドウになるので、そういう仕様になります。 gcnew Form2(); としても問題ないようであればそれでもいいでしょう。 つまり >所有している側のフォームと連動して最小化したり閉じたりします。 という動きではなくなる。

yuki7091
質問者

お礼

毎回、ご教授ありがとうございます。 http://okwave.jp/qa4865001.html で教えていただいたように、現在私は、 親ダイアログから子ダイアログを コントロール(開く、閉じる)をしています。 紹介されたページを拝見して、所有される側のフォームを 所有する側のフォームの背面に表示することはできないことを 初めて知りました。 これはVCの仕様なので、今回の私のやりたいことは実現できないよう ですね。何か良い方法はないのでしょうか。

回答No.1

 こんにちは。  クリックイベント内で、BringToFront()を呼び出して見てはいかがでしょうか。  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form_members(VS.80).aspx

yuki7091
質問者

補足

ご回答、ありがとうございます。 実は私もクリックイベントの中に BringToFrong()を使って試してみたのですが、 やりたい事ができませんでした。 http://okwave.jp/qa4865001.html で教えていただいたように、親ダイアログから子ダイアログを コントロールしているので、できないようです。

関連するQ&A