GetOpenFilename()
ユーザーにファイルを選択させるために使用します。コードは次のとおりです。
wchar_t buffer[MAX_PATH] = { 0 };
OPENFILENAMEW open_filename = { sizeof (OPENFILENAMEW) };
open_filename.hwndOwner = handle_;
open_filename.lpstrFilter = L"Video Files\0*.avi;*.mpg;*.wmv;*.asf\0"
L"All Files\0*.*\0";
open_filename.lpstrFile = buffer;
open_filename.nMaxFile = MAX_PATH;
open_filename.lpstrTitle = L"Open media file...";
open_filename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
::GetOpenFileNameW(&open_filename);
ファイルダイアログが表示されますが、
- フィルタを変更するか
- 「マイコンピュータ」をクリックします
ファイルリストが空になります。を押し[F5]
ても効果はありませんが、親フォルダーに切り替えて元のフォルダーに戻ると(フィルターを変更した場合)、フィルターは正常に機能し、ファイルがリストに表示されます。
編集:私のシステムはWindows XP(SP3)32ビットです-特別なことは何もありません。これは、同じ構成を持つ他のマシンでも発生します。