ダイアログの右上にあるxボタン(終了ボタン)をある処理が終わるまで無効にしたいのですがどうすればよろしいでしょうか?
ある処理を行っているときに、×ボタンを連打されるとウィンドウズのエラーメッセージが出てアプリケーションが落ちます。それを回避するために、無効にしたいのです。お手数ですがよろしくお願いします。
※GetDlgItem(IDC_xxxx)->EnableWindow(FALSE);で行おうと思ったのですが、xボタンのIDが分からなかったのでできませんでした。
CWnd::GetSystemMenuでシステムメニューのCMenuへのポインタを取得して,
http://library/en-us/vclib/html/_mfc_cwnd.3a3a.getsystemmenu.asp
EnableMenuItemでSC_CLOSEを無効化します。
http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_CMenu.3a3a.EnableMenuItem.asp
CWnd::GetSystemMenuのURLを削りすぎていました。
こっちが正解です。
http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_cwnd.3a3a.getsystemmenu.asp
// システムメニューのハンドルを取得
CMenu* pMenu = AfxGetMainWnd()->GetSystemMenu( FALSE );
// クローズを無効化
pMenu->EnableMenuItem( SC_CLOSE, MF_DISABLED );
Yu0さん
ご回答ありがとうございます。
上記、記述のようにコード書いてみました。結果、クローズボタンが無効化になりました。ありがとうございました。
ツイート | ![]() |