多个按钮共用一个消息响应函数

在特殊情况下,需要多个按钮共用一个消息处理.如工具栏上的按钮,行为都类似.可以考虑用同一个消息响应函数,来减少代码的冗余.
一、在消息映射中添加关联的消息响应关系

1
2
3
4
5
BEGIN_MESSAGE_MAP(CscaleweightDlg, CDialog)
    ...
    ON_CONTROL_RANGE(BN_CLICKED, 9000, 9006, &CscaleweightDlg::OnClickedToolBar)
    ...
END_MESSAGE_MAP()

一共有7个按钮,ID分别为9000~90006
二、在.h文件中添加响应函数

1
afx_msg void OnClickedToolBar(UINT id);

三、在cpp中编写响应的函数体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void CscaleweightDlg::OnClickedToolBar(UINT ID)
{//工具栏事件处理
    NormalToolBar(ID);//其他按钮恢复正常颜色
    switch (ID)
    {
        case 9000:
             AfxMessageBox(_T("0"));
        break;
 
        case 9001:
            AfxMessageBox(_T("1"));
            break;
 
        case 9002:
            AfxMessageBox(_T("2"));
            break;
 
        case 9003:
            AfxMessageBox(_T("3"));
            break;
 
        case 9004:
            AfxMessageBox(_T("4"));
            break;
 
        case 9005:
            AfxMessageBox(_T("5"));
            break;
 
        case 9006:
            AfxMessageBox(_T("6"));
            break;
    }
     
}

根据不同的ID,确定相应的按钮动作。
多个按钮共用一个消息响应函数
















本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/1973935 ,如需转载请自行联系原作者