Scrollbar

23253 Messages postés 11 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 14 mai 2013 - 16 juil. 2012 à 01:17
23253 Messages postés 11 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 14 mai 2013 - 17 juil. 2012 à 16:36
Bonjour,
Voila je fait une petite appli dans laquelle j'ai une fenêtre principale avec plein de bouton et de texte... (rein d'extraordinairejavascript:void(0);). mais mon problème et que j'ai besoins d'avoir une image qui occupe la moitié de ma fenêtre principale, et cette image doit être bougé par deux scrollbar.
Et là je seche.

Pour info je suis sur l'API win32, je programme avec code block sous Windows7 a destination de Windows XP.

3 réponses

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
16 juil. 2012 à 16:00
salut

1) il faut que tu ajoutes la propriete scroll vertical et horizontal à la fenetre qui contient ton image

- si c'est la fenetre mere, tu lui ajoutes les proprietes
- si c'est une zone de ta fenetre mere, alors il faut que tu crees une fenetre avec les proprietes scroll à l'interieur de ta fenetre mere

il me semble que les proprietes sont :
WS_HSCROLL | WS_VSCROLL

tu auras ensuite les scrolls affichés, mais non fonctionnels

c'est à toi ensuite de dire la taille du scroll et ce qui doit se passer quand tu cliques sur chaque bouton


2) le scroll
regarde ensuite sur msdn, les methodes suivantes :
- SetScrollInfo
- ScrollWindow
- SetScrollPos
- GetScrollPos
- GetScrollInfo

et pour la gestion des messages:
- WM_VSCROLL
- WM_HSCROLL
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
16 juil. 2012 à 22:05
Salut,

si tu ne veux pas scroller tout le dialog mais que l'image,
il suffit d'ajouter un STATIC control pour l'image, un Horizontal scrollbar et un vertical scrollbar de la taille du STATIC control.

Ensuite tu gères les messages WM_HSCROLL et WM_VSCROLL sur le hWnd du STATIC control, avec un blit de l'image au bonnes coordonnées.

Quelque chose comme :

case WM_VSCROLL:
{
// teste si le message concerne bien le controle static
// Si hWnd == hWndStaticIMG
{
int nScrollCode = (int)LOWORD(wParam);
int nPos = (short int)HIWORD(wParam);
SCROLLINFO si = {sizeof(SCROLLINFO),
SIF_PAGE|SIF_POS|SIF_RANGE|SIF_TRACKPOS,0,0,0,0,0};
GetScrollInfo (hWnd, SB_VERT, &si);
int nNewPos = si.nPos;

// calcule le blit de l'image selon l'axe Y
// OU sauvegarde les coordonnées pour le prochain WM_PAINT
}
}

// idem pour le scroll horizontal

Il serait même plus élégant de sous-classer le controle STATIC en lui ajoutant les scroll vertical et horizontal. (Un controle static est une zone ou l'on peut dessiner, écrire, afficher une image ect...)
Exemple de controle sous-classé (textbox + image et listbox + listImage)
ICI

bye...
0
23253 Messages postés 11 Date d'inscription mercredi 2 mai 2012 Statut Membre Dernière intervention 14 mai 2013
17 juil. 2012 à 16:36
pour le static je vois pas trop ce que vous voulez dire, mais l'idée de la fenêtre me plais bien, par contre comme je suis une bille, donc si vous aviez un exemple de code car j'avoue que je galère a créer une fenêtre qui contiendra mon image dans la zone client de la fenêtre principale.
merci quand même de vos raiponces
0
Rejoignez-nous