- ベストアンサー
【VC++2005(CLR)】ダイアログ右上の最小化、最大化、閉じるボタンの制御の仕方を教えてください。
VC++初心者です。 たびたび、お世話になっております。 現在、VC++2005 Express Edition、CLRのプロジェクトで コーディングしています。 基本的な質問だと思いますが、ダイアログ右上に配置される 最小化、最大化、閉じるボタンの制御の仕方を 教えていただけませんでしょうか。 具体的にはやりたいことは、以下のようなものです。 ・閉じるボタンを押されたら、MessageBoxを表示させる。 ・他のダイアログのボタンから別のダイアログの最大化ボタンが 押されたことと同じ動作をする。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1さんMFCではないですよ。 最大化、最小化は FormのResizeイベントでWindowStateプロパティを見ればわかります。 System::Void Form1_Resize(System::Object^ sender, System::EventArgs^ e) { if (this->WindowState == FormWindowState::Maximized) { MessageBox::Show(L"最大化"); } else if (this->WindowState == FormWindowState::Minimized) { MessageBox::Show(L"最小化"); } } ×ボタンで閉じるはFormClosingやFormClosedあたりのイベントで。 >・他のダイアログのボタンから別のダイアログの最大化ボタンが > 押されたことと同じ動作をする。 とは? この前の子フォームのと関連しているということでしょうか? 最小化時にに子フォームのVisibleプロパティをfalseに、最小化が解除されたとき(=最大化だけとは限らない)にtrueにするだけですが。 (そもそも、親フォームに最大化ボタンは必要あるか。)
その他の回答 (2)
- bluecampus
- ベストアンサー率66% (138/209)
キーワードが出ているので少しは検索してみましょう。 >子フォームを最大化、最小化、元のサイズ戻す ↓ >WindowStateプロパティ http://msdn.microsoft.com/ja-jp/library/system.windows.window.windowstate.aspx >ウィンドウが元のサイズに戻されているか、最小化されているか、最大化されているかを示す値を取得または『設定します』。これは、依存関係プロパティです。 // 最小化 this->childform_->WindowState = FormWindowState::Minimized; // 最大化 Maximized // 元に戻す : Normal
お礼
ありがとうございます。 できました! MSDNのページには他の件でも何度もアクセスしています。 まだまだ私には難しくて、他のページを参照することが多々ありますが、 MSDNのページは一番有益なページだと思うので、 使いこなせるようにがんばります。
- wathavy
- ベストアンサー率22% (505/2263)
とりあえず、 ×は、以下でダイアログ表示するようになります。 WM_DESTROY をオーバーロードします。 void CSysDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: ここにメッセージ ハンドラ コードを追加します。 CAboutDlg dlgAbout; dlgAbout.DoModal(); } なお、上記は、面倒だったので、Aboutダイアログを表示しています。 他は、意味がよくわからないのですが・・・。
補足
ご回答、ありがとうございます。 No2さんからもご指摘がありましたように、 教えていただいたのはMFCの書き方のようですね。 (今回教えて頂着たかったのは、作成するVC++のCLRで プロジェクトでした。) しかしながら、VC++6.0も使用しているので、 紹介していただいたソースを参考にさせて頂きます。
補足
ご指摘、ありがとうございます。 私の質問内容が不明確ですみませんでした。 >>・閉じるボタンを押されたら、MessageBoxを表示させる。 とは、 あくまで動作イメージなのですが ×ボタンが押されたら、「アプリを終了しますか?YES/NO」と書かれた メッセージダイアログを出現させてアプリを終了させるかどうかの 操作を加えたいと考えています。 (この場合は、FormClosingのタイミングで動作させれば宜しいでしょうか。) また、 >>・他のダイアログのボタンから別のダイアログの最大化ボタンが >> 押されたことと同じ動作をする。 とは、 http://okwave.jp/qa4877962.html の延長なのですが、現在親フォームから子フォームを呼び出して 親フォームに設置したボタンから子フォームを最大化、最小化、 元のサイズ戻すということをしたいと考えています。 (親フォームから子フォームをコントロールしたいです。)