VC 打开文件对话框/保存文件对话框/ 选择文件夹对话框

#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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值