一个自绘菜单,左边有一个侧边栏,
有一个菜单项A,拥有二级菜单
二级菜单显示在侧边栏的左边,可是当我鼠标移动到菜单项A时,显示二级菜单
我想选择二级菜单的菜单项,可是鼠标移动到侧边栏的时候,
二级菜单就自动消失了,导致了选择不了二级菜单项如何处理呢?

解决方案 »

  1.   

    修改二级菜单显示位置 像windows菜单一样遮住侧边栏紧贴菜单A啊
      

  2.   

    发现问题是这样产生的:
    在MeasureItem(LPMEASUREITEMSTRUCT lpms)函数里:
    if (pItem->m_bSideBar)
    {
    lpms->itemWidth = pItem->m_nSize ;//这边查看的时候是20 lpms->itemHeight = 0;
    }
    可是到了DrawItem( LPDRAWITEMSTRUCT lpds )里
    CRect rcItem = lpds->rcItem;
    if (pItem->m_bSideBar)
    {
    CRect rcClipBox;
    dc.GetClipBox(rcClipBox);
    // 绘制菜单标题栏
    CRect rc = rcItem;//这边宽度已经是170了
    rc.top = rcClipBox.top;
    rc.bottom = rcClipBox.bottom;
    DrawSideBar(&dc, rc, pItem->m_hIcon, pItem->m_strText);
    }
    这边的rcItem 的宽度并不是MeasureItem设置的pItem->m_nSize值了,
    其他的正常为什么就绘制这个pItem->m_bSideBar时不可以呢
    为什么会这样,奇怪