xボタンを無効にするには?

解決


Moomin2  2005-09-24 14:09:42  No: 59123  IP: 192.*.*.*

ダイアログの右上にあるxボタン(終了ボタン)をある処理が終わるまで無効にしたいのですがどうすればよろしいでしょうか?
ある処理を行っているときに、×ボタンを連打されるとウィンドウズのエラーメッセージが出てアプリケーションが落ちます。それを回避するために、無効にしたいのです。お手数ですがよろしくお願いします。

※GetDlgItem(IDC_xxxx)->EnableWindow(FALSE);で行おうと思ったのですが、xボタンのIDが分からなかったのでできませんでした。

編集 削除
YuO  2005-09-24 15:36:21  No: 59124  IP: 192.*.*.*

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

編集 削除
YuO  2005-09-24 15:37:19  No: 59125  IP: 192.*.*.*

CWnd::GetSystemMenuのURLを削りすぎていました。
こっちが正解です。
http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_cwnd.3a3a.getsystemmenu.asp

編集 削除
Moomin2  2005-09-24 16:17:42  No: 59126  IP: 192.*.*.*

//  システムメニューのハンドルを取得
    CMenu*  pMenu = AfxGetMainWnd()->GetSystemMenu( FALSE );
    //  クローズを無効化
    pMenu->EnableMenuItem( SC_CLOSE, MF_DISABLED );

編集 削除
Moomin2  2005-09-24 16:20:03  No: 59127  IP: 192.*.*.*

Yu0さん
ご回答ありがとうございます。
上記、記述のようにコード書いてみました。結果、クローズボタンが無効化になりました。ありがとうございました。

編集 削除