现在可以用CListCtrl把所需要的内容显示出来,当我选择其几行时,我想把这些内容复制出来,请问怎样实现呢?

解决方案 »

  1.   

    1)判断某行是否被选中
    for( i = 0; i < ( size_t )( m_list1.GetItemCount() ); i++ )
    {
    if( LVIS_SELECTED == m_list1.GetItemState( i, LVIS_SELECTED ) )2)使用GetItemText来取得listctrl的内容。
      

  2.   

    我想选择内容后,按Ctrl+C,
    然后到Excel里,按Ctrl+V,把内容复制出来。
      

  3.   

    //得到所有选择:
    int all[10];
    int select=m_LBox.GetSelItems(nCount, all);//aryListBoxSel.GetData()); 
    for(int i=0;i <select;i++) 

    m_LBox.GetText(all[i], str);//aryListBoxSel.GetAt(i); 
    str+="\r\n";
    ;//str包含所有选择的text ;file.Write(str,str.GetLength()); 

      

  4.   

    //搞错了,刚才的是listbox,下面的才是listctrl:
    int selectNo=m_P4ListCtrl.GetSelectedCount();
    int nItem=-1;
    POSITION pos = m_P4ListCtrl.GetFirstSelectedItemPosition();
    while (pos)
    {
    nItem = m_P4ListCtrl.GetNextSelectedItem(pos);
    }
    if(nItem>=0)
    {
    LVITEM lvi;
    lvi.mask=LVIF_TEXT;
    lvi.iItem=nItem;
    lvi.iSubItem=0;
    m_P4ListCtrl.GetItem(&lvi);//lvi 中有text
    //用一个Cstring 把他们加起来。
    }
      

  5.   

    //copy
    char*allstring=::GlobalAlloc(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT,sizeof(1024));// 
    char *pAllstring=(char*)::GlobalLock(allstring);
    strcpy(pAllstring,你读出的串);
    SetClipboardData(CF_TEXT,pAllstring);// clip board will delete this
    ::GlobalUnlock(allstring);
    CloseClipboard();
      

  6.   


    POSITION pos = m_list.GetFirstSelectedItemPosition();
    if(NULL == pos)
    {
     AfxMessageBox(_T("No items are selected.\n"));
    }
    else
    {
     while(pos)
     {
      int nItem = m_list.GetNextSelectedItem(pos);
      ...
      // 得到了选中的行号,就可以去需要的信息了
     }
    }
      

  7.   

    7楼是基本都能在MFC相关版块儿上看到你的身影,而且恢复的都相当的准确,个人比较钦佩