Gérer des événements particuliers dans WinDev® n'est pas toujours facile. En effet, un certains nombre d'entre eux sont gérés automatiquement mais quand on ne le trouve pas parmi eux, il faut programmer celui qui nous intéresse avec la fonction Événement. Mais comment savoir quel est le code de l'événement qui nous intéresse.
Les solutions sont les suivantes :
-
chercher dans la liste des événements Windows et rechercher parmi les constantes commençant par WM_ ;
-
demander à votre moteur de recherche favori ;
-
chercher par vous même le code.
Chercher par vous même
Lorsque les deux premières solutions ne fonctionnent pas, il faut chercher. Cela se fait à petit pas et par élimination. Pour cela, j'utilise le code suivant :
Evénement(iSurEvenement, NomDuChampTesté, 0)
PROCEDURE INTERNE iSurEvenement(MessageWindows, wParam, lParam)
SELON MessageWindows
AUTRE CAS
Trace(MessageWindows)
FIN
FIN
Par exemple, je cherche à trouver le message Windows correpondant à un clic dans la fenêtre. Je procède ainsi :
- j'indique comme champ le nom de ma fenêtre (à la place de NomDuChampTesté) ;
- j'exécute ;
- une trace s'affiche pour chaque action sur ma fenêtre, mais dans un premier temps je n'effectue pas mon action ;
- je stoppe l'exécution et je rajoute dans le SELON tous les cas qui ne m'intéressent pas
- je continue ainsi et lorsque j'ai éliminé tous les événéments ne correspondant pas à ce que je souhaite, j'effectue mon action (clic dans la fenêtre) ;
- je continue à éliminer tous les messages jusqu'à ce que je trouve celui qui m'intéresse.
A la fin, mon code ressemble à ça :
Evénement(iSurEvenement,MaFenêtre..Nom, 0)
PROCEDURE INTERNE iSurEvenement(MessageWindows, wParam, lParam)
SELON MessageWindows
CAS 32
CAS 512
CAS 132
CAS 2036
CAS 2037
CAS 161, 533, 274
CAS 134, 160, 1735, 1839, 1894, 28, 36, 49343, 6, 641, 642, 674, 7, 70, 71, 799, 8
AUTRE CAS
Trace(MessageWindows)
FIN
FIN
Et les codes qui m'intéressent sont dans ma trace et correspondent à 513 et 514.
Avec cette méthode, vous devriez pouvoir gérer pas mal de cas particulier, mais je vous l'avoue, il y a des événements que je n'ai jamais réussi à trouver.
Merci d'avoir ouvert cette treizième page du calendrier.
Je vous souhaite une bonne journée !