Form n'apparaissant que lorsque le curseur est sur un bord de l'écran

cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009 - 21 avril 2005 à 12:04
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009 - 25 avril 2005 à 08:18
Bonjour,

Ma question est dans le sujet. Je souhaites faire une appli avec une form qui serait chargée au démarrage et cachée. Cette form n'apparaitrait que lorsque le curseur de la souris irait contre un bord de l'écran. Comme la barre des taches de windows.

Quelqu'un a une idée?

Merci d'avance

@ plus

lagoelle
A voir également:

16 réponses

sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
21 avril 2005 à 14:10
Salut, t'as essayé de tester la position de ton curseur ? Peut-être un truc du genre:

bool auBord = false;

auBord = (
(Cursor.Position.X >= SystemInformation.WorkingArea.Width)
&& (Cursor.Position.Y >= SystemInformation.WorkingArea.Height) );

while (auBord == false)
{
Form1.Hide();
}

if (auBord == true) // ce test n'est pas obligatoire je pense, tout dépend de ton traitement
{
Form1.Show();
}

enfin je ne suis pas certain de ce que je propose...

Enfin, pour l'information, WorkingArea c'est la zone du bureau (donc sans les barres de tâches) et tu précises pas réellement si tu veux que ta form apparaisse quand tu TOUCHE le bors ou quand t'ARRIVE dans la barre des taches...enfin autrement, au lieu de WorkingArea, t'as aussi PrimaryScreenSize qui peut peut-être te servir, ou VirtualScreen (mais je ne suis pas sûr que ça marche ça...)

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
21 avril 2005 à 16:02
Merci pour l'idée, je vais essayé.... je te tiens au courant ;-)

@ plus

lagoelle
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
21 avril 2005 à 16:07
Mais, je pense à un souci: où mettre ce code ?

Le but est que cette form soit accessible dès que le curseur atteint, par exemple, le bord haut de l'écran. Et ce même si je suis sur d'autres applis...

@ plus

lagoelle
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
21 avril 2005 à 16:14
niahahhhh!!!
. . . . j'en sais rien .. . lol
hmmm...tu voudrais que ton appli tourne en arrière plan en fait...en gros c'est ça...et qu'elle apparaisse quand tu touche un bord...un peu comme les barres outils Windows quoi...bah je sais qu'en Java y'a des Listener...J'imagine qu'il doit y'en avoir aussi en C#...si t'arrives à mettre un Listener sur l'évènement qui gère le mouvement du curseur ou peut-être sur l'événement qui gèrerait la position du curseur (du style quand il est supérieur ou égal aux limites du bureau/écran...)

Là je suis un peu dans le flou aussi, mais en tous cas ça m'intéresse par curiosité de savoir...on peut continuer à réfléchir à 2 si tu veux... :)

"Un seul Être vous manque, et tout est dépeuplé..."
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 avril 2005 à 16:20
Quand le mouvement de la souris se fait en dehors du form ce n'est pas si simple.
Le seul moyen que je connaisse c'est un hook global (system-wide hook).
Mais il doit bien y avoir plus simple que ça (enfin, j'espère pour toi)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
21 avril 2005 à 16:32
. . . euh je relève pas...lol je sais même pas de quoi il parle là donc euuuhh....je pensais pas que mon idée était la meilleure c'est sûr mais je voyais vraiment pas comment faire autrement...(d'un autre côté mes connaissances sont bien limitées étant donné que je débute :-D)

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
21 avril 2005 à 16:40
J'ai essayé ça:

#region Using directives


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;


#endregion


namespace WindowsApplication1
{
partial class Form1 : Form
{
public bool AuBord;
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
this.Hide();
}


private void Form1_MouseMove(object sender, MouseEventArgs e)
{
AuBord = (Cursor.Position.Y >= SystemInformation.WorkingArea.Height);


if (AuBord == true)
{
this.Show ();
}
}


private void button1_Click(object sender, EventArgs e)
{
this.Hide();
}
}
}

mais ça marche pas...
Par contre, coq, je suis comme sphaxslayer, je comprends pas du tout le hook
Tant pis, si c'est trop compliqué, je vais gérer différemment... :-(

@ plus

lagoelle
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 avril 2005 à 16:54
Le MouseMove du Form n'est déclenché que quand le pointeur est justement sur le Form, donc ça ne marchera pas.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
21 avril 2005 à 16:57
pas bête...en fait je me demande si c'est réellement faisable ce chose...enfin bon...'doit bien y'avoir un moyen même détourné...et si tu joues sur le MouseLeave dans la Form, et que dans l'action tu lui demandes de boucler sur la position du pointeur justment...? nan....?

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 avril 2005 à 17:01
Une solution serait d'utiliser un Timer (intervalle d'une seconde ça devrait etre suffisant) pour verifier la position du curseur et afficher ou non le form.
Ce serait même moins lourd que de traiter tout les messages de deplacement de la souris (ça en fait un paquet par secondes ^^)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 avril 2005 à 17:04
Sinon si, le hook global c'est faisable, mais pas completement en managé.
Ce que je me demande c'est s'il n'y aurais pas une notification toute prete dans les APIs pour prevenir de l'arrivée du curseur sur un des bord de l'écran.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
21 avril 2005 à 17:22
Je vais essayer avec le timer, c'est ce qui parait le plus simple ;-)

@ plus

lagoelle
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
22 avril 2005 à 14:52
J'ai pensé à une petite astuce: mettre une form de la largeur de l'écran et d'un pixel ou 2 de haut en position "toujours au dessus des autres fenetres", et gérer ainsi avec l'évenement mouse_enter.
Le hic c'est qu'il semble que VS n'accepte pas une hauteur inférieure à 24...
Si vous avez une idée ;-)

Sinon, dans le meme esprit, il faudrait dire à l'ordi que l'espace de travail est réduit de façon à créer une autre barre style démarrer....

@ plus

lagoelle
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 avril 2005 à 16:47
Jette un coup d'oeil à ceci : http://www.codeproject.com/csharp/csdoesshell3.asp

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
22 avril 2005 à 16:50
sympa le lien merci coq :)

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_lagoelle Messages postés 102 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 17 mars 2009
25 avril 2005 à 08:18
excellent !!! Merci coq

@ plus

lagoelle
0
Rejoignez-nous