2010-06-19 2 views
2

J'essaye d'accomplir ceci dans Win32, mais je suis sûr que les mêmes règles s'appliquent dans le monde de WinForms.Lors de l'initialisation d'une fenêtre principale win32, quel est le meilleur moment pour afficher un dialogue modal?

Q: Je crée ma fenêtre principale, puis, lorsqu'elle est affichée, je souhaite afficher une boîte de dialogue modale. Le problème est; comment puis-je savoir quand la fenêtre principale est complètement initialisée et visible? C'est, exactement quand est le meilleur moment pour montrer le dialogue?

idées:
1) une poignée WM_CREATE et comme étape finale PostMessage(WM_USER_MESSAGE). Manipuler WM_USER_MESSAGE et montrer le dialogue modal!
2) Saisissez WM_CREATE et réglez une temporisation à ~ 300 ms. Manipuler WM_TIMER, tuer la minuterie et afficher la boîte de dialogue modale!
3) Gérer WM_ACTIVATE, si première activation PostMessage(WM_USER_MESSAGE). Manipuler WM_USER_MESSAGE et montrer le dialogue modal!
4) Saisissez WM_SHOWWINDOW, si la boîte de dialogue modale du show show s'affiche pour la première fois!

Les approches ci-dessus fonctionnent, mais le résultat n'est pas toujours bon. Y a-t-il une meilleure méthode? Peut-être gérer les messages WM_ENTERIDLE ou WM_KICKIDLE d'une manière ou d'une autre?

Répondre

0

Oui. exactement le meilleur moment pour montrer la boîte de dialogue est:

Vous pouvez gérer WM_CREATE et vérifier la poignée de fenêtre est valide en utilisant la fonction:

:: GetSafeHwnd(m_hwnd) 

Et nous pouvons montrer de dialogue modale à ce moment-là.

Questions connexes