由CWnd继承来的用户窗口添加加速键:(非框架窗口缺少CFrameWnd中对加速键的支持)1.给派生类添加一个数据成员m_hAccelTable(类型HACCEL).2.向程序添加加速键资源,添加资源我已经在另一篇文章中讲过,还有加一个具有响应函数的ID对应加速键.然后在应用程序生存期初期,调用API函数::LoadAccelerators加载加速键表.将::LoadAccelerators返回的句柄复制到m_hAccelTable. //In CMainWindow's constructor m_hAccelTable=LoadAccelerators(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
3.在窗口类中重载PreTranslateMessage并调用将句柄存储在m_hAccelTable中的::TranslateAccelerator.将::TranslateAccelerator返回的的值作为PreTranslateMessage的返回值.
//virtual BOOL PreTranslateMessage(MSG *pMsg);函数原型