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 !