您的位置:首页 > 其它

各种有关文件的对话框的创建方法

2016-04-21 21:01 253 查看
如图所示,工程中列举了常用对话框的创建方法,如保存对话框,文件选择对话框,文件夹选择对话框。后续有更新。链接:工程源代码

保存对话框创建:

UpdateData(TRUE);

CString filename = "1.txt";

CFileDialog saveDlg(FALSE, NULL, filename);//第一参数为FALSE则是保存对话框,TRUE则是打开文件对话框

if (IDOK == saveDlg.DoModal())

{

m_save = saveDlg.GetPathName();

m_CSave.SetWindowTextA(m_save);

}

选择文件夹对话框,ulFlags有很多组合方法,可自由组合:

void CFileDiaDlg::OnSetFlags()
{
UpdateData(TRUE);
if (m_check1)
{
bi.ulFlags = BIF_RETURNONLYFSDIRS;
}
if (m_check2)
{
bi.ulFlags = BIF_BROWSEINCLUDEFILES;
}
if (m_check3)
{
bi.ulFlags = BIF_EDITBOX;
}
if (m_check1 && m_check3)
{
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX;
}
if (m_check2 && m_check3)
{
bi.ulFlags = BIF_BROWSEINCLUDEFILES | BIF_EDITBOX;
}
if (m_check4)
{
bi.ulFlags = BIF_USENEWUI;
}
if (m_check1 && m_check4)
{
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
}
if (m_check2 && m_check4)
{
bi.ulFlags = BIF_BROWSEINCLUDEFILES | BIF_USENEWUI;
}
}

void CFileDiaDlg::OnBnClickedFolderButton()
{
// TODO:  在此添加控件通知处理程序代码
UpdateData(TRUE);
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = m_hWnd;
bi.lpszTitle = _T("请选择一个文件夹:");
OnSetFlags();
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
BOOL bRet = FALSE;
TCHAR szFolder[MAX_PATH * 2];
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_folder = szFolder;
m_CFolder.SetWindowTextA(m_folder);
}
}


文件选择对话框,dw也有很多组合方法,可按需选择组合:

void CFileDiaDlg::OnSetDw()
{
if (m_check5)
{
dw = OFN_ALLOWMULTISELECT; //可以选择多个文件
}
if (m_check6)
{
dw = OFN_CREATEPROMPT; //如果输入的文件名不存在,则返回询问是否创建消息框
}
if (m_check7)
{
dw = OFN_FILEMUSTEXIST; //只能输入已存在的文件名
}
if (m_check8)
{
dw = OFN_FORCESHOWHIDDEN; //可以显示隐藏的文件
}
}

void CFileDiaDlg::OnBnClickedFileButton()
{
// TODO:  在此添加控件通知处理程序代码
UpdateData(TRUE);
OnSetDw();
CFileDialog filedlg(TRUE, NULL, NULL, dw);
if (IDOK == filedlg.DoModal())
{
m_file = filedlg.GetPathName();
m_CFile.SetWindowTextA(m_file);
}
}






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: