|
怎样在基于对话框的应用程序上添加快捷键操作?
1. 加载加速键,加载加速键最好的地方是在对话框的OnInitDialog函数中:
- BOOL CMyDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- ......
- // Load accelerators
- m_hAccel = ::LoadAccelerators(AfxGetResourceHandle(),
- m_lpszTemplateName);
- ASSERT(m_hAccel);
- return TRUE;
- }
复制代码
在加速键表中,你可以使用任何ID。这里使用的是对话框本身的ID,(m_lpszTemplateName既可以是一个串名,也可以是一个MAKEINTRESOURCE使用的整型ID):
- // 本文例子中的加速键(In DlgKeys.rc )
- IDD_MYDIALOG ACCELERATORS DISCARDABLE
- BEGIN
- VK_RETURN, ID_MY_ENTER, VIRTKEY, NOINVERT
- END
复制代码
2. 重载PreTranslateMessage函数:
- BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
- {
- if (WM_KEYFIRST <= pMsg->message &&
- pMsg->message <= WM_KEYLAST)
- {
- HACCEL hAccel = m_hAccel;
- if (hAccel &&
- ::TranslateAccelerator(m_hWnd, hAccel, pMsg))
- return TRUE;
- }
- return CDialog::PreTranslateMessage(pMsg);
- }
复制代码
|
|