FAQ:WinAPI VCPP:акселераторы в MFC приложении

Материал из Весельчак У
Версия от 22:09, 3 октября 2009; RXL (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Как в диалоговом MFC приложении добавить accelerator'ы? В редакторе ресурсов создаю, а применить не могу.

class TestDlg : public CDialog
{
	HACCEL accelerators;
public:
	enum{IDD = IDD_TEST_DIALOG};
	TestDlg(CWnd* pParent);
	virtual BOOL PreTranslateMessage(MSG* pMsg);
};
 
TestDlg::TestDlg(CWnd* pParent) : CDialog(TestDlg::IDD, pParent)
{
	//загрузаем из ресурса
	accelerators = LoadAccelerators(
					AfxGetInstanceHandle(),
					MAKEINTRESOURCE(IDR_ACCELERATOR));
}
 
BOOL TestDlg::PreTranslateMessage(MSG* pMsg)
{
	//обработка акселераторов
	if( TranslateAccelerator(m_hWnd, AccelTable, pMsg) )return true;
 
	return CDialog::PreTranslateMessage(pMsg);
}