ClistCtrl,Report形式,已经有100条记录数据!
设置了LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT属性!现在我想实现的功能是:
 用户点击一个按纽,使CListCtrl从上到下依次逐行被选择,每次只选中一行!
例:  for (int i=0;i<m_list.GetItemCount;i++)
{
     使m_list的第i行被选种!!//代码该怎么写呢??
     sleep(50);
}
注意:只是选中一行!!!!!
谢谢!!!

解决方案 »

  1.   

    可以用SetItemState()函数,设置选中状态。
      

  2.   

    void CAnswerDLGDlg::OnChangebtn() 
    {
    HANDLE m_hListThread;
    DWORD dwThreadId; m_hListThread = CreateThread(NULL,0,fnThreadDrawList,this,0,&dwThreadId);
    m_ctrlMingxiList.SetFocus();
    CloseHandle(m_hListThread);
    }DWORD WINAPI fnThreadDrawList(LPVOID lpParameter)
    {
    LV_ITEM lvi;
    UINT uState; CAnswerDLGDlg *pDlg = (CAnswerDLGDlg*)lpParameter;
    int iCount = pDlg->m_ctrlMingxiList.GetItemCount();
    lvi.mask  = LVIF_STATE;
    for(int i=0; i<iCount; i++)
    {
    lvi.iItem  = i;
    lvi.iSubItem = 0;
    lvi.stateMask =0xFFFF;  // get all state flags
    pDlg->m_ctrlMingxiList.GetItem(&lvi);
    lvi.state &= ~(LVIS_SELECTED|LVIS_FOCUSED);
    pDlg->m_ctrlMingxiList.SetItemState(i,&lvi);
    pDlg->m_ctrlMingxiList.SetItemState(i,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
    Sleep(1000);
    }
    return 0;
    }
      

  3.   

    for (int i=0;i<m_list.GetItemCount;i++)
    {
        m_list.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED);
        sleep(50);
    }
    这样不行吗?不行的话先将前一个的状态设为没有选中状态,然后再设置这条数据状态
      

  4.   

    SetItemState按理说可以阿