我只定义了CFrameWnd和CWinApp类,加载了菜单,但是无论怎样都无法使用加速键,为什么?
我看了单文档向导生成的代码,经测试
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CTestView));
AddDocTemplate(pDocTemplate);
一段替换后也无法调用加速键了,那么原因是什么?如何解决?
切盼大侠相告!
DocTemplate 会自动加载和 IDR_MAINFRAME 相同 Id 的 Accelerator 。如果是不使用 Doc / View 机制的程序,如下添加:
// CFrameWnd 初始化
LoadAccelTable(MAKEINTRESOURCE(ID_YOUR_ACCELERATOR));
// 重载 CFrameWnd::PreTranslateMessage()
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg))
return TRUE;
return CFrameWnd::PreTranslateMessage(pMsg);
}
In355Hz(好象一条狗),我完全同意你的。