IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[Win32] Limiter la souris dans la zone de dessin de la fenêtre.


Sujet :

Windows

  1. #1
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut [Win32] Limiter la souris dans la zone de dessin de la fenêtre.
    Bonjour à tous,

    je cherche un moyen de bloquer la sortie de la souris pour la laisser dans la zone de dessin. J'entends par zone de dessin le Device Context (ou l'on peux dessiner OpenGL/DirectX etc..)?

    Je cherche une façon plus propre que de vérifier à chaque frame si la position de la souris sort et la repositionner en conséquence. Il existe bien une fonction qui permet de capturer la souris sur un fenêtre et de ne pas l'autoriser à sortir du Device Context?

    Merci,
    Homer J. Simpson


  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    ClipCursor doit faire ce que tu veux, mais ça a l'air dangereux.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Merci!

    Mais effectivement ça a l'air pas mal bancale comme truc. Je pense pas trop avoir le choix de limiter avec un SetCursorPos mais ça m'embête de prendre ca en charge plutôt que de le laisser a Windows.

    Pour information, mon but de "capturer" ( ne pas confondre avec le SetCapture) pour un context OpenGL. J'utilise les Raw Input, WGL, Win32 et OpenGL sans aucune librairie externe ( pas de SDL ou compagnie ). Le but est simple, avoir les input souris clavier en "bypassant" les WM_MOUSEXX et WM_KEYXXX message pour avoir une position delta de la souris (imaginons un FPS on veut tourner tout le temps et pas juste lorsque le curseur est dans la fenêtre en foreground).
    Donc ne pas afficher le curseur c'est pas compliquer, mais lorsque je bouge mon personnage sur 360° je ne veux pas que la souris se promène autour en mode fenêtré

    Donc la solution GetCursorPos avec la taille du Device Context et limiter entre 0 et size max c'est pas un souci, mais je me trouve cela étrange qu'il n'y ai pas de fonction de capture.(Pour direct input il est possible de la faire http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx) le mode exclusive et non exclusive.

    Merci de votre aide
    Homer J. Simpson


  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Bon et bien j'ai fini par trouver de quoi qui me convient merci Medinoc j'ai utiliser ClipCursor

    Voici comment j'ai fait:

    1- récupérer la zone client en coordonnée écran:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void GetClientScreenRect(HWND hWnd, LPRECT rect)
    {
    	GetClientRect(hWnd, rect);
    	ClientToScreen(hWnd, (LPPOINT)&rect->left);
    	ClientToScreen(hWnd, (LPPOINT)&rect->right);
    }
    2- limiter dans la zone client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void LimitCursorToClientZone(HWND hWnd, bool limit)
    {
    	if(limit)
    	{
    		RECT rect;
    		GetClientScreenRect(hWnd,&rect);
    		ClipCursor(&rect);
    	}
    	else
    		ClipCursor(NULL);
    	
    }
    Encore merci!
    Homer J. Simpson


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bloquer le curseur de la souris dans une zone
    Par Andalor dans le forum IHM
    Réponses: 9
    Dernier message: 02/11/2017, 10h42
  2. Comment limiter la souris dans son déplacement à l'écran
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 21/02/2013, 21h13
  3. limiter l'entrée dans une zone d'edition
    Par Allaedine dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 02/04/2012, 11h25
  4. Bloquer le curseur de la souris dans une zone
    Par ewp02 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 25/10/2011, 15h43
  5. Selection avec la souris dans une zone de texte
    Par GESCOM2000 dans le forum IHM
    Réponses: 8
    Dernier message: 11/02/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo