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

MFC Discussion :

Empecher le curseur de sortir du dialog [FAQ]


Sujet :

MFC

  1. #1
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Par d�faut Empecher le curseur de sortir du dialog
    Salut,

    J'ai une dialogue qui est ouverte et je voudrais empecher le pointeur de sortir de la fen�tre et d'aller sur d'autre fen�tre (ou peut-�tre simplement d�sactiver une action sur une autre fen�tre qui ne serait pas au premier plan).

    J'ai d�j� fais une fonction qui me ram�ne le curseur � l'int�rieur de la fen�tre, il marche mais pas l'ext�rieur de ma dialog (il ne se passe rien, je perd m�me le focus)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    RECT rectposition;
    POINT pt;
     
    void StopCurseur (HWND hwnd)
    {
    	GetWindowRect(hwnd, &rectposition);
    	GetCursorPos(&pt);
    	if (pt.x > rectposition.right)
    		pt.x = rectposition.right;
    	if (pt.x < rectposition.left)
    		pt.x = rectposition.left;
    	if (pt.y > rectposition.bottom)
    		pt.y = rectposition.bottom;
    	if (pt.y < rectposition.top)
    		pt.y = rectposition.top;
    	SetCursorPos(pt.x,pt.y);
    	return ;
    }
    Visiblement, il ne faut pas la mettre dans la DLGPROC. Je suis encore un newbiz mais j'ai cru comprendre que lorque l'�v�nement dans la zone non-client WM_NCACTIVATE (ou autre WM_NC...) arrivait l'action �tait envoy� � la fonction g�rant les �v�nements de la fen�tre, et l� rien non plus. Ah bah merde alors...

    Quelqu'un saurait-il comment qu'on fait cela ?

    SeB

  2. #2
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Par d�faut
    Je me sens seul sur ce coup l�, personne ne veut r�pondre ?

    En tout cas, je progresse dans mon probl�me mais c'est pas encore au point : dans le gestionnaire d'�v�nement de ma boite de dialogue, j'ai mis �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    //Si le curseur se déplace mais reste dans la boite de dialogue Login
    case WM_MOUSEMOVE:
    	MAKEPOINTS (lParam) ;
    	pt.x= LOWORD (lParam);
    	pt.y= HIWORD (lParam);
    	GetWindowRect(hwnd, &rectposition);
    	GetClientRect(hwnd, &rectdimensions);
    	if (pt.x < rectdimensions.left)
    		pt.x = rectposition.left;
    	if (pt.x > rectdimensions.right)
    		pt.x = rectposition.right;
    	if (pt.y > rectdimensions.bottom)
    		pt.y = rectposition.bottom;
    	if (pt.x < rectdimensions.top)
    		pt.y = rectposition.top;
    	SetCursorPos(pt.x,pt.y);
    	break;
    Mais c'est l'inverse qui se produit mon pointeur ne peut plus rentrer dans la fen�tre... En plus il semble que les valeurs contenues dans rectposition soient les dimensions de ma fen�tre et non celle de sa position !

    SeB

  3. #3
    Membre confirm�
    Inscrit en
    Novembre 2002
    Messages
    35
    D�tails du profil
    Informations personnelles :
    �ge : 51

    Informations forums :
    Inscription : Novembre 2002
    Messages : 35
    Par d�faut
    Voila ta soluce =)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void StopCurseur (HWND hwnd) 
    { 
       RECT rc;
       GetWindowRect(hwnd, &rc);
       ClipCursor(&rc);
    }

  4. #4
    Membre confirm�
    Inscrit en
    Novembre 2002
    Messages
    35
    D�tails du profil
    Informations personnelles :
    �ge : 51

    Informations forums :
    Inscription : Novembre 2002
    Messages : 35
    Par d�faut
    Pour annuler le clip =)


  5. #5
    Membre confirm�
    Profil pro
    Ing�nieur R&D
    Inscrit en
    Juillet 2002
    Messages
    81
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 81
    Par d�faut
    La simplicit� est la sophistication supr�me.
    Et tu viens juste de le prouver.

  6. #6
    Membre � l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Par d�faut
    Merci, c'est vraiment sympa. C'est vrai que c'est beaucoup plus simple et en plus �a marche.

    SeB

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 30/07/2007, 15h23
  2. R�ponses: 6
    Dernier message: 07/11/2006, 09h23
  3. Empecher les utilisateurs de sortir de leur repertoire home sous debian
    Par Faith's Fall dans le forum Administration syst�me
    R�ponses: 7
    Dernier message: 24/04/2006, 19h05
  4. Emp�cher un curseur de sortir d'une JWindow
    Par Bighobbit dans le forum AWT/Swing
    R�ponses: 9
    Dernier message: 24/03/2006, 17h10
  5. Empecher une form de sortir du cadre...
    Par macdaemon dans le forum C++Builder
    R�ponses: 2
    Dernier message: 16/08/2004, 13h17

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