1. 通常情况,百度之。 2. 有些键,比如F1-F9,ESC等的消息,会被MFC内部截获,通常的方法可能会接收不到,这时候就需要在系统截获之前响应。方法是继承虚函数PreTranslateMessage。 参考代码 BOOL CGIS_PRO10View::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if (pMsg-> message == WM_KEYDOWN) { POINT curPos; CDPoint _curPos; switch(pMsg->wParam) { case VK_F5: GetCursorPos((LPPOINT)&curPos);//获取鼠标当前位置 ScreenToClient((LPPOINT)&curPos);//转换到客户坐标系 m_pos.cameraTranS(curPos.x,curPos.y); m_pos.zoomin(); Invalidate(); break; case VK_F6: GetCursorPos((LPPOINT)&curPos);//获取鼠标当前位置 ScreenToClient((LPPOINT)&curPos);//转换到客户坐标系 m_pos.cameraTranS(curPos.x,curPos.y); m_pos.zoomout(); Invalidate(); break; case VK_F7: GetCursorPos((LPPOINT)&curPos);//获取鼠标当前位置 ScreenToClient((LPPOINT)&curPos);//转换到客户坐标系 m_pos.cameraTranS(curPos.x,curPos.y); Invalidate(); break; default: break; } } return CView::PreTranslateMessage(pMsg); }