1. 程式人生 > >為程序添加“打開文件”對話框和“另存為”對話框

為程序添加“打開文件”對話框和“另存為”對話框

eat blog start 屬性 getpath dia txt 文件對話框 parent

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

  註意:各過濾字符串對之間及字符串對內部的兩個字符串之間均以\0分割,過濾器結尾必須以\0\0結尾;對於一個字符串對來說,第一個字符串用於描述,如“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)\0*.txt\0All Files(*.*)\0*.*\0\0";
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)\0*.txt\0所有文件(*.*)\0*.*\0\0";
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);
}

為程序添加“打開文件”對話框和“另存為”對話框