- ベストアンサー
【VC++2005(CLR)】ダイアログ呼び出し元ダイアログを手前に表示させたい
VC++初心者です。 現在、VC++ express edition、CLRプロジェクトでコーディングしております。 いろいろな方の力を借りて、モードレスでダイアログ(子ダイアログ)を 呼び出しだすことができました。ありがとうございました。 しかしながら、常にその子ダイアログが呼び出し元ダイアログ(親ダイアログ)の手前に 表示されてしまいます。 各ダイアログがクリックされるたびに、クリックされたダイアログが手前に表示する ようにできませんでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
回答を読んでいただいていますか? 親フォームとして設定しなければ、 >所有する側のフォームの背面に表示すること は可能です。 あとは、自力で親フォームを最小化/最大化/アイコン化したとき、子フォームの動きを処理すればいいだけです。 (親フォームが×ボタンだけであれば、メンバ変数になっているので、親フォームを閉じるときに、勝手に子フォームは閉じる)
その他の回答 (2)
- bluecampus
- ベストアンサー率66% (138/209)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.owner(VS.80).aspx より >gcnew Form2(this); という指定の場合はOwnerウィンドウになるので、そういう仕様になります。 gcnew Form2(); としても問題ないようであればそれでもいいでしょう。 つまり >所有している側のフォームと連動して最小化したり閉じたりします。 という動きではなくなる。
お礼
毎回、ご教授ありがとうございます。 http://okwave.jp/qa4865001.html で教えていただいたように、現在私は、 親ダイアログから子ダイアログを コントロール(開く、閉じる)をしています。 紹介されたページを拝見して、所有される側のフォームを 所有する側のフォームの背面に表示することはできないことを 初めて知りました。 これはVCの仕様なので、今回の私のやりたいことは実現できないよう ですね。何か良い方法はないのでしょうか。
- machongola
- ベストアンサー率60% (434/720)
こんにちは。 クリックイベント内で、BringToFront()を呼び出して見てはいかがでしょうか。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.form_members(VS.80).aspx
補足
ご回答、ありがとうございます。 実は私もクリックイベントの中に BringToFrong()を使って試してみたのですが、 やりたい事ができませんでした。 http://okwave.jp/qa4865001.html で教えていただいたように、親ダイアログから子ダイアログを コントロールしているので、できないようです。
お礼
ご指摘、ありがとうございます。 this->childForm_ = gcnew Form2(); this->childForm_->Show(this); と書いていたため、親ダイアログが前面に出てくれませんでした。 this->childForm_ = gcnew Form2(); this->childForm_->Show(); show()としたことによって、問題が解決しました。 ありがとうございました!