Ascenseur vertical

Résolu
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018 - 21 août 2011 à 10:43
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018 - 21 août 2011 à 20:09
Bonjour,
Me voici encore avec mes questions tordues:
Je voudrais que l'ascenseur vertical apparaisse lorsque ma fenêtre est trop petite pour afficher tout le contenu et que je puisse ainsi la faire défiler.
Problème, a priori simple, sauf que dans mon cas, désolé, plusieurs petites complications:
1.- Ma fenêtre que nous appellerons F sur laquelle je veux l'ascenseur est une parmi n de mes fenêtres filles
2.- Ma fenêtre F a en plus un header contrôle que nous appellerons H, la logique voudrait que si le défilement de F fonctionnait, elle devrait glisser vers le haut sous H;
3.- La fenêtre parente de ma fenêtre F est une MDICLIENT qui est elle-même fenêtre fille de ma fenêtre principale que nous appellerons MAIN
Les ascenseurs apparaissent normalement dès que nécessaire sur MAIN, par contre par défaut aucun ascenseur n'apparaît sur F, même lorsque ça serait nécessaire, je peux quand même voir les infos cachés en tirant sur la fenêtre F pour l'agrandir.
Si je force un ascenseur vertical avec WS_VSCROLL, il apparaît bien mais il est inefficace, je peux le baisser en tirant dessus, mais la fenêtre ne défile pas et l'ascenseur se comporte comme un élastique, dès que je le lâche il revient à son point de repos.
Styles de F dans WNDCLASS: CS_VREDRAW | CS_HREDRAW
F créée avec CreateWindowEx et les paramètres: WS_EX_CLIENTEDGE | WS_EX_MDICHILD puis: WS_CHILD |WS_CAPTION | WS_VISIBLE | WS_OVERLAPPEDWINDOW | WS_VSCROLL
H créé avec CreateWindow(WC_HEADER, NULL puis: WS_CHILD | WS_VISIBLE etc...
Merci

2 réponses

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
21 août 2011 à 19:44
pour le scroll : le fait de l'ajouter ( = le rendre visible) ne suffit pas
il faut lui donner les infos sur la taille de la fenetre (celle qui va scroller)
regarde du coté de SetScrollInfo et de GetScrollInfo


pour gérer les scrolls, regarde les messages WM_VSCROLL et WM_HSCROLL
tu auras aussi besoin de SetScrollPos (pour positionner le curseur de scroll)
et de ScrollWindow pour effectuer le scroll


tu auras surement besoin de gerer les messages WM_MOUSEWHEEL (molette de la souris) et WM_SIZE (si tu redimensionnes une fenetre avec scroll : dans ce cas tu devras reappeler SetScrollInfo pour mettre à jour les ascenseurs
3
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018
21 août 2011 à 20:09
Merci beaucoup pour l'info, je vais regarder ces fonctions et ces messages
@+
0
Rejoignez-nous