• ベストアンサー

【VC++2005(CLR)】ダイアログ右上の最小化、最大化、閉じるボタンの制御の仕方を教えてください。

VC++初心者です。 たびたび、お世話になっております。 現在、VC++2005 Express Edition、CLRのプロジェクトで コーディングしています。 基本的な質問だと思いますが、ダイアログ右上に配置される 最小化、最大化、閉じるボタンの制御の仕方を 教えていただけませんでしょうか。 具体的にはやりたいことは、以下のようなものです。 ・閉じるボタンを押されたら、MessageBoxを表示させる。 ・他のダイアログのボタンから別のダイアログの最大化ボタンが  押されたことと同じ動作をする。

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

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

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にするだけですが。 (そもそも、親フォームに最大化ボタンは必要あるか。)

yuki7091
質問者

補足

ご指摘、ありがとうございます。 私の質問内容が不明確ですみませんでした。 >>・閉じるボタンを押されたら、MessageBoxを表示させる。 とは、 あくまで動作イメージなのですが ×ボタンが押されたら、「アプリを終了しますか?YES/NO」と書かれた メッセージダイアログを出現させてアプリを終了させるかどうかの 操作を加えたいと考えています。 (この場合は、FormClosingのタイミングで動作させれば宜しいでしょうか。) また、 >>・他のダイアログのボタンから別のダイアログの最大化ボタンが >> 押されたことと同じ動作をする。 とは、 http://okwave.jp/qa4877962.html の延長なのですが、現在親フォームから子フォームを呼び出して 親フォームに設置したボタンから子フォームを最大化、最小化、 元のサイズ戻すということをしたいと考えています。 (親フォームから子フォームをコントロールしたいです。)

その他の回答 (2)

回答No.3

キーワードが出ているので少しは検索してみましょう。 >子フォームを最大化、最小化、元のサイズ戻す ↓ >WindowStateプロパティ http://msdn.microsoft.com/ja-jp/library/system.windows.window.windowstate.aspx >ウィンドウが元のサイズに戻されているか、最小化されているか、最大化されているかを示す値を取得または『設定します』。これは、依存関係プロパティです。 // 最小化 this->childform_->WindowState = FormWindowState::Minimized; // 最大化 Maximized // 元に戻す : Normal

yuki7091
質問者

お礼

ありがとうございます。 できました! MSDNのページには他の件でも何度もアクセスしています。 まだまだ私には難しくて、他のページを参照することが多々ありますが、 MSDNのページは一番有益なページだと思うので、 使いこなせるようにがんばります。

  • wathavy
  • ベストアンサー率22% (505/2263)
回答No.1

とりあえず、 ×は、以下でダイアログ表示するようになります。 WM_DESTROY をオーバーロードします。 void CSysDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: ここにメッセージ ハンドラ コードを追加します。 CAboutDlg dlgAbout; dlgAbout.DoModal(); } なお、上記は、面倒だったので、Aboutダイアログを表示しています。 他は、意味がよくわからないのですが・・・。

yuki7091
質問者

補足

ご回答、ありがとうございます。 No2さんからもご指摘がありましたように、 教えていただいたのはMFCの書き方のようですね。 (今回教えて頂着たかったのは、作成するVC++のCLRで プロジェクトでした。) しかしながら、VC++6.0も使用しているので、 紹介していただいたソースを参考にさせて頂きます。

関連するQ&A

専門家に質問してみよう