Ascenseur vertical [Résolu]

Signaler
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018
-
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018
-
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

Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

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
Messages postés
107
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
17 février 2018

Merci beaucoup pour l'info, je vais regarder ces fonctions et ces messages
@+