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

解決


Moomin2  2005-09-24 23:09:42  No: 59123

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

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


YuO  2005-09-25 00:36:21  No: 59124

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-25 00:37:19  No: 59125

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


Moomin2  2005-09-25 01:17:42  No: 59126

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


Moomin2  2005-09-25 01:20:03  No: 59127

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加