2010-08-18 5 views
3

J'ai créé une fenêtre avec une barre d'outils avec quelques icônes et je lance une autre fenêtre en cliquant sur l'icône disponible dans la fenêtre principale.Le destructeur de classe (fenêtre enfant) n'est pas appelé

La première fenêtre est créée à l'aide de la méthode CreateWindowEx. celui que je clique en utilisant une icône est créé en utilisant la ressource de dialogue. Donc, sans fermer la boîte de dialogue, je ferme directement la fenêtre principale. Je vois que la fenêtre de dialogue ne se ferme pas. Lorsque je débogue, le contrôle ne vient pas au destructeur de la deuxième fenêtre.

Lorsque je les ferme individuellement (c'est-à-dire d'abord dans une boîte de dialogue) puis dans la fenêtre principale, tout va bien.

S'il vous plaît aider, ce qui pourrait manquer quand je ferme la fenêtre principale. Je veux dire que le destructeur de classe n'est pas appelé.

+2

Um, les fenêtres n'ont pas de destructeurs; Que veux-tu dire exactement? –

+0

Vous utilisez clairement un framework C++ qui enveloppe l'API Windows. Il y a un certain nombre de façons dont les cadres pourraient se confondre ici, ATL, WTL et MFC * devraient être assez fiables. D'autres peuvent être confondus avec la destruction hors de l'ordre. Lequel voulez-vous dire? –

Répondre

1

Gérez le message de votre fenêtre principale WM_CLOSE et vérifiez si la fenêtre de dialogue est ouverte ou non. Si la fenêtre de dialogue est ouverte, fermez-la en utilisant la poignée que vous avez récupérée lors du chargement à partir des ressources.

Questions connexes