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

Posted 初吻给了烟灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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号就行了.

 

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

 

以上是关于Win32 处理多个按钮共用一个事件消息的主要内容,如果未能解决你的问题,请参考以下文章

win32编程里,ransMessage()和DispatchMessage()是干嘛的

c语言 win32api 创建一个按钮,点击按钮后,按钮消失?

十万火急:VC中,能不能集中处理多个按钮(控件)的事件?

Win32 消息处理程序错误传播

win32day04-Win32消息机制

在同一个片段中实现多个事件监听器 - Android