想实现单击list列表一行文件时,获取其地址,读取这个txt里内容,存到list2中。
现在有两个问题,一个是char* pszFileName=nIndex1这里地址不知道怎么修改才能获取,还有一个是txt文档在读到换行时就停止了,不知道怎么解决,求大侠赐教~~~~~~~~~~~~~~~~~
void CFindFilesDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
CWaitCursor waitCursor;
char nIndex1 = m_list.GetSelectionMark(); char* pszFileName=nIndex1;
CStdioFile myFile;
CFileException fileException;
if(myFile.Open(pszFileName,CFile::typeText|CFile::modeReadWrite),&fileException)
{ myFile.SeekToBegin();
CString str1;
myFile.ReadString(str1);
CString str2;
myFile.ReadString(str2); m_list2.InsertItem(0,str1); }

else
{
TRACE("no open %s,error=%u\n",pszFileName,fileException.m_cause);
}
myFile.Close();
}

解决方案 »

  1.   

    int GetSelectionMark( );
    int GetItemText( int nItem, int nSubItem, LPTSTR lpszText, int nLen ) const;
    CString GetItemText( int nItem, int nSubItem ) const;UINT Read( void* lpBuf, UINT nCount );用这几个试试
      

  2.   

    CListCtrl::GetItemText();得到文本路径,然后打开文件,得到数据,CListCtrl::InsertItem();CListCtrl::SetItemText();插入CListCtrl控件中void CFindFilesDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)  
    {
    CWaitCursor waitCursor;
    int nIndex1 = m_list.GetSelectionMark();
    if(-1 == nIndex1)
     return ;
    CString strText = m_list.GetItemText(nIndex1,0);CStdioFile myFile;
    CFileException fileException;
    CString strLine;
    if(myFile.Open(strText,CFile::typeText|CFile::modeReadWrite),&fileException)
    {
     while(myFile.ReadString(strLine))
     {
       m_list2.InsertItem(0, _T(""));
       m_list2.SetItemText(0, 0, strLine);
     }
    }
    else
    {
    TRACE("no open %s,error=%u\n",pszFileName,fileException.m_cause);
    }
    myFile.Close();
    }
      

  3.   

    void   CTest6Dlg::OnClickList1(NMHDR*   pNMHDR,   LRESULT*   pResult)   

     
    //   确定单击的listctrl的行列号方法1 
      DWORD   dwPos   =   GetMessagePos(); 
      CPoint   point(   LOWORD(dwPos),   HIWORD(dwPos)   );   m_list.ScreenToClient(&point);     LVHITTESTINFO   lvinfo; 
      lvinfo.pt   =   point; 
      lvinfo.flags   =   LVHT_ABOVE; 
            
      int   nItem   =   m_list.SubItemHitTest(&lvinfo); 
      if(nItem   !=   -1) 
      { 
       CString   strtemp; 
       strtemp.Format( "单击的是第%d行第%d列 ",   lvinfo.iItem,   lvinfo.iSubItem); 
      } 
     *pResult   =   0; 
    }