Interaction avec une Form sans prise de focus (Virtual Keyboard)
albundy91
Messages postés2Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention15 mai 2008
-
15 mai 2008 à 11:46
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 2010
-
16 mai 2008 à 10:57
Salut à tous,
Je me permet de venir vers vous car me voilà confronté à un problème pour lequel je suis à cours d'idées et de capacité pour le résoudre !
Dans le cadre d'un projet de clavier virtuel, une Form se charge de représenter la skin du clavier ; nous interceptons les évènements de la souris pour en faire ce que nous voulons. Tout marche bien, on peut écrire dans les documents avec une Form qui n'a pas de focus.
Seulement, la ou le bas blesse, c'est lorsque le menu démarrer de Windows (ou tout autre menu d'applications comme les Systray etc...), chevauche la skin l'évenment du clic n'est pas récupéré par Windows MAIS par la Skin !
Comment faire ? Supprimer notre hook souris et revoir totalement la gestion de la souris ? Utiliser des APIs Windows bas niveau qui écouteraient lorsque le menu démarrer est ouvert ou systray ou autre...
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 15 mai 2008 à 14:32
pourquoi utiliser un hook souris? en cas de gotfocus de la form, récupérer les coordonnées d'écran de la souris, puis simuler le click du bouton a cet endroit. Le résultat est bien moins lourd et complexe (et moins risqué qu'un hook), tout en résolvant ce problème...as tu des contraintes qui t'empechent d'utiliser cette solution?
albundy91
Messages postés2Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention15 mai 2008 15 mai 2008 à 15:58
Le but du Hook est d'empêcher la Form de prendre le focus.
Pour cela, on "Cancel" les events souris du ButtonDown et ButtonUp ce qui fait que Windows ne sait pas que nous avons cliquer mais uniquement nous, et nous traitons par la suite ce qu'on veut de tout ca.
Seulement, comme Windows ne sait pas qu'on a cliquer on peut plus intérargir avec un menu qui chevaucherait notre Form ! --> Tout le problème est la.
Faut-il coder un nouveau HOOK qui récupère les events windows bas niveau d'activation des fenêtres ...? Ou autre... Voila nos questions !
Merci d'avance.