Шаг 79 - Обработка сообщений – акселераторы

Акселераторы позволяют перенаправить сообщения на нужный элемент управления. Создаем диалоговое окно с двумя кнопками.

79_1.gif (3985 b)

Код к кнопкам:

void CTestMessageDlg::OnButton2() 
{
	AfxMessageBox("Button 2");
}

void CTestMessageDlg::OnButton1() 
{
	AfxMessageBox("Button 1");
}	

Добавляем в ресурсы таблицу акселераторов.

79_2.gif (1654 b)

В нее необходимо добавить записи. Обратите внимание, что связь происходит с определенным идентификатором.

79_3.gif (7089 b)

Осталось всего три задачи. Первая описать переменную:

class CTestMessageDlg : public CDialog
{
// Construction
	......
	HACCEL ha;
// Implementation
protected:
	......
};

Вторая загрузить акселераторы:

BOOL CTestMessageDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	ha = LoadAccelerators( AfxGetResourceHandle(),
		MAKEINTRESOURCE( IDR_ACCELERATOR1 ) );
	......
}

Третья - перенаправить обработку в таблицу акселераторов:

BOOL CTestMessageDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if ( TranslateAccelerator( m_hWnd, ha, pMsg ) ) return TRUE;

	return CDialog::PreTranslateMessage(pMsg);
}

Запускаем, нажимаем на А:

79_4.gif (5508 b)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 08.07.2002