我有些讨厌C++,因为他总是搞出一堆很乱的东西来完成一件简单的事情,直接上代码
BROWSEINFO bi; //用来保存文件夹的信息
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = m_hWnd;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpszTitle = "请选择待统计的数据路径:";
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
BOOL bRet = FALSE;
char szFolder[MAX_PATH];
szFolder[0] =_T('\0');
if (pidl)
{
if (SHGetPathFromIDList(pidl, szFolder))
{
bRet = TRUE;
}
IMalloc *pMalloc = NULL;
if (SUCCEEDED(SHGetMalloc(&pMalloc)) && pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_cFolder = CString(szFolder); //获得文件夹的名称
UpdateData(FALSE);
说实话,我也不懂这里的科学道理,写出来,只是为了防止忘记,这里还得做一个设置
void CDcpToolDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX,IDC_EDIT1,m_cFolder);
//{{AFX_DATA_MAP(CDcpToolDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
这样,选择的文件夹才会显示出来