判断是否点击上list control 控件中的记录
我想问一下 我已经实现在这个控件上弹出右键菜单了 ,但是我想判断右键菜单的状态无法实现,也就是说当右键点击到记录时候
弹出删除菜单,如果没点击到记录时候,弹出正常的菜单.
        CMenu menu;
indexNumber=m_list_show1.GetSelectionMark();
if(indexNumber!=-1)
menu.LoadMenu(IDR_MENU3);
else
menu.LoadMenu(IDR_MENU2);
我这样用 在他第一次没点击到 记录时候一直是-1 但是点击到记录时候就是记录的索引了,可是要是在点击无记录地方,他始终获得上一次记录索引,也就是说菜单的状态一直为删除菜单,除非我把所有记录都删除才会恢复, 请教高手该如何才好,请给出代码... 谢了

解决方案 »

  1.   

    试试看这样,调用GetItemRect来获取选中Item的rect
    然后再弹出右键的时候,判断右键坐标是否在这个rect内
      

  2.   

    在这几行代码的后面把indexNumber置回-1;
      

  3.   

    这个可能更好一些:
    调用HitTest,传递鼠标坐标,判断返回的index和选中的index是否一直
      

  4.   

    <非常感谢各位  楼上说 在这几行代码的后面把indexNumber置回-1;>  这个行不通我以前试过 他每次获取都是获取上次的记录索引 所以会把-1覆盖了,  HITTEST 我刚试过 好像没返回值...  <试试看这样,调用GetItemRect来获取选中Item的rect 然后再弹出右键的时候,判断右键坐标是否在这个rect内>
    这位弟兄好像没明白我问的,获取控件坐标范围没有用啊 我是想在控件范围内 判断是否在记录当中..谁能给出具体代码啊 狂谢了!!!!
      

  5.   

    用HitTest
    http://msdn.microsoft.com/en-us/library/aa296015(VS.60).aspx
      

  6.   

    试试这个:CMenu menu;
    if(m_list_show1.GetSelectedCount()==0)
       menu.LoadMenu(IDR_MENU3);
    else
       menu.LoadMenu(IDR_MENU2); 
      

  7.   

    多谢各位了 我已经解决了!
    indexNumber = m_list_show1.GetSelectionMark(); //获取点击的记录索引
    mouseState = m_list_show1.GetSelectedCount(); //判断鼠标是否点击记录
    if(mouseState==TRUE) 
    menu.LoadMenu(IDR_MENU3);
    else
    menu.LoadMenu(IDR_MENU2); //加载菜单资源