我在一个基本对话中,新建了一个子dialog 并设成child,none,然后把这个子dialog放到主对话框里现在的问题是,无论是在主对话框还是在子对话框,PreTranslateMessage(MSG* pMsg) 都不能截获消息了,这是为什么啊?

解决方案 »

  1.   

    拦截键盘消息:
    http://community.csdn.net/Expert/topic/4430/4430292.xml?temp=1.122683E-02
    拦截鼠标消息:
    http://community.csdn.net/Expert/topic/4390/4390653.xml?temp=.4981043
      

  2.   

    不是,就是普通的
    if(pMsg->message==WM_KEYDOWN &&pMsg->wParam ==VK_ESCAPE)
    return TRUE;
    if(pMsg->message==WM_KEYDOWN &&pMsg->wParam ==VK_RETURN)
    {
    ::SendMessage(m_dlg0.GetSafeHwnd(),WM_STARTMSG,0,0);
    return TRUE;
    }
    这种消息,得到的pMsg->wParam 值不是VK_RETURN或VK_ESCAPE,所以if里的语句没法执行
      

  3.   

    PreTranslateMessage应该是在CWinApp类中使用的吧?
      

  4.   

    ?
    在对话框中也可以用啊,如果不加那个子dialog就可以响应到的
      

  5.   

    以模式方式显示子窗口时,主窗口消息被阻塞了,等待用户对子窗口进行操作;子窗口以child弹出时嵌入主窗口,自己的消息循环也没有了,于是出现这种现象。