要求如下,当listctrl控件中有选中的项时,按钮是可用的;否则,按钮不可用。我原来打算在listctrl响应左键单击的函数中做,感觉不是太好,我想实时检测listctrl有没有选中项,应当如何设置与接收listctrl控件中有没有选中项的消息呢?

解决方案 »

  1.   

    想实时监测就在OnTiemr里判断但不知道你为什么要实时监测?
      

  2.   

    从listctrl的响应事件中检测有没有选择
      

  3.   

    就应该在CListCtrl的通知消息响应中作,比如LVN_ITEMCHANGED。
      

  4.   

    我感觉用OnTimer不是太好,我的意思就是如果有选择的项,就发个消息,让按钮正常显示;没有选中的项,也发一个消息,让按钮灰掉!
      

  5.   

    对,如4楼和7楼所述,应该在CListCtrl的通知消息响应LVN_ITEMCHANGED,在下面的函数中处理,void CControlMeet::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
             int num = m_list.GetSelectedCount();
            if(num>0)
             {
              设置按钮为正常状态
             }
             else
             {
               设置按钮不可用且灰掉
             } *pResult = 0;
    }