C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 79 - Обработка сообщений – акселераторы / Диалоговые окна / Visual C++

Шаг 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)


| |
Автор Каев Артем.
[AD]