Созднаю кнопку со стилем ws_Child or ws_Visible or bs_PushButton or ws_TabStop и заголовком &A Буква подчёркивается, но реакции на альт+А нету. Если создать две кнопки, то переключатель по таб между ними не работает. Горячие клавиши реализуются системой, или надо самому их отдельно регистрировать?
(* WS_GROUP - значит, началась новая группа радио-кнопок. Все последующие AUTORADIOBUTTON-ы будут добавляться именно в эту группу. Нужна еще одна - при создании первой кнопки, которая будет в новой группе, надо опять указать WS_GROUP *) hRBtn_1 := CreateWindowEx(0, 'BUTTON', 'Опция &0', WS_GROUP or BS_AUTORADIOBUTTON or WS_VISIBLE or WS_CHILD, 15, 132, 95, 25, handleWnd, RBTN_0, hInstance, nil); hRBtn_2 := CreateWindowEx(0, 'BUTTON', 'Опция &1', BS_AUTORADIOBUTTON or WS_VISIBLE or WS_CHILD, 15, 154, 155, 25, handleWnd, RBTN_1, hInstance, nil); hRBtn_3 := CreateWindowEx(0, 'BUTTON', 'Опция &2', BS_AUTORADIOBUTTON or WS_VISIBLE or WS_CHILD, 15, 176, 155, 25, handleWnd, RBTN_2, hInstance, nil); CheckRadioButton(handleWnd, RBTN_0, RBTN_2, RBTN_0); // включаем любую кнопку в группе
, а WM_COMMAND обрабатывать так:
case AMessage of WM_COMMAND: begin case LoWord(WParam) of RBTN_0 .. RBTN_2: // Смотрим только одну группу. Если есть еще одна - отдельно begin // В группе включить нужную. Естественно, остальные выключатся CheckRadioButton(Window, RBTN_0, RBTN_2, LoWord(WParam)); end; end
, то не надо никакой эмуляции нажатия на кнопку мыши. Радио-кнопки они на то и радио, что в одной группе может быть одновременно выбрана только одна такая кнопка...