Tabulation et scroll

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 6 nov. 2010 à 18:26
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 12 nov. 2010 à 11:50
Bonjour

J'ai une fenetre redimensionnable avec scroll vertical.

je voudrais que le scroll se positionne automatiquement sur le widget qui a le focus (de manière à ce que le widget ayant le focus soit toujours dans la fenetre visible)


je programme en win32 (donc pas de MFC)

Merci

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 nov. 2010 à 20:43
SetScrollInfo() et ScrollWindowEx(), non ?

ciao...
BruNews, MVP VC++
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
7 nov. 2010 à 21:19
je viens déjà de trouver "un problème" :
tous mes widgets ont la propriété WS_TABSTOP
et j'ai surclassé les widgets afin de gérer VK_TAB
sauf que je n'avais pas vu que lorsque l'on arrivait dans VK_TAB, on était déjà sur le widget suivant sans que ce dernier n'ait encore le focus
(je croyais être encore sur le widget qui avait le focus lors de l'appui sur la touche TAB)



sinon j'utilise
GetWindowRect sur le widget et sur la fenetre mere afin de connaitre la nouvelle position à scroller
puis GetScrollInfo, SetScrollPos, ScrollWindow

je penche pour un problème de calcul pour le scroll dans ScrollWindow
(je ne dois pas être loin car l'option "defilement ici" fonctionne,
il faut seulement que je simule cette option)
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 nov. 2010 à 23:35
Salut,
Je pense qu'il serait préférable, dans la procédure de sous-classement de tes contrôles, de traiter WM_SETFOCUS au lieu de WM_KEYDOWN ou WM_KEYUP que tu sembles utiliser pour intercepter l'appui sur la touche de tabulation VK_TAB. Une fois WM_SETFOCUS intercepté, tu peux envoyer un message personnalisé à la procédure de la fenêtre mère afin d'y gérer le scroll. Ensuite, tu retournes à la procédure par défaut du contrôle afin de ne pas altérer son comportement normal concernant le message WM_SETFOCUS.
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
12 nov. 2010 à 11:50
ok

je viens de mettre le code dans WM_SETFOCUS
et ça fonctionne aussi

Merci
0
Rejoignez-nous