鼠标移入此对话框时就自动获取焦点(非模态对话框)我想在ONMOUSEMOVE中处理,但是似乎没用

解决方案 »

  1.   

    需要这样做的原因是因为这个对话框时作为一个工具条的作用,没有焦点的话鼠标移到一些图标上相应的TIPS出不来
      

  2.   

    用定时器定时检测吧,因为再对话框失去焦点后,对话框就接收不到WM_MOUSEMOVE消息了
      

  3.   

    原来是做提示·~对应时间WM_MOUSEMOVE的事件处理函数怎么会不行那?发点代码???
      

  4.   

    我觉得应该用鼠标悬停事件比较好,鼠标在对话框悬停多长时间自动获取焦点。
    参考下WM_MOUSEHOVER消息
      

  5.   

    感谢各位,是我自己弄错了,可以相应MOUSEMOVE事件,现在问题变成了:非模态对话框获取焦点后,TIPS仍然显示不出来,必须在对话框其它地方点击一下鼠标然后才能正常显示。。有人知道这是为什么吗?
      

  6.   

    可能你的对话框并没有获取得焦点,用GetForegroundwindow(VOID)函数试下.
      

  7.   


    在类向导中将基类改为 window
    返回消息处理,找到 NC打头的_MOUSEMOVE消息非活动的视,在鼠标移上来时也能处理
    另外就是注册鼠标消息,使用 trackmouseevent 接收鼠标移走和移入wheel消息.
    具体代码上网找一下,多TrackMouseEvent函数在鼠标离开某一窗口或在某一窗口上停留超过某一特定时间长度时发送消息。其函数原型BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 
    参数lpEventTrack是一个指向TRACKMOUSEEVENT结构体的指针。
    函数执行成功的话返回非零值(true),否则返回零(false)。该函数可以发送的消息包括:
    WM_MOUSEHOVER
    鼠标在窗口的某一客户区上停留上一次调用TrackMouseEvent函数时所设定的时间长度时发送。在该消息产生之后将停止跟踪,如果需要进一步跟踪鼠标的停留事件,必须再次调用TrackMouseEvent函数。WM_MOUSELEAVE
    当鼠标离开前一次调用TrackMouseEvent函数所设定的窗口的客户区时发送该消息。在产生该消息时,所有由TrackMouseEvent请求的跟踪都将被取消。如果需要对鼠标的hover事件进行进一步的跟踪,必须在鼠标重新进入窗口里再次调用TrackMouseEvent函数。
      

  8.   

    SendMessage(WM_LBUTTONDOWN,...)
    SendMessage(WM_LBUTTONUP,...)模拟点击下
      

  9.   


    这个方法我也试了。。不过我只send了LBUTTONDOWN消息,好像有问题,那我再去试试加上LBUTTONUP消息看看行不行而且这个办法有两个不好的地方第一不能一直发送,因此要设个全局FLAG来判断,只在第一次响应时发送,还得在失去焦点的时候把FLAG设回去,麻烦;
    第二如果一移进对话框就发送个LBUTTONDOWN消息,我担心会造成一些不好的结果(因为这个对话框里面有的控件时紧靠着边框的。。)这两个问题如何解决有没有获得焦点的事件响应?在那里面处理似乎可以绕开这两个问题?