解决方案 »

  1.   

    还有个问题:怎么判断光移已经不在按钮的位置内了?
    OnMouseMove()只能判断光标移到到按钮区域,如果光标没有在按钮区域,怎么判断不在区域内了?
      

  2.   

    光标离开添加WM_MOUSELEAVE消息响应就可以了。
    至于区分按钮我真不明白你的问题的意思。id都有你还不知道是哪个按钮?
      

  3.   

    WM_MOUSELEAVE函数没有,看来要手动添加了,
    区分按钮比如,有些按钮我想用红色做按钮背景,有些想用黑色做按钮背景,所有想添加个判断。
      

  4.   

    WM_MOUSELEAVE消息的HWND参数不是指对话框的句柄,指的是鼠标被移出的按钮的句柄。所以这个消息是被按钮类过程函数收到的。调用GetWIndowLong(hwndBtn,GWL_ID)就能获得按钮窗口对应的ID。然后判断就行了。
      

  5.   

    你自绘按钮,肯定封装了一个按钮类吧,难道里面不保存这些变量吗?加个get的接口不就可以了。
    WM_MOUSELEAVE消息是要你自己添加的。
    建议你下个CButtonST的类,看看,学学别人的封装。
      

  6.   

    还有个问题:怎么判断光移已经不在按钮的位置内了?
    OnMouseMove()只能判断光标移到到按钮区域,如果光标没有在按钮区域,怎么判断不在区域内了?
    -------------------------------
    WM_MOUSELEAVE/WM_MOUSEHOVER
      

  7.   


    这两个函数,在光标移到函数Move()用_TrackMouseEvent只能调用一次,然后就没有反应了,我在后面加定时器,定时器响应函数中应该怎么写?
      

  8.   

    不用加定时,处理WM_MOUSELEAVE/WM_MOUSEHOVER消息时再调用一次_TrackMouseEvent就行。
    这里有一个开源的资源,也用到了这些,应该对你有用:
    http://download.csdn.net/detail/hhhh63/7710711