C ++で.NETクラスOpenFileDialogを使用しようとしていますが、奇妙なバグが発生しています。私の基本的なコードは以下の通りです。
OpenFileDialog^ openFileDialog = gcnew OpenFileDialog;
openFileDialog->InitialDirectory = "c:\\";
openFileDialog->Filter = "Bitmap|*.bmp|All Files|*.*";
openFileDialog->FilterIndex = 1;
openFileDialog->RestoreDirectory = true;
if (openFileDialog->ShowDialog() == DialogResult::OK)
MessageBox::Show(openFileDialog->FileName, "Information", MessageBoxButtons::OK, MessageBoxIcon::Information);
コードがこのポイントに達すると、期待どおりにダイアログが開きます。ただし、[ファイルの種類]プルダウンを切り替えると、ユーザーのように、ダイアログウィンドウに一覧表示されているファイルとディレクトリが(フィルターに関係なく)表示されなくなります。親ディレクトリに移動して同じ子ディレクトリに再度入ると、ファイルとディレクトリが正しく表示され、期待どおりにフィルタリングされます。なぜ私がこの奇妙なバグを抱えているのか誰かが知っていますか?
参考までに、私はWindows XP 64ビットSP2を使用しており、Visual Studio 2010 for.NET4でビルドしています。