évenement MouseOut ?

Résolu
Signaler
Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009
-
Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009
-
Bonjour

En utilisant un TApplicationEvent:

Dans un Form1 je positionne un bool à vrai quand l'utilisateur clique sur Image1 (un TImage, évènement OnMouseDown de Image1)

le but: laisser le bool à vrai tant qu'on continue de cliquer dans l'image
mais le positionner à faux dès qu'on clique sur un autre contrôle de l'application (même formulaire ou d'un autre formulaire). Ca fonctionnerait un peu comme un événement "MouseOut"...

mon code de départ:

void __fastcall TFormReglage::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{

   static unsigned int oldwparam;
   static long oldlparam;

   switch   (Msg.message)
   {
   case   WM_LBUTTONDOWN:
           if ( OkForm1 )
           {
              //(là, mon test n'est pas le bon: je voudrais pouvoir tester que le controle n'est plus Form1->Image1)
              if ( ( oldwparam != Msg.wParam ) && ( oldlparam != Msg.lParam ) )
                  if (Form1->OnDessine)
                     Form1->OnDessine = false;
              oldwparam = Msg.wParam;
              oldlparam = Msg.lParam;
              break;
           }
   case   WM_LBUTTONUP:
      //...
   default:
      //...
   } 
}

rem: c'est sous C++ Builder mais ça doit pouvoir se généraliser et intéresser quelqu'un.

3 réponses

Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009
1
"
Rappel: je cherche, "tout simplement" , à savoir quel contrôle de mon application a provoqué l'événement WM_LBUTTONDOWN...
"

EUREKA ! j'ai trouvé de quoi me tirer d'affaire

dans TForm1::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)

le paramètre Msg a une propriété hwnd.

Avec l'instruction:
AnsiString machin = FindControl(Msg.hwnd)->Name;
je retrouve le nom du "parent" du controle qui a "shooté" l'évènement. Je creuserai plus tard pour trouver le nom exact du controle
Messages postés
123
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2009
1
C'est une FAQ Win32
demander sur le newsgroup professionnel des apis Win32 :
news://fr.comp.os.ms-windows.programmation
où cela a souvent été discuté
Messages postés
149
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009
1
Bonjour

je dois mal formuler ma demande car je n'ai toujours rien trouvé qui m'aide un tant soit peu sur le lien que vous m'avez indiqué, à part mes propres "contributions"...

Rappel: je cherche, "tout simplement" , à savoir quel contrôle de mon application a provoqué l'événement WM_LBUTTONDOWN...

Merci