我用CDialog::OnCancel()和CDialog::OnClose()为何不行.请赐教!

解决方案 »

  1.   

    怎么会不行?oncancel和onok应该可以的,除非你的某个有焦点的edit有wantreturn。当然,重载pretranslatemessage一定是可以的。
      

  2.   

    对了,有焦点的一些控建会自己处理esc,还是用重载pretranslatemessage比较可靠,但是可能也会有一点点其他的问题你试试先,也许你不会碰到
      

  3.   

    重载PreTranslateMessage
    //TODO:...
    if((pMsg->message == SYSCOMMAND) && (pMsg->wParam == VK_RETURN))
    {
      //Handle return
    }
      

  4.   

    CDialog::PreTranlateMessage()没有把VK_RETURN发给CDialog,而是直接终止了程序
      

  5.   

    最笨的办法就是用钩子HOOK吗??因为别的我都不懂。不好意思。
      

  6.   

    在PreTranslateMessagte中写if (pMsg->message=WM_KEYDOWN)
    {
      if (pMsg->wParam= WM_ESCAPE) //then
      else if(pMsg->wParam=WM_RETURN) //then
    }
      

  7.   

    楼上的大哥将==写成=了吧,好象WM_ESCAPE,WM_RETURN也错了吧,这些应该常量应该以VK_开头吧。