解决方案 »

  1.   

    不清楚这是什么控件,但大致可按如下思路:
    分别取得不同菜单所在矩形。然后用CRgn::PtInRegion函数判断某点是否在此矩形内,其函数原型为:
    BOOL PtInRegion(
       int x,
       int y 
    ) const;
      

  2.   

    你这个BoxList是你自己写的一个类,然后通过类对象来画的不?如果是的话,给你一个方法:1、由于要画好几个菜单,因此每个菜单的RECT肯定是你计算出来的。
    2、在类中定义两个long类型的变量m_lMouseMove、m_lClicked分别记录鼠标当前位置处于第几个菜单中和鼠标单击的是第几个菜单。
    3、
    void xxxx::Draw(Graphics* pGraphics)
    {
       pGraphics->FillRectangle(Brush,BoxList_Rect);//给BoxList画背景
       for(long i=0;i<lCount;++i)
       {
          计算第i个菜单的Rect;
          if(this->m_lMouseMove == i) pGraphics ->FillRectangle(Brush,Rect);
          if(this->m_lSelected == i) pGraphics->FillRectangle(Brush,rt)
       }
    }4、
    BOOL xxx::MouseMove(const POINT& pt)
    {
       for(long i=0;i<lCount;++i)
       {
          计算第i个菜单的Rect;
          if(::PtInRect(&rtItem, pt))
          {
             this->m_lMouseMove = i;
             return TRUE;
          }
       }
       return FALSE
    }BOOL xxx::Click(const POINT& pt,HWND hWndReflection,HWND hWndSelf)
    {
       for(long i=0;i<lCount;++i)
       {
          计算第i个菜单的Rect;
          if(::PtInRect(&rtItem, pt))
          {
             this->m_lClicked = i;
             return TRUE;
          }
       }
       return FALSE}基本就是这个思路