For the purposes of this article, we add accelerator key functionality to the AboutBox dialog box of an MFC MDI application:
1. | Create a new MFC MDI application named Test. |
2. | Add a button, with resource ID "IDC_BUTTON1", to the AboutBox dialog box resource. |
3. | Double-click the button to add a handler for this button and insert the following code as an indicator that the accelerator key works: AfxMessageBox("Hello"); |
4. | Insert a new Accelerator Table to the Resource. |
5. | Add an Accelerator key to the table by associating the F5 key to the resource ID "IDC_BUTTON1". |
6. | Add the member variable, m_hAccelTable, to the class CAboutBox: HACCEL m_hAccelTable; |
7. | Initialize m_hAccelTable in CAboutBox::CAboutBox: m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1)); |
8. | Use the Code Wizard (the Class Wizard in Visual C++ 6.0 and earlier) to add an override of the PreTranslateMessage for the CAboutDlg. |
9. | In the CAboutBox::PreTranslateMessage() method, add the following lines of code: BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
if (m_hAccelTable) {
if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
return(TRUE);
}
}
return CDialog::PreTranslateMessage(pMsg);
} |
10. | Compile and run CTestApp. |