How to modify the default ‘Open’ dialog?

在 resource.rc 檔案中有一個 string table

可以讓程式設計師定義開啟文檔時提示的檔案類型

STRINGTABLE
BEGIN
    IDR_MAINFRAME  "Sample"
    IDR_SAMPLETYPE  "\nSample\nSample\nC++ Files (*.cpp)\n.cpp\nSample.Document\nSample Document"
END

 

但是如此一來就只會有 All Files 和新增的,要怎麼增加檔案類型分類呢

2014-08-23-01 

 

[實作過程]

1. 將 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

改成ON_COMMAND(ID_FILE_OPEN, CYourApp::OnFileOpen)

 

2. 撰寫你自己的 OnFileOpen() 函式

void CYourApp::OnFileOpen()
{
  // 設定自訂的檔案分類,格式可以參考 CFileDialog & SHBrowseForFolder()
  CString szFilter = "All Source Files|*.asm;*.s;*.dsp;*.h;*.hpp;*.hxx;*.ldf;|";
   szFilter.Append("Assembly Source Files|*.asm;*.s;*.dsp|");
   szFilter.Append("Header Files|*.h;*.hpp;*.hxx|");
   szFilter.Append("Linker Description Files|*.ldf|");
   szFilter.Append("Script Files|*.tcl;*.tc8;*.vbs;*.js;*.pys;*.pls;*.pcls|");
   szFilter.Append("All Files|*.*||");

  CFileDialog dlgFile(TRUE, NULL, NULL,
   OFN_HIDEREADONLY,
   szFilter,
   AfxGetMainWnd());

  if(IDOK == dlgFile.DoModal())
  {
    OpenDocumentFile(dlgFile.GetPathName());
  }
}

 

如此一來就可以自訂開啟舊檔時顯示多種自訂的檔案類型分類囉

2014-08-23-02

[參考資料]

MFC Doc/View: How to modify the default ‘Open’ dialog?