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.