以往都是在CView类中响应鼠标消息,今天试一下在CMainFrame类里响应结果根本就不调用这个函数,为什么?

解决方案 »

  1.   

    因为frame被view/toolbar之类的盖住了
      

  2.   

    它能接收WM_NCLBUTTONDOWN消息。Frame不是客户区不能响应WM_LBUTTONDOWN消息!
      

  3.   

    同意jiangsheng(蒋晟.MSMVP2004Jan) 的说法,不是不能响应,而是它的子窗口先接到消息,没有将消息发给父窗口,总之,就是你LButtonDown的地方不对
      

  4.   

    sjhunter() 
    子窗口是哪个?父窗口又是哪个?说的有点牵强。
    事实上,你在VIEW类中和FRAME类中同时响应LButtonDown的话,总是VIEW类接收到。而当把VIEW类中的消息响应去掉了之后,FRAME类也得不到。
    问题就是,为什么总是VIEW类接收到呢?
      

  5.   

    fallhunter(不乖)
    你认为VIEW类是一个记事本,而FRAME是另一个,VIEW挡在FRAME的上面,所以FRAME接收不到,是吗?
      

  6.   

    这样吧,如果你一定要处理这个的话,就在CMainFrame的PreTranslateMessage里作,CMainFrame在收到WM_LBUTTONDOWN之后,将该消息分发给CView,关键是CView在处理之后没有向它的父窗口CMainFrame发送该消息,所以你认为CMainFrame响应不了
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    {
    if(WM_LBUTTONDOWN == pMsg->message)
    这样就OK了