@1.對話框中添加成員變量:
HACCEL m_hAccel;
@2.在OnInitDialog()函數中添加代碼:
// 裝載加速鍵
m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
ASSERT(m_hAccel);
@3.重載PreTranslateMessage函數:
BOOL CMainDlg::PreTranslateMessage(MSG *pMsg)
{
if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
{
if (m_hAccel && ::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
@4.後面的操作就和Frame-View框架的程序一樣了:
a.資源中插入一個加速鍵IDR_ACCELERATOR1,編輯一個加速鍵的值
如ID_XXXX, VK_F9, VIRTKEY
b.添加成員函數void Xxxx(void)
c.在BEGIN_MESSAGE_MAP、END_MESSAGE_MAP之間添加
ON_COMMAND(ID_XXXX, &CMyDlg::Xxxx)
這樣對話框就能響應加速鍵調用對應的函數了