您的位置:首页 > 其它

Win32 API 选择文件和文件夹

2016-08-03 10:03 405 查看
1.打开文件GetOpenFileName

OPENFILENAME ofn;
WCHAR szFile[100];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof (ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = L"文件夹\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn))
<span style="white-space:pre">	</span>{//todo ofn.lpstrFile}
2.保存文件GetSaveFileNam

OPENFILENAME ofn = { OPENFILENAME_SIZE_VERSION_400 };//or  {sizeof (OPENFILENAME)}
ofn.hwndOwner =GetForegroundWindow();// 打开OR保存文件对话框的父窗口
ofn.lpstrFilter = TEXT(""All\0*.*\0Text\0*.TXT\0");
//过滤器 如果为 NULL 不使用过滤器
lstrcpy(szPathName, TEXT(""));
ofn.lpstrFile = szPathName;
ofn.nMaxFile = sizeof(szPathName);
ofn.lpstrTitle = TEXT("选择文件");
TCHAR szCurDir[MAX_PATH];
GetCurrentDirectory(sizeof(szCurDir),szCurDir);
ofn.lpstrInitialDir=szCurDir;//设置对话框显示的初始目录
ofn.Flags = OFN_EXPLORER |OFN_ALLOWMULTISELECT| OFN_FILEMUSTEXIST;//如果需要选择多个文件 则必须带有  OFN_ALLOWMULTISELECT标志
BOOL bOk = GetSaveFileName(&ofn);
if (bOk)
{
CString strFile = _T("");
strFile.Format(_T("Save file %s"),szPathName);
MessageBox(strFile);
}


3.浏览文件夹SHBrowseForFolder

#include <ShlObj.h>//必须包含此头文件

TCHAR szPathName[MAX_PATH];
BROWSEINFO bInfo={0};
bInfo.hwndOwner=GetForegroundWindow();//父窗口
bInfo.lpszTitle=TEXT("浏览文件夹");
bInfo.ulFlags=BIF_RETURNONLYFSDIRS |BIF_USENEWUI/*包含一个编辑框 用户可以手动填写路径 对话框可以调整大小之类的..*/|
BIF_UAHINT/*带TIPS提示*/ |BIF_NONEWFOLDERBUTTON /*不带新建文件夹按钮*/;
LPITEMIDLIST lpDlist;
lpDlist=SHBrowseForFolder(&bInfo);
if (lpDlist!=NULL)
{
SHGetPathFromIDList(lpDlist,szPathName);
CString strFile = _T("");
strFile.Format(_T("Select path %s/n"),szPathName);
MessageBox(strFile);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息