2013-01-09 50 views
0

我正在使用C++和MFC。我需要修改打開文件對話框,因此只有文件夾包含* .txt文件必須可見。有任何想法嗎?使用過濾器打開文件對話框

+0

可能是File Open Dialog HOS的新候選者。 http://www.ronaldbieber.de/Interface_Hall_of_Shame/file_dialog.html – selbie

+1

@selbie:那個鏈接充滿了無知的觀點,它甚至不好笑。不過,我同意你的看法,即原始問題是要求實現一個沒有任何可用性考慮的功能。所以奧列格,現在就停在那裏。請。 – IInspectable

+0

@Tim,幸好我不認爲使用標準文件對話框是可行的。 –

回答

2

我對使用MFC進行編程沒有任何經驗,但這些都是我的疑惑。

沒有理由這樣做,特別是如果您要在所有可能的級別上過濾文件夾。試想一下,用戶打開C:,程序開始掃描整個磁盤。如果這個磁盤通過網絡連接,情況會更糟糕。

這就是爲什麼我不相信存在這樣MFC能力,所以你將不得不寫這樣的對話框,只有當你決定只使用嵌套的一些固定的水平來篩選文件夾中有可能的原因。

-1

使用GetOpenFileName並適當地設置OPENFILENAME結構實例的過濾器成員。

char szFile[MAX_PATH]; 

OPENFILENAME ofn = {0}; 
ofn.lStructSize = sizeof(ofn); 
ofn.hwndOwner = m_hWnd; 
ofn.lpstrFile = szFile; 
ofn.lpstrFile[0] = '\0'; 
ofn.nMaxFile = sizeof(szFile); 
ofn.lpstrFilter = "Text\0*.TXT\0"; 
ofn.nFilterIndex = 0; 
ofn.lpstrFileTitle = NULL; 
ofn.nMaxFileTitle = 0; 
ofn.lpstrInitialDir = NULL; 
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; 

if (GetOpenFileName(&ofn)) ... 
+0

該過濾器僅適用於當前選定的目錄。它不會根據它們的內容來過濾目錄。因此它不解決這個問題。 – IInspectable