我的对话框里有个从CStatic继承的自定义控件, 其中定义了WM_MOUSEMOVE的事件相应, 可是在运行时, 该控件收不到这个消息, 请问是何故? 急也!!! 哪位看官能略加指点, 定感激不尽!!!

解决方案 »

  1.   

    应该要把Dlg的窗口句柄和CStatic继承的自定义控件的窗口句柄得到并传出
      

  2.   

    自定义控件初始化时加入以下:
    ModifyStyle(0,SS_NOTIFY);
      

  3.   

    在继承的自定义控件类中加入以下函数即可
    BOOL CPuzzleArea::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_MOUSEMOVE)
    {
    CPoint point(pMsg->pt.x, pMsg->pt.y);
    ScreenToClient(&point);
                      // Add your code here
    ClientToScreen(&point);
    }

    return CStatic::PreTranslateMessage(pMsg);
    }
      

  4.   

    当然收不到了,因为WM_MOUSEMOVE消息发给了控件所在的窗口,而不是控件!你可以在窗口的WM_MOUSEMOVE消息处理函数中调用SendMeesage()函数,再把这个消息发送给控件!!!
      

  5.   

    同意free_card的说法,加上该风格方可响应鼠标消息!!