首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 對話框點擊「確定」直接退出未執行 OnBnClickedOk?消息映射缺失或基類調用錯誤

     編輯:程式設計綜合問答

現象:添加了 ON_BN_CLICKED(IDOK, OnBnClickedOk),點擊確定程序直接退出,斷點不進入處理函數。

常見原因與修正

  1. 消息映射宏拼寫錯誤:
    檢查 BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 之間宏大小寫、參數順序。
  2. 按鈕 ID 非 IDOK:
    屬性面板中按鈕 ID 必須為 IDOK,否則需映射自定義 ID。
  3. 未調用基類 OnOK:
    重寫 OnBnClickedOk 內必須在邏輯結束處調用 CDialogEx::OnOK(),否則對話框不會正常關閉(但這不影響函數被調用)。
  4. 類向導同步失敗:
    刪除 .ncb/.sdf 文件,重新打開類向導 (Ctrl+W) 重新映射。
  5. 預編譯頭問題:
    清理解決方案,刪除 Debug/Release 目錄,重新構建。

調試技巧

在 OnBnClickedOk 首行設置斷點,若不命中,說明消息未分發到該處理器;若命中但程序仍退出,檢查是否拋出未捕獲異常或調用 ExitProcess。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved