Win32 处理多个按钮共用一个事件消息

今天在学习制作计算器小程序中,碰到要多个按钮共用一个事件的问题,

现记录下来.

在窗体上按钮排列

Win32 处理多个按钮共用一个事件消息

 

 排列的时候要按顺序排放,也就是说,0-9的ID号要连着的.

#define IDD_DIALOG1                     101
#define IDC_BTN_1                       1001
#define IDC_BTN_2                       1002
#define IDC_BTN_3                       1003
#define IDC_BTN_4                       1004
#define IDC_BTN_5                       1005
#define IDC_BTN_6                       1006
#define IDC_BTN_7                       1007
#define IDC_BTN_8                       1008
#define IDC_BTN_9                       1009
#define IDC_BTN_10                      1010
#define IDC_BTN_11                      1011
#define IDC_BTN_12                      1012
#define IDC_BTN_13                      1013
#define IDC_BTN_14                      1014
#define IDC_BTN_15                      1015
#define IDC_BTN_16                      1016
#define IDC_BTN_17                      1017
#define IDC_BTN_18                      1018
#define IDC_BTN_19                      1019
#define IDC_EDIT1                       1020

 

在WM_COMMAND消息中去捕获

 

CString str;
void OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
    UINT btnId = LOWORD(wParam);
    HWND hBtn = (HWND)lParam;
    HWND hEdit = GetDlgItem(hWnd, IDC_EDIT1);
    
    //数字0-9,小数点按钮消息
    if (btnId >= IDC_BTN_1 && btnId <= IDC_BTN_11)
    {
        CString tem;
        GetWindowText(hBtn, tem.GetBuffer(), 4);//根据按下的数字按钮获得相应的数字字符
        str.Format(TEXT("%s%s"), str, tem);
        SetWindowText(hEdit, str);
    }

    //处理+-*/运算符按钮
    if (btnId >= IDC_BTN_12 && btnId <= IDC_BTN_15)
    {

    }
}

原来用swith语句的,但是出现了case 不能判断>=格式,所以只能用if语句了,

其他的同样的道理,要操作哪几个按钮,只要把它们的ID号连着,用if语句判断是否在指定的范围内的ID号就行了.

Win32 处理多个按钮共用一个事件消息

 

 上面的程序只有点0-9和小数点有效,其它的没有反应.

 

上一篇:全国大型数据中心分布简析


下一篇:IDC报告:2020年阿里云领跑中国金融云市场