как вызвать функцию по нажатию кнопки - PullRequest
0 голосов
/ 21 октября 2018

Я хочу создать две кнопки, которые выполняют отдельные функции.

image

При нажатии button_B1 запускается Function_B1().

При нажатии button_B2 запускается Function_B2().

Как вызвать функцию при нажатии кнопки?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Спасибо, Реми.У меня просто была проблема с оператором switch:

    case WM_COMMAND:
     {  
        switch (wmId)
        {
        case 1:
            Function_B1(hWnd, wParam, lParam);
            break;

        case 2:
            Function_B2(hWnd, wParam, lParam);

            break;

        case 3:
            Function_B3(hWnd, wParam, lParam);
            break;
0 голосов
/ 21 октября 2018

Когда нажимается кнопка Win32, она отправляет уведомление BN_CLICKED в свое родительское окно, где сообщение содержит HWND и идентификатор кнопки.В wndproc родительского окна вы можете перехватить уведомление и вызвать любую функцию, для которой вы хотите, какая бы кнопка не отправляла уведомление.

case WM_COMMAND:
{
    if ((HIWORD(wParam) == BN_CLICKED) && (lParam != 0))
    {
        switch (LOWORD(wParam))
        {
            case ID_BTN1:
                Function_B1();
                break;

            case ID_BTN2:
                Function_B2();
                break;
        }
    }

    break:
}

или

case WM_COMMAND:
{
    if ((HIWORD(wParam) == BN_CLICKED) && (lParam != 0))
    {
        HWND hwndBtn = (HWND) lParam;

        if (hwndBtn == hwndBtn1)
            Function_B1();

        else if (hwndBtn == hwndBtn2)
            Function_B2();
    }

    break:
}
...