请教:vc中怎么才能让对话框只选择一个文件?急~
我的代码是这样的:
BROWSEINFO bi;
TCHAE szPath[MAX_PATH];
//初始化入口参数bi开始
bi.hwndOwner = GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath
bi.lpszTitle = "选定文件 ";
bi.ulFlags = BIF_BROWSEINCLUDEFILES;
bi.lpfn = NULL;
bi.iImage=NULL;
为什么在只打开一个文件时,不能成功?(把单独打开的这个文件也当成路径了)
比如d:\work\a.txt\
在执行的时候,就出现路径不存在的错误。
我应该怎么做让对话框既可以打开文件夹也可以打开一个单独的文件?
期待高手!
[解决办法]
用
CFileDialog 吧
[解决办法]
取出的字符串,把最后的 '\ '删掉
str.TrimRight( '\ ');
[解决办法]
然后判断这个文件是否存在
BOOL FileExist(CString strFileName)
{
BOOL bExist = FALSE;
HANDLE hFile;
if (!strFileName.IsEmpty())
{
// Use the preferred Win32 API call and not the older OpenFile.
hFile = CreateFile(
AsConstChar(strFileName),
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
0);
if (hFile != INVALID_HANDLE_VALUE)
{
// If the handle is valid then the file exists.
CloseHandle(hFile);
bExist = TRUE;
}
}
return (bExist);
}
[解决办法]
选择文件用CFileDialog
选择目录用Shell API: SHGetFolderPath()