添加修改按钮的响应函数:void CKEYSET::OnChangeKey1() 
{
     // TODO: Add your control notification handler code here
     if( m_keyset1.GetItemState(0, LVIS_SELECTED)==LVIS_SELECTED || m_keyset1.GetCheck(0))//选中第0行
        MessageBox("选中第0行!");}
运行后无论选中哪一行都弹出对话框,甚至不选中任何一行,单击后也弹出对话框.
我想是不是初始状态就是选中的,所以把两行的初始状态都设为未选中,但是还是弹出对话框了,不知道是为什么?

解决方案 »

  1.   

    你试着把这两个条件分拆,看他满足的是哪个条件,然后弹出来的窗口,另外记得
    void CKEYSET::OnChangeKey1() 
    {
         // TODO: Add your control notification handler code here
         if( m_keyset1.GetItemState(0, LVIS_SELECTED)==LVIS_SELECTED || m_keyset1.GetCheck(0))(这个位置有没有放了个多余的分号)
            MessageBox("选中第0行!");}
      

  2.   

    if ((pNMLV->uChanged & LVIF_STATE) && (pNMLV->uNewState & LVIS_SELECTED)) 
      

  3.   

    你选中那行就执行那行,没有选中行则不执行,代码如下:void Cxxx::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    LPNMITEMACTIVATE temp = (LPNMITEMACTIVATE) pNMHDR;
    int iSubItem = temp->iSubItem;
    POSITION pos = m_List1.GetFirstSelectedItemPosition();
    if (pos==NULL)
    {
        return;
    }
    else
    {
                ....    
            }

    *pResult = 0;
    }其中OnClickList1是点击CListctrl消息的响应函数
      

  4.   

    这个CListCtrl是报表类型,单选的属性可以,多选的话上面的代码不知道行不行