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

MFC 對話框按鈕無響應:資源 ID 與消息映射不匹配

     編輯:程式設計綜合問答

常見原因

複製他人代碼時,資源編輯器中的控件 ID(如 IDC_BUTTON1)與類向導生成的消息映射條目(ON_BN_CLICKED(IDC_BUTTON1, ...))未正確關聯,導致點擊無反應。

排查步驟

  1. 打開資源視圖,確認按鈕 ID 名稱(如 IDC_BUTTON3)。
  2. 在類視圖中右鍵對話框類 →「添加事件處理程序」→ 選擇該按鈕 ID → BN_CLICKED → 自動生成 OnBnClickedButton3 並寫入映射。
  3. 檢查 BEGIN_MESSAGE_MAP 區塊是否包含對應宏。
  4. 確認 DoDataExchange 中無誤(按鈕通常不需 DDX)。

代碼片段修正

// 對話框頭文件
afx_msg void OnBnClickedButton3(); // 必須聲明

// 對話框cpp
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
    ON_BN_CLICKED(IDC_BUTTON3, &CMFCApplication2Dlg::OnBnClickedButton3)
    // ... 其他按鈕
END_MESSAGE_MAP()

void CMFCApplication2Dlg::OnBnClickedButton3() {
    // 你的業務邏輯
}

建議做法

重新建立對話框資源與類,由向導生成骨架,再將業務代碼遷移進對應處理函數,避免手動維護映射出錯。

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