2009-08-12 7 views
0

J'utilise MFC pour écrire une application GUI. J'ai choisi l'application basée sur le dialogue, et mis contrôle de l'image, la boîte d'édition et les boutons sur elle. Lorsque le contrôle d'image est mappé à la classe dérivée de CWnd en utilisant DDX_Control, toutes les boîtes de message (y compris la boîte de message système par défaut lorsque vous entrez une entrée invalide dans la zone d'édition) sont cachées derrière la boîte de dialogue principale jusqu'à ce que vous utilisiez alt + tab "pour les amener à l'avant. Si je mappe le contrôle d'image à la classe CStatic par défaut, le problème ci-dessus a disparu.Pourquoi une boîte de message est toujours cachée derrière la boîte de dialogue principale et ne peut pas être affichée en haut

Est-ce que quelqu'un a quelques conseils pour résoudre ce problème?

Répondre

0

Essayez d'appeler

SetWindowPos(&CWnd::wndNoTopMost, 0, 0, 0, 0 SWP_NOMOVE | SWP_NOSIZE); 

sur la fenêtre de dialogue. MessageBox sera créé comme une fenêtre "top" et cela devrait déplacer la fenêtre de dialogue derrière l'une de ces fenêtres "top".

+0

Merci pour votre réponse. Voici le code dans la classe de dialogue en suivant vos instructions: CWnd * pWnd = CWnd :: FromHandle (HWND_NOTOPMOST); SetWindowPos (pWnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); AfxMessageBox (msg, MB_OK | MB_ICONEXCLAMATION | MB_SETFOREGROUND | MB_TOPMOST | MB_TASKMODAL); La boîte de message est toujours cachée avant les fenêtres de dialogue. Ai-je fait quelque chose de mal ici? Toute aide est appréciée. –

+0

Je ne sais pas si ce que vous faites, à cause de mon erreur, va marcher. J'ai modifié mon message original. Il peut encore ne pas fonctionner mais vaut la peine :) – Goz

+0

Malheureusement, il ne fonctionne toujours pas :) –

Questions connexes