第一次的MFC

1、可以调出对话框选择你所要的一个文件夹:

       //       CString sPath;

     BROWSEINFO bi;

     TCHAR szDisplayName[MAX_PATH];

     LPITEMIDLIST pidl;

     ZeroMemory(&bi, sizeof(bi));

     bi.hwndOwner = GetSafeHwnd();

     bi.pszDisplayName = szDisplayName;

     bi.lpszTitle = TEXT("请选择一个文件夹或盘符:");

     bi.ulFlags = BIF_RETURNONLYFSDIRS;

     pidl = SHBrowseForFolder(&bi); //选择文件夹

     if(pidl)

     {

         SHGetPathFromIDList(pidl, szDisplayName);

         sPath = szDisplayName;

         CEdit1.SetWindowText(sPath); // CEdit1用来显示路径名

     }

2、搜索文件夹里.xxx的文件:(#include” #include "afx.h"”)

FindFile(CString pstr)//传路径

{

    CFileFind finder;   

    // build a string with wildcards

//    CString strWildcard(pstr);

//    strWildcard += _T("\\*.*");   

    // start working for files

//    BOOL bWorking = finder.FindFile(strWildcard);

     BOOL bWorking   =   finder.FindFile(pstr   +  _T("\\*.* "));      

    while (bWorking)

    {

        bWorking = finder.FindNextFile();   

        // skip . and .. files; otherwise, we'd

        // recur infinitely!

       if(finder.IsDots())   //本级目录或父目录(.和..)

            continue;       

        // if it's a directory, recursively search it

         CString str = finder.GetFileName();

        if(finder.IsDirectory())

        {

//            CString ff = finder.GetFilePath();//使用绝对路径,这样就可以查找子目录了

//            FindFile(ff);

              continue;

        }

        else

        {

           //str += _T("\n");

           //m_edit.SetSel(-1, -1);

              //((CListBox*)GetDlgItem(IDC_LIST4))->AddString(str);    //加到list box并显示

              int nItem;

              n++;

              m_lvSong.mask = LVIF_TEXT;

              m_lvSong.iItem = 0;

              m_lvSong.iSubItem = 0;

              m_lvSong.pszText = (LPSTR)(LPCTSTR)str; // 类型CString转换成LPSTR

              nItem = this->m_list.InsertItem(&m_lvSong);//加到list control控件

              //this->m_list.SetItemText(nItem,1,m_Edit2);

        }

    }   

finder.Close();

}

3、创建list control (属性View为Report//ClistCtrl m_list):

   初始化:

     int i=0;

     long dwStyle;

     LVCOLUMN Col;    

         Col.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;

         Col.fmt = LVCFMT_LEFT;

         Col.iSubItem = 0;

         Col.pszText = _T("原名");

         Col.cx = 200;

         m_list.InsertColumn(0,&Col);

    

         Col.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;

         Col.fmt = LVCFMT_LEFT;

         Col.iSubItem = 1;

         Col.pszText = _T("新名");

         Col.cx = 350;

         m_list.InsertColumn(1,&Col);

     dwStyle = m_list.GetExtendedStyle();

     dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)

     dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)

     m_list.SetExtendedStyle(dwStyle); //设置扩展风格

     m_list.ShowWindow(SW_SHOW);

选中其中的一行:

     int nItem;

     CString  kk,mm;

 POSITION pos = m_list.GetFirstSelectedItemPosition();

        if (pos == NULL)

         {

            //TRACE0("No items were selected!\n");

              MessageBox(_T("没有选中一行!"),NULL,MB_ICONEXCLAMATION);

              (CString  jj;

              int i;

              jj.Format("第%d行还没有新名!",i+1);

              ::MessageBoxA(NULL,jj,_T("温馨提示"),MB_ICONEXCLAMATION);)

         }

        else

        {

            while (pos)

            {

                nItem = m_list.GetNextSelectedItem(pos);

                TRACE1("Item %d was selected!\n", nItem);

           !!!you could do your own processing on nItem here!!!

                   SongDetail dlg;

                   if(dlg.DoModal() == IDOK)

                   {

                       //int tt = dlg.fff;// dlg.m_Combo1Language.GetCurSel();

                          //int iPos=((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();//

                       mm = m_list.GetItemText(nItem,0);

                       int yy = mm.Find(".");

                       if(yy > 0)

                       {

                            kk = mm.Right(3);

                       }

                       this->m_list.SetItemText(nItem,1,              dlg.m_SongName+_T("_")+dlg.m_SongSinger+_T("_")+dlg.SL2+_T("_")+dlg.m_TitleInitials+_T("_")+dlg.m_SongWordCnt+_T("_")+dlg.ST2+_T("_")+dlg.SOT2+_T("_")+dlg.SVT2+_T(".")+kk);

                   }

            }

        }

posted on 2011-12-09 14:26  langgonger  阅读(167)  评论(0)    收藏  举报

导航