情况是这样的:MDI程序,菜单“删除”项有对应的Delete键加速键,
当在浮动的子窗口上(TOOLBAR)某个控件如Edit上按下delete键后竟然也去执行对应加速键菜单响应了,Edit上却没有任何反应。
请问各位同仁如何解决?小弟在此谢过。

解决方案 »

  1.   

    重载主框架类的PreTranslateMessage函数:
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
    {
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_DELETE)
    {
    TranslateMessage(pMsg);
    DispatchMessage(pMsg);
    return TRUE;
    }
    return CMDIFrameWnd::PreTranslateMessage(pMsg);
    }
      

  2.   

    补充一下,按上述做法Delete加速键就完全失效了,如果只想让焦点在Edit控件上时试销,要把判断条件再改一下。
      

  3.   

    具体没做过,提供点思路,浮动窗口是基于ControlBar的吗?看看mfc得源码,里面可能有向frame转发消息的处理,截获一下看看?例如,重载浮动窗口的PreTranslateMsg函数,看是否先于frame得到delete按键的响应