0

C++ と MFC を使用しています。ファイルを開くダイアログを変更して、 *.txt ファイルを含むフォルダーのみが表示されるようにする必要があります。何か案は?

4

2 に答える 2

2

私はMFCを使ったプログラミングの経験はありませんが、これらは私の疑問です。

可能なすべてのレベルでフォルダをフィルタリングする場合は特に、そうする理由はありません。C:ユーザーが開いて、プログラムがディスク全体のスキャンを開始すると想像してみてください。このディスクがネットワーク経由で接続されている場合はさらに悪化します。

これが、MFCにそのような機能があるとは思えない理由です。そのため、このようなダイアログを作成する必要があります。これは、一定レベルのネストのみを使用してフォルダーをフィルター処理する場合にのみ可能です。

于 2013-01-09T16:58:26.707 に答える
-1

GetOpenFileNameOPENFILENAME 構造体インスタンスのフィルター メンバーを適切に使用および設定します。

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)) ...
于 2013-01-16T15:12:41.747 に答える