PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Gestion des événements Windows
Gestion des événements Windows
Started by Youenn, Mar., 25 2005 12:31 PM - 4 replies
Posted on March, 25 2005 - 12:31 PM
Je voudrais gérer 2 événements Windows en même temps sur une fenêtre quelconque.

Je sais comment intercepter l'événement "Clic Souris" (WM_LBUTTONDOWN) et je sais aussi comment intercepter l'événement "Déplacement Souris" (WM_MOVE).

Je voudrais réunir ces 2 événements en un seul, c'est à dire lancer une procédure automatiquement quand des 2 événements sont effectués en même temps. J'ai essayé d'additionner les 2 événements à la déclaration de l'événement mais rien ne se passe.

Si qq1 a une idée ?

Merci
Posted on March, 25 2005 - 7:05 PM
Effectivement on ne peut pas "additionner" les événements car il viennent à la queue leu leu dans une file et le programme les traite un par un.

Je crois même savoir que certains événements "doublent" les autres dans la file d'attente, ils sont prioritaires.

Pour ton problème je te suggére une solution avec une variable globale booléenne.
Tu la mets à vrai quand l'utilisateur enfonce le bouton de la souris
Tu la repositionnes à faux quand l'utilisateur le relache.

Et dans l'évenement WM_MOVE tu testes la valeur de ta variable

Ca devrait le faire.
Posted on March, 28 2005 - 1:35 AM
Bonjour,

Vous pouvez bien sur cumuler les evenements avec Windev.
Pour ce faire il vous suffit de rediriger tous les evenements dans une
procédure de votre choix en y passant comme numéro de message 0

Ce sera dans cette procédure que vous sélectionnerez les traitement à
effectuer selon les messages voulus.

Exemple
//Déclaration de l'évenement dans l'initialisation de la fenêtre
Evénement("MaProcedure","*.*",0)


Pour la procedure
[code]
PROCEDURE MaProcedure(pMessage, pwParam, plParam)
Selon pMessage
CAS WM_LBUTTONDOWN
//Traitement si bouton gauche enfoncé

CAS WM_MOVE
//Traitement sur déplacement de souris
Fin
SI pMessage = WM_LBUTTONDOWN Alors
//Traitement a effectuer
Fin

[DrCharly93] Animateur www.wdforge.org

"Youenn" <youenn.kerdevez@inextenso.fr> a écrit dans le message de news:
4243dd3e$1@news.pcsoft.fr...


Je voudrais gérer 2 événements Windows en même temps sur une fenêtre
quelconque.

Je sais comment intercepter l'événement "Clic Souris" (WM_LBUTTONDOWN) et
je sais aussi comment intercepter l'événement "Déplacement Souris"
(WM_MOVE).

Je voudrais réunir ces 2 événements en un seul, c'est à dire lancer une
procédure automatiquement quand des 2 événements sont effectués en même
temps. J'ai essayé d'additionner les 2 événements à la déclaration de
l'événement mais rien ne se passe.

Si qq1 a une idée ?

Merci
Posted on March, 28 2005 - 11:37 PM
Salut
Bien sur que l'on peut traiter les deux à la fois

si dessous un extrait de code
// Initialisation de la fenetre ou a la prise de focus

// La commande EXTERNE permet d'inclure automatiquement le fichier WINCONST.WL
// Ce fichier contient la valeur des constantes WINDOWS
// Ce code est à déplacer dans le code d'init du projet ou de la fenêtre
EXTERN "WINCONST.WL"

Evénement("EVE_SOURIS", MaFenêtre..Nom+".*", WM_MOUSEMOVE)
Evénement("EVE_SOURIS", MaFenêtre..Nom+".*", WM_LBUTTONDOWN)
Evénement("EVE_SOURIS", "menu.*", WM_LBUTTONDBLCLK)
//------------------------------------------------------------------------

Procedure en LOCAL pour la fenetre

Procedure EVE_Souris()

SourisPosX est un entier
SourisPosY est un entier

SELON _EVE.wMessage
CAS 512 :
SourisPosX=PoidsFaible(_EVE.lParam)
SourisPosY=PoidsFort(_EVE.lParam)
CAS 513 :
EVE_LBUTTONDOWN(_EVE.lParam)
CAS 515 :
EVE_LBUTTONDBLCLK(_EVE.lParam)
CAS 514 :


FIN

// La procédure ci dessus a été refaite de tête, mais faudra que tu fasses des
// essais car je ne me rappelle plus le code du Bouton Clic

//-------------------------------------------------------------------------


Procedure EVE_LBUTTONDBLCLK(lparam)

SourisPosX est un entier
SourisPosY est un entier

SourisPosX=PoidsFaible(lparam)
SourisPosY=PoidsFort(lparam)



//---------------------------------------------------------------------------
Procedure EVE_LBUTTONDOWN(lparam)

SourisPosX est un entier
SourisPosY est un entier

SourisPosX=PoidsFaible(lparam)
SourisPosY=PoidsFort(lparam)
Posted on March, 28 2005 - 11:48 PM
Re salut dans mon précédent message j'ai oublié de te dire qu'il existe des fonctions

telque

<Résultat> = ToucheEnfoncée(<Constante> [, <Changement d'état>])

Détails des paramètres

<Résultat> : Booléen

Vrai si la touche de contrôle est enfoncée ou a changé d'état depuis le dernier appel de la fonction ToucheEnfoncée , Faux dans le cas contraire.

<Constante> : Constante de type entier Identifie la touche de contrôle :

teShift Touche SHIFT

teControl Touche CTRL

teAlt Touche ALT

teBoutonG Bouton gauche de la souris

teBoutonD Bouton droit de la souris

teEchap Touche ECHAP

Tu peux t'en servir dans la Procedure EVE_Souris // Sous réserve que cette fonction existe dans ta version Windev ,pour moi c'est la neuf

Bonne Prog / a ton service