Как узнать, какая кнопка нажималась последней?
On 2002-08-26 1813, Doomych wrote
Как узнать, какая кнопка нажималась последней, не используя функции типа OnButtonDown()?
Ни как в момент нажатия можешь это фиксировать а потом уже все..
// http//www.sp1r1tual.com
Правда если у тебя есть еще контролы,
то это может не работать.
On 2002-08-27 0114, Ramzes wrote
Посмотри на каком окне фокус ввода.
Увы
Фокус можно двигать не нажимая на кнопки (клавишей TAB).
Разумным выходом кажется следующий
Сделать для всех кнопок один обработчик сообщения BN_CLICKED
В message map прописывается
ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)
и пишется обработчик
void CMyDialogOnButtonClicked( UINT nID )
{
last_button_id = nID;
}
Все это делается руками, classwizard не поможет.
Еще можно переопределить CWndPreTranslateMessage() для диалогового окна, где лежат все кнопки, и ловить WM_LBUTTONDOWN, WM_KEYDOWN и, возможно, кое-что еще. Но это неоправданно сложно для данной задачи.
On 2002-08-27 1646, Doomych wrote
Дело в том, что мне нужно узнать про нажатие кнопки (Delete) в функции-обработчике другого сообщения, не связанного с нажатием кнопок.
И в чем проблема? Я для этого и ввел last_button_id (заметь, что она - не локальная переменная). Сделай ее членом класса своего диалога и пользуйся. В обработчике BN_CLICKED идентификатор нажатой кнопки записывается в last_button_id. В другом обработчике читаешь его и пользуешься.