2010-01-06 4 views
2

Conformément à this question, je personnalise une boîte de dialogue Win32 Save File avec une description de modèle personnalisé. Maintenant, j'ai un problème où la boîte de dialogue Enregistrer fichier ne montre pas la barre de gauche avec mon ordinateur, les endroits récents, etc. Je peux confirmer que la suppression du modèle personnalisé ramène la barre latérale de gauche. Qu'est-ce que je fais qui justifie son retrait? Comment puis-je obtenir les deux?Personnalisé Windows Enregistrer la boîte de dialogue n'est plus envie - Pourquoi?

Mise à jour: Voici une partie du code que j'ai:

info.hInstance = MyGetModuleInstanceRoutine(); 
info.lpfnHook = MyOFNHookProcRoutine; 
info.lpTemplateName = MAKEINTRESOURCEW(myCustomResourceID); 
info.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_NOREADONLYRETURN | 
       OFN_ENABLESIZING | OFN_ENABLEHOOK | OFN_EXPLORER | OFN_ENABLETEMPLATE; 

::GetSaveFileNameW(&info); 

Notes:

  • MyOFNHookProcRoutine retourne toujours 0.
  • Je suis conscient du drapeau étendu OFN_EX_NOPLACESBAR et il est non défini (FlagsEx est 0).
+0

Vous êtes aux prises avec une montagne d'appcompat. Postez votre code dans un service de partage de fichiers afin que quelqu'un puisse y jeter un coup d'œil. –

Répondre

1

Ajouter à la réponse de RED SOFT ADAIR-StefanWoe:

Set WINVER et _WIN32_WINNT à une valeur> = 0x0500.

La taille de la structure OPENFILENAME a augmenté pour Windows 2000 et l'espace supplémentaire inclut le membre FlagsEx; apparemment Windows assume le drapeau OFN_EX_NOPLACESBAR si la structure est trop petite pour le contenir. Assurez-vous que le membre lStructSize est correctement défini.

+0

C'était mon problème; la définition de lStructSize à sizeof (OPENFILENAMEW) a résolu le problème; Merci! – fbrereto

1

Essayez d'utiliser

#define _WIN32_WINNT 0x0501 

avant

#include "windows.h" 

qui a résolu accidentellement pour moi le même problème.