第一次的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) 收藏 举报
浙公网安备 33010602011771号