我在CVIEW里,有个以CVIEW为父窗体的子窗体. 我想在子窗体里捕获WM_MOUSEMOVE这个消息,但是捕获不到. 但是CVIEW里可以捕获到. 好象,在CVIEW里,只要没有定义这个窗口消息的处理函数,就会给DefWindowProc去处理. 这样是不是意味着,在CVIEW里的子窗体没有机会收到WM_MOUSEMOVE这样的窗口消息. 这种情况大家在项目中是如何处理的?

解决方案 »

  1.   

    确定你的子窗口创建成功了吗?大小呢,和View一样大吗?
    用spy++看一下,应该是可以收到了
      

  2.   

    不是你理解的那样,捕捉子窗口的WM_MOUSEMOVE消息需要在子窗口中处理消息相应,当鼠标移到子窗口上时,View就不会再收到Windfows发送的WM_MOUSEMOVE消息,而是将WM_MOUSEMOVE消息发给子窗口
      

  3.   

    你可以在PreTranslateMessage里捕获WM_MOUSEMOVE消息
      

  4.   


    this->CreateEx(
    WS_EX_LEFT,
    _T("STATIC"),
    _T(""),
    WS_CHILD | WS_TABSTOP | WS_VISIBLE ,
    rect.left, 
    rect.top, 
    rect.right,
    rect.bottom, 
    parent->m_hWnd, 
    (HMENU)1000)
    子窗口是创建成功了,但是还是收到消息. 窗口的原理是不是这样,是从鼠标所在位置最里层的子窗口开始找,如果找到就不传给其父窗口.
      

  5.   

    很不理解,this->CreateEx,这个this是谁?另外,对于STATIC控件,必须设置SS_NOTIFY样式才接收鼠标消息。
      

  6.   

    hi Mackz ,谢谢,加上SS_NOTIFY就能收到了.