2010-07-14 3 views
0

J'essaie d'utiliser la classe .NET OpenFileDialog en C++ et d'obtenir un bogue bizarre. Mon code de base est ci-dessous.Changer la liste déroulante "Fichiers de type" dans .NET OpenFileDialog efface la liste des fichiers bug

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); 

Lorsque le code atteint ce point, la boîte de dialogue s'ouvre comme prévu. Mais si je commute le menu déroulant "Fichiers de type", comme le ferait un utilisateur, les fichiers et répertoires répertoriés dans la boîte de dialogue disparaissent (quel que soit le filtre). Si je vais dans le répertoire parent et que j'entre le même répertoire enfant, les fichiers et répertoires sont correctement affichés, filtrés comme prévu. Est-ce que quelqu'un a une idée de pourquoi je pourrais avoir ce bug bizarre?

Pour votre information, je suis sur un ordinateur Windows XP 64 bits SP2, la construction avec Visual Studio 2010 pour .NET 4.

Répondre

0

Ce pur est le comportement du système d'exploitation. La boîte de dialogue réside dans le shell, la classe .NET wrapper est très fine autour de GetOpenFileName(). Je ne connais pas grand-chose à propos de XP x64, sauf que ce sont des roues d'entraînement pour Vista x64. Cela n'a pas été fait avec plusieurs serveurs COM non encore traduits en x64. Et que la mise à jour du SP3 ne m'a pas semblé idiot. Vous pouvez supposer que votre client est peu susceptible de voir le même problème. Je ne suis pas près d'un moment pour vérifier cela.

Questions connexes