2010-06-19 2 views
3

J'ai un TimerProc qui appelle MessageBox. Je veux que le MessageBox reste au-dessus des autres fenêtres. Ainsi, par exemple, la fenêtre parente règle le minuteur, puis je déplace une autre fenêtre par dessus. Lorsque la minuterie se déclenche, je veux que MessageBox apparaisse en haut de la fenêtre qui couvre l'application. Est-ce possible, et comment dois-je y aller?Rendre MessageBox reste au-dessus des autres fenêtres

Répondre

4

Je pense que vous voulez faire de System Modal comme MB_SYSTEMMODAL comme décrit here.

Et/ou de faire de la fenêtre qui est sur le dessus le propriétaire du MessageBox.

2

Avez-vous besoin de la même boîte de message qui est déjà ouverte pour aller en haut? Ou un nouveau pour ouvrir au-dessus des autres fenêtres?

Si vous voulez la même MessageBox qui est déjà ouvert vient d'apporter au sommet:

Je pense que vous pouvez obtenir une poignée de fenêtre MessageBox si vous utilisez EnumThreadWindows mais je ne l'ai jamais essayé moi-même. Donc, si cela fonctionne, vous pouvez utiliser sa poignée de fenêtre dans un appel à BringWindowToTop.

Si obtenir le handle MessageBox ne fonctionne pas pour vous, vous pouvez simplement créer votre propre fenêtre qui ressemble à une boîte de message à la place, puis appelez BringWindowToTop à la place.

Si vous souhaitez apparaitre une nouvelle MessageBox sur le dessus:

Si vous voulez un nouveau MessageBox chaque fois que vous pouvez utiliser le drapeau MB_SYSTEMMODAL comme décrit dans la documentation MessageBox. MB_TOPMOST est dit être ignoré dans Vista et au-dessus.

Questions connexes