为什么已经说了啊~~
CMainFrame(自动生成的)是CFrameWnd的子类, 而CFrameWnd又是CWnd的子类, 在CFrameWnd中没有关于鼠标的任何消息函数定义(你可以自己查), 而在CWnd中的鼠标消息函数都是定义成为保护类型的, 所以CMainFrame不能够响应鼠标消息; 而View是直接继承的CWnd, 当然就能够捕获消息了
难道不明白吗?

解决方案 »

  1.   

    楼上的说法有误,不是CMainFrame不能够响应鼠标消息,而是这时候的CMainFrame的客户区全部被
    View覆盖了.
    不信你点点非客户区,如标题栏,肯定能响应的.所以你要捕捉鼠标消息,应该到CView中去捕捉.
    要么你把视缩小,也能在CMainFrame捕捉到这消息的.
      

  2.   

    To shesh: 实践出真知, 你有什么理由说点标题栏就能响应呢? 我试过了的, 你呢?也许是我上面的所指范围有误, CFrameWnd中能够捕获到鼠标消息, 但是要想用CWnd中继承下来的OnLButtonDown()的方法是绝对不可能的~~~~
      

  3.   

    to hueager:
       zx_sanjin(1.5kg, 不赊账~~~) 说的很对。
       shesh(无所谓) 说错了。
    如果要验证的话,还可以创建一个多文档,把视图最小化后,照样是不能相应OnLButtonDown()消息的。
      

  4.   

    重载CFrameWnd中virtual BOOL PreTranslateMessage(MSG* pMsg);
    添如下面代码:
    if(pMsg->message == WM_RBUTTONDOWN)
    {
    AfxMessageBox("aa");;
    }
    试试看`~~
      

  5.   

    你的右键是点到了View上了吧???????
      

  6.   

    那个区域是属于m_hWndMDIClient的.m_hWndMDIClient是一个成员变量.
      

  7.   

    如果要响应消息,可以从CWnd派生一个类CXXWnd,在CXXWnd中响应鼠标事件,然后CXXWnd  m_hMDIClient;
    然后在CMainFrame::OnCreate()中m_hMDIClient.SubClassWindow(m_hWndMDIClient);
    这样就可以了。
      

  8.   

    shesh 说的对!!!!!!大家可以试一试,先ShowWindow(SW_MINIMIZE),把View最小化,再看看CMainFrame能不能响应鼠标消息 !!!!!!!