在MFC程序中,如何为多个按钮绑定一个事件处理函数

mostone 2011-06-17 05:28:58
另,如何在处理函数中判断,事件源按钮是哪一个.
...全文
852 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mostone 2011-06-17
  • 打赏
  • 举报
回复
Rebuild All, 现在好了,非常谢谢.
mostone 2011-06-17
  • 打赏
  • 举报
回复
#define IDC_btn0 1000
#define IDC_btn1 1001
#define IDC_btn2 1002
#define IDC_btn3 1003
#define IDC_btn4 1004
#define IDC_btn5 1005
#define IDC_btn6 1006
#define IDC_btn7 1007
#define IDC_btn8 1008
#define IDC_btn9 1009
mostone 2011-06-17
  • 打赏
  • 举报
回复
BEGIN_MESSAGE_MAP(CCalcDlg, CDialog)
//{{AFX_MSG_MAP(CCalcDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_CONTROL_RANGE(BN_CLICKED, IDC_btn0, IDC_btn9, OnNumberButtonClick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CCalcDlg::OnNumberButtonClick(UINT nID)
{
int nIndex = nID - IDC_btn0;
CString str;
str.Format(_T("Index: %d"), nIndex);
AfxMessageBox(str);
}

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_MSG(CCalcDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnNumberButtonClick(UINT nID);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

以上代码,编译通过,但运行时事件函数未执行,断点没进去,请问是哪里原因.
kyotrue 2011-06-17
  • 打赏
  • 举报
回复
在OnCommand中

int wmId, wmEvent;
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);

BN_CLICKED == wmEvent
wmId等于控件ID
进行匹配处理
内存溢出 2011-06-17
  • 打赏
  • 举报
回复
收藏了 万一哪天用到了
shenyi0106 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]
C/C++ code
afx_msg void OnButtonClick(UINT nID);

ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_XX, OnButtonClick)

void CXXXDlg::OnButtonClick(UINT nID)
{
int nIndex = nID - IDC_BUTTO……
[/Quote]
这样也行,还真没用过,学习了
Eleven 2011-06-17
  • 打赏
  • 举报
回复 1
afx_msg void OnButtonClick(UINT nID);

ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_XX, OnButtonClick)

void CXXXDlg::OnButtonClick(UINT nID)
{
int nIndex = nID - IDC_BUTTON_1;
CString str;
str.Format(_T("Index: %d"), nIndex);
AfxMessageBox(str);
}

注意ID号码连续
shenyi0106 2011-06-17
  • 打赏
  • 举报
回复
VC中一般是一个空间对应一个事件处理,不用判断来源,当然也可以像C#那样让同一类控件响应同一个函数,不过这个你要自己写,需要在OnCommand中过滤,然后定位到你的处理函数中,这里有HWND句柄,就是你的这个消息的来源

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧