CWinApp :: OpenDocumentFile crée une nouvelle fenêtre

Récemment, nous avons déplacé notre projet C ++, qui utilise MFC, de VS2008 à VS2010.

Et il y a un petit problème: dans notre interface MDI, après avoir appelé une fonction CWinApp :: OpenDocumentFile, l’application non seulement ouvre le fichier, mais crée également une nouvelle fenêtre MDI vide.

Si nous modifions le jeu d’outils (Propriétés du projet -> Général -> jeu d’outils Plate-forme) en v90 (VS2008), nous ne rencontrons pas ce problème.

Peut-être que quelqu’un a vu le même problème et sait ce que nous faisons mal?

Résolu peut-être que l’explication aidera quelqu’un:

Le problème était dans la fonction MFC:

CDocument* CDocManager::OpenDocumentFile(LPCTSTR lpszFileName) 

dans VS2008, il a appelé une fonction

 return pBestTemplate->OpenDocumentFile(szPath); 

dans VS2010, il appelle une autre fonction (avec un nombre de parameters différent)

 return pBestTemplate->OpenDocumentFile(szPath, bAddToMRU, TRUE); 

que nous n’avons pas annulés dans notre propre implémentation de CMultiDocTemplate

effectivement, il y a une modification dans le fichier docmgr.cpp qui appelle la fonction opendocumentfile.

si vous avez dérivé une classe de CMultiDocTemplate, surveillez ces modifications.

En fait, votre message m’a aidé à trouver une erreur dans mon application.