今天在学习制作计算器小程序中,碰到要多个按钮共用一个事件的问题,
现记录下来.
在窗体上按钮排列
排列的时候要按顺序排放,也就是说,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号就行了.
上面的程序只有点0-9和小数点有效,其它的没有反应.