[résolu]tabulation dans une appli hosté par du win32

tabulation dans une appli hosté par du win32 [résolu] - C#/.NET managed - Programmation

Marsh Posté le 08-07-2005 à 16:32:16    

Bonjour,
 
Je travaille sur une application c# winform (framework 1.1) qui tourne dans une application vb6. Tout fonctionne correctement excepté la touche Tab & les tabindex: l'application ne réagit pas à la tabulation malgré que les tabIndex soient remplis correctement.
 
 J'ai du développer un automate pour gérer la tabulation en positionnant automatiquement le focus en fonction d'une cartographie de l'application (xml).
 
Au début, je pensais piloter l'appel à l'automate en capturant la touche tab avec un wndProc. Je ne suis pas arrivé à le faire (je n'ai pas trouvé le code du tab; j'ai essayé 0x0009 mais sans succès). Du coup je me suis rabattu sur le KeyDown et cela fonctionne pour tout sauf pour les datagrids.
Lorsqu’une grid prend le focus, elle active automatiquement la première cellule en édition et par la suite, le keydown n'est pas catché et le comportement est étrange.
 J’appuie sur la touche tab, cela ajoute une tabulation dans la cellule active au lieu de passer de case en case.  
 
Ce problème est connu. On en trouve des références sur le net (http://www.dotnet247.com/247refere [...] 85644.aspx par exemple). J'ai donc essayé de mettre en place un hook comme conseillé mais sans grand résultat puisque le problème reste le même, comment déterminer qu'il s'agit d'un touche tab qui a été pressée au travers d'un Message.
 
Quelqu'un pourrait il me dire comment? Ou proposer une autre méthode pour gérer les tabIndex .net quand on est dans un messageLoop COM.  
 
Fred


Message édité par fred_p le 13-07-2005 à 17:09:55
Reply

Marsh Posté le 08-07-2005 à 16:32:16   

Reply

Marsh Posté le 08-07-2005 à 17:01:43    

As-tu essayé de faire tourner ton automate dans une autre thread ?
D'après ton lien, visiblement le tab n'est pas hookable dans le main thread si il y a des controls sur ta form (le code est bien 9 en passant).

Reply

Marsh Posté le 08-07-2005 à 17:32:57    

J'ai peur que passer l'automate dans un autre thread fasse des problèmes. De mémoire, les threads sont transverses à tous appDomains et je ne voulais pas prendre le risque d'avoir des effets de bord entre les differentes instances de l'application (je suis en train de vérifier en mm temps et je ne trouve aucune trace de cette assertion dc j'ai du l'imaginer). C'est pour cela que j'ai d'abord essaye de coller le WndProc sur le datagrid et ensuite le hook sur la form. Je vais tenter de ce pas de lancer le bouzin dans un autre thread.

Reply

Marsh Posté le 13-07-2005 à 17:11:07    

bon, en fait passer en thread ne sert à rien: la méthode proposée dans l'url précédente suffit largement. Mon automate mettait la grouille.  
Désolé pour le dérangement :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed