Form au premier plan par dessus une fenêtre FullScreen

cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 - 27 juil. 2008 à 10:45
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 - 14 août 2008 à 09:16
Bonjour à tous !

Un problème se pose à moi depuis hier soir, je souhaite afficher ma Form par dessus une fenêtre pleine écran (un jeu vidéo). J'ai essayé la propriété TopMost, elle ne marche pas avec ma fenêtre en plein écran. J'ai essayé d'utiliser l'API SetWindowPos avec HWND_TOPMOST, marche pas. J'ai même essayé de rafraichir ma Form dans un thread pour la passer en TopLevel régulièrement, mais rien n'y fait.. Alors comment faire afficher ma Form au dessus d'une fenêtre fullscreen ?

Je précise que j'affiche ma form à la suite de l'appui sur une touche grâce à un hook. Le hook marche très bien, quand je suis dans le jeu, je vois la fenêtre qui s'affiche une fraction de seconde, puis qui passe derrière ..

Lorsque je ne suis pas dans le jeu, la propriété TopMost marche très bien.

Merci de votre aide.

-{ Saifer }-

5 réponses

cs_ChamY Messages postés 72 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 22 mai 2009
29 juil. 2008 à 01:08
Salut,

J'utilise ca dans mon code.
Je ne sais pas si c'est tres bien, mais ca marche dans mon cas :)

                Form2 maForm = new Form2();
                maForm.WindowState = FormWindowState.Normal;
                maForm.FormBorderStyle = FormBorderStyle.FixedDialog;
                maForm.TopMost = true;
                maForm.ShowDialog();

++
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
29 juil. 2008 à 12:11
Bonjour,


le problème c'est qu'un jeu se rafraichi en permanence donc il te faut gérer un timer pour mettre ta form sur le jeu et forcer à chaque passage du timer le activate (en plus du top most) ou alors il te suffit juste de passer ton jeu en mode fenêtre

-- Pourquoi faire simple quand on peut faire compliquer --
0
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
13 août 2008 à 18:57
Tout d'abord désolé pour cette réponse tardive, mais j'ai été très pris par un autre projet + mon taff..

En effet eldim, le problème vient bien du rafraichissement de l'écran. J'ai donc fais un thread qui active la fenêtre régulièrement, seul problème et de taille, lorsque ma fenêtre s'active le fenêtre en plein écran (c'est un jeu) se minimise dans la barre de tâche.
J'ai donc essayer une autre technique détournée, qui est de définir l'opacité de la fenêtre dans le thread (à la place de Activate()), ma fenêtre s'affiche bien par dessus mais difficilement, elle scintille et est complètement illisible !

Donc si vous avez une autre solution je suis prenneur (que ce soit n'importe qu'elle technique, n'importe quel langage) pour afficher une Form par dessus une fenêtre "fullscreen".

Merci ;)

-{ Saifer }-
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
14 août 2008 à 07:35
le mieux c'est de faire ton formulaire en directX

-- Y a autant de bugs dans un programme que de malles-façons dans une maison. Tout dépend de la taille --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
14 août 2008 à 09:16
Je vais essayer en C en directX. Mais je ne suis pas sûr que je puisse affiche ma fenêtre par dessus l'autre.
Sinon j'ai entendu parler de Detours (http://research.microsoft.com/sn/detours/), une librairie qui permet d'injecter son propre dans des fonctions, ca ca pourrait être pas mal sinon, jvais essayer cette piste et je vous tiens au courant ;)

-{ Saifer }-
0
Rejoignez-nous