我用的是List Ctrl控件,有个按钮是选择电脑中的目录中的一个文件,然后在List Ctrl控件中第一列将这个文件夹的文件名按字母顺序(包括路径)全部显示出来,这个该怎么实现?
我用了CFileDialog类,只是选定了文件,能显示路径,以后就不知道该怎么办了,请各位高手指教。

解决方案 »

  1.   

    首先遍历整个文件夹,然后加到m_TreeCtrl树型控件中,代码如下:List Ctrl操作与Tree Ctrl相似,自己查查作吧。
    HANDLE fh;
    WIN32_FIND_DATA fd;
    char tmpstr[100],tmpstr1[100];
    m_TreeCtrl = &GetTreeCtrl();
    //tmpstr值为文加夹名称
    fh=FindFirstFile(tmpstr, &fd );
    if ( fh != INVALID_HANDLE_VALUE )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    m_TreeCtrl->InsertItem(tmpstr1, 1, 1, vhtItem, TVI_LAST);
    while ( FindNextFile( fh, &fd ) )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    tmpstr1[strlen(tmpstr1)-6]=0;
    m_TreeCtrl->InsertItem(tmpstr1, 1, 1, vhtItem, TVI_LAST);
    }
    FindClose(fh);
    }
    else
    FindClose(fh);
      

  2.   

    谢谢,我没用Tree Ctrl控件,显示路径是在一个Edit box里面。代码是:
    CFileDialog m_ldFile(TRUE);
    if(m_ldFile.DoModal() == IDOK){
    m_dir = m_ldFile.GetPathName();
    /*    显示文件名需要的代码   */
    UpdateData(FALSE);
    m_dir是Edit Box控件的变量。
    遍历该怎么做呢?
      

  3.   

    //假设你的List Ctrl为m_ListCtrl则遍历和加到List Control的例子源码如下,供参考,遍历主要依靠函数FindFirstFile和FindNextFile。加到List Control依靠InsertItem.
    HANDLE fh;
    WIN32_FIND_DATA fd;
    fh=FindFirstFile(m_dir , &fd );
    int m_nItemIndex=0;if ( fh != INVALID_HANDLE_VALUE )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    m_ListCtrl->InsertItem(m_nItemIndex,tmpstr1);
             m_nItemIndex++;
    while ( FindNextFile( fh, &fd ) )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    m_ListCtrl->InsertItem(m_nItemIndex,tmpstr1);
                      m_nItemIndex++;
    }
    FindClose(fh);
    }
    else
    FindClose(fh);