ArthurAuguste
Messages postés107Date d'inscriptionlundi 7 février 2011StatutMembreDernière intervention17 février 2018
-
21 août 2011 à 10:43
ArthurAuguste
Messages postés107Date d'inscriptionlundi 7 février 2011StatutMembreDernière intervention17 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
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDerniè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