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

Материал из Весельчак У

Перейти к: навигация, поиск

Как в диалоговом 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);
}