#include <windows.h>
#include <ShlObj.h>
#include <tchar.h>
// 打开文件对话框
VOID OpenFileDialog()
{
// 打开文件对话框
OPENFILENAME ofn;
TCHAR szFileName[MAX_PATH] = { 0 }; // 保存文件完整路径
TCHAR szTitleName[MAX_PATH] = { 0 }; // 保存文件名
// 设置过滤条件
TCHAR szFilter[] = TEXT("TXT Files (*.txt)\0*.txt\0") \
TEXT("All Files (*.*)\0*.*\0\0");
ZeroMemory(&ofn, sizeof(ofn));
ofn.lpstrFile = szFileName; // 保存文件完整路径
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = szTitleName; // 保存文件名
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrFilter = szFilter;
ofn.lpstrDefExt = TEXT("txt"); // 默认扩展名
ofn.lpstrTitle = NULL;
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL; // 拥有该对话框的窗口句柄
if (GetOpenFileName(&ofn))
{
MessageBox(NULL, szFileName, _T("提示"), MB_OK | MB_ICONINFORMATION);
MessageBox(NULL, szTitleName, _T("提示"), MB_OK | MB_ICONINFORMATION);
}
}
// 保存文件对话框
VOID SaveFileDialog()
{
TCHAR szFileName[MAX_PATH] = { 0 };
TCHAR szTitleName[MAX_PATH] = { 0 };
TCHAR szFilter[] = TEXT("TXT Files (*.txt)\0*.txt\0") \
TEXT("All Files (*.*)\0*.*\0\0");
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = szTitleName;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrFilter = szFilter;
ofn.lpstrDefExt = TEXT("txt");
ofn.lpstrTitle = NULL;
ofn.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST;
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL; // 拥有该对话框的窗口句柄
if (GetSaveFileName(&ofn))
{
MessageBox(NULL, szFileName, _T("提示"), MB_OK | MB_ICONINFORMATION);
MessageBox(NULL, szTitleName, _T("提示"), MB_OK | MB_ICONINFORMATION);
}
}
// 选择文件夹对话框
VOID SelectDirectoryDialog()
{
TCHAR szPath[MAX_PATH]; //存放选择的目录路径
ZeroMemory(szPath, sizeof(szPath));
BROWSEINFO bi;
bi.hwndOwner = NULL; // 拥有该对话框的窗口句柄
bi.pidlRoot = NULL;
bi.pszDisplayName = szPath;
bi.lpszTitle = _T("请选择需要打包的目录:");
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if (lp && SHGetPathFromIDList(lp, szPath))
{
MessageBox(NULL, szPath, _T("提示"), MB_OK | MB_ICONINFORMATION);
}
else
{
MessageBox(NULL, _T("选择路径无效"), _T("提示"), MB_OK | MB_ICONINFORMATION);
}
}
int main(void)
{
SelectDirectoryDialog();
OpenFileDialog();
SaveFileDialog();
system("pause");
return 0;
}