为程序添加“打开文件”对话框和“另存为”对话框

1、相关类:CFileDialog类

  CFileDialog(

    BOOL bOpenFileDialog,

    LPCTSTR lpszDefExt = NULL,

    LPCTSTR lpszFileName = NULL,

    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

    LPCTSTR lpszFilter = NULL,

    CWnd* pParentWnd = NULL

  );

    bOpenFileDialog:如果将此参数设为TRUE,则构建一个打开对话框;如果将此参数设为FALSE,则构建一个另存为对话框;

    lpszDefExt:指定默认的文件扩展名;

    lpszFileName:指定显示在文件对话框中的初始文件名;

    dwFlags:定制文件对话框,该参数值与OPENFILENAME结构体中的Flags字段相同;

    lpszFilter:用来指定一个或一组文件过滤器,只有选定的文件才会出现在文件列表中;

    pParentWnd:用来指定文件对话框的父窗口或拥有者窗口;

2、改变“打开”或“另存为”对话框的标题

  CFileDialog::m_ofn.lpstrTitle

3、设置过滤器(设置保存类型)

  CFileDialog::m_ofn.lpstrFilter

  注意:各过滤字符串对之间及字符串对内部的两个字符串之间均以分割,过滤器结尾必须以结尾;对于一个字符串对来说,第一个字符串用于描述,如“Text File(*.txt)”;第二个字符串表明使用的文件扩展名,多个扩展名可以用分号隔开,如“*.txt;*.text”;

4、获取和设置文件的相关属性

  CFileDialog::GetPathName

  CFileDialog::GetFileName

  CFileDialog::GetFileExt

  CFileDialog::GetFileTitle

  CFileDialog::GetNextPathName

  CFileDialog::GetStartPosition

//“另存为”对话框示例:
CFileDialog fileDlg(FALSE, "txt");
fileDlg.m_ofn.lpstrTitle = "我要保存在";
fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)*.txtAll Files(*.*)*.*";
if(IDOK == fileDlg.DoModal()) {
    CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
    file.Write("hello world!", strlen("hello world!"));
    file.Close();
}
//“打开”对话框示例:
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle = "我要打开";
fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)*.txt所有文件(*.*)*.*";
if(IDOK == fileDlg.DoModal()) {
    CFile file(fileDlg.GetFileName(), CFile::modeRead);
    char *pBuf;
    DWORD dwFileLen;
    dwFileLen = file.GetLength();
    pBuf = new char[dwFileLen + 1];
    pBuf[dwFileLen] = 0;
    file.Read(pBuf, dwFileLen);
    file.Close();
    MessageBox(pBuf);
}
原文地址:https://www.cnblogs.com/zhouwanqiu/p/6918866.html