我正在尝试在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 .NET 4构建。
答案 0 :(得分:0)
这是纯粹的操作系统行为。该对话框存在于shell中,.NET包装类是GetOpenFileName()周围非常薄的一个。
我对XP x64了解不多,除了它是Vista x64的训练轮。尚未将几个尚未转换为x64的COM服务器完成。并且它没有得到SP3更新听起来像我。您可以假设您的客户不太可能看到同样的问题。我现在不接近验证这一点。