Je suis en train d'écrire une DLL de plug-in Win32 pour une application MFC tierce. La DLL doit afficher un dialogue modal. Lorsque je le fais en utilisant DialogBox()
ou une autre API Win32 (par exemple j'ai essayé d'écrire ma propre boucle modale), la fenêtre de l'application principale ne redessine pas tous les éléments: elle redessine les éléments standard, mais pas la zone client. Les boîtes de dialogue Modeless s'affichent très bien.Application MFC et boîte de dialogue modale non-MFC
je soupçonne que cela se produit parce que MFC n'a pas vraiment des boîtes de dialogue modales dans le sens Win32. Il peut seulement avoir une boucle de message et une boucle séparée dans DialogBox()
perturbe sa machine délicate. Voici a CodeProject article qui explique cela. Mais cet article de CodeProject a 9 ans, alors peut-être que les choses ont changé depuis. Quelqu'un pourrait-il nous éclairer là-dessus? L'application utilise MFC 8 (c'est-à-dire mfc80.dll
).
Mise à jour. Voici un lien vers le original question; il peut contenir des informations supplémentaires.
Mise à jour 2. Merci tout le monde; J'apprécie vraiment tous les conseils, cela m'aide certainement à avoir une vue d'ensemble de la façon dont les choses vont ensemble. Le premier chemin que je vais explorer est d'utiliser des boîtes de dialogue 'modales' MFC natives. (Puisque je fais tout cela à partir de Python, j'utiliserai des liaisons Python pour MFC, pywin32
). Cela prendra un certain temps; quand il sera prêt, je mettrai à jour le post avec les résultats.
+1 bonne question, je serai intéressé de voir la réponse! –
Voir aussi http://stackoverflow.com/questions/5058929 dont cette question est une suite (plus ou moins). – 0xC0000022L
pourriez-vous s'il vous plaît utiliser Spy ++ (livré avec Visual Studio) ou une autre application similaire (que je connais peut être trouvé à http://www.catch22.net/software/winspy) pour savoir si la zone client de la "console" "La fenêtre est plus qu'une fenêtre enfant unique?! – 0xC0000022L