IDR_MAINFRAME
SQLiteAnalyzer\n\nSQLiteAnalyzer\nSQLite數據庫文件(*.db;*.db3;*.sqlite;*.sqlitedb)\n.db;.db3;.sqlite;.sqlitedb\nSQLiteAnalyzer.Document\nSQLiteAnalyzer.Document
效果圖
弊端:文件類型欄只顯示兩欄,一欄是All Files(*.*),另一欄是指定文件類型的集合。這樣要是想要".db”這種類型就不好整。
方法二:
分析默認情況下程序執行流程
1.調用CWinApp::OnFileOpen方法處理FileOpen事件:
ON_COMMAND(ID_FILE_OPEN,&CWinApp::OnFileOpen)
CWinApp::OnFileOpen()
{
ENSURE(m_pDocManager!=NULL);
m_pDocManager->OnFileOpen();
}
調用CWinApp::OnFileOpen()期間又調用CDocManager::OnFileOpen處理FileOpen事件
void CDocManager::OnFileOpen()
{
//prompt the user (with all document templates)
CString newName;
if (!DoPromptFileName(newName,AFX_IDS_OPENFILE,
OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,TRUE,NULL))
return;//Open Cancelled
AfxGetApp()->OpenDocumentFile(newName);
//if returns NULL,the user has already been alerted
}
因此可以繞過CWinApp和CDocManager,在CMyApp中CMyApp::OnFileOpen自定義一個文件打開對話框,然後調用CWinApp::OpenDocumentFile方法
具體操作:
1,註釋掉"ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)"
2,添加在CMyApp中響應ID_FILE_OPEN事件
void CMyApp::OnFileOpen()
{
// TODO: 在此添加命令處理程序代碼
LPCTSTR szFilter = L"DTriNet文件(*.cpp)|*.cpp|CSV文件(*.csv)|*.csv|所有文件(*.*)|*.*||";
CFileDialog oFileDlg(TRUE, L".cpp", NULL, 4|2, szFilter);
if(oFileDlg.DoModal() == IDOK)
OpenDocumentFile(oFileDlg.GetFileName());
}
方法二轉自http://pzy84.blogbus.com/logs/12458346.html與http://www.cnblogs.com/okaimee/archive/2010/05/31/1748543.html