为什么当鼠标滑过按钮时不会响应OnDrawItem函数呢?

解决方案 »

  1.   

    应该是需要些写DrawItem这个虚函数。 
    virtual void DrawItem(
       LPDRAWITEMSTRUCT lpDrawItemStruct 
    );
      

  2.   

    有WM_MOUSEOVER的消息响应函数吗
      

  3.   

    啊?WM_DRAWITEM消息本身不会响应鼠标滑过么、难道还要加这个?
    没有加这个函数、以为本身会响应的、
      

  4.   

    不是OnDrawItem,
    是虚函数DrawItem
      

  5.   


    用sdk自己搞消息反射了
    WM_DRAWITEM是父窗口响应的 要反射了要不 你就在按钮过程中判断状态画了OnMouseOver 需要自己用TrackMouseEvent来激活了
      

  6.   

    就是说要实现鼠标滑过按钮响应就不仅要响应WM_DRAWITEM还要加上WM_MOUSEMOVE等等鼠标事件是吧、
      

  7.   


    1.按钮窗口子类化
    2.WM_MOUSEMOVE:
    存储鼠标坐标,并向按钮发送自定义消息
    3.按钮接收消息,PtInRect判断鼠标坐标在矩形内(GetClientRect),之后GetDC绘制效果不知道可不可行啊
      

  8.   

    用SDK的话感觉比较麻烦,要响应很多消息放上按钮,发送的消息有:WM_NCHITTEST,WM_SETCURSOR,WM_MOUSEMOVE在内按下移动出窗口:WM_CAPTURECHANGED在内移动:BM_SETSTATE
    还有许多别的等等如果要真正完善的话建议你用SPY++看看有什么消息
      

  9.   

    http://blog.csdn.net/geniusdot/archive/2007/03/03/1520058.aspx