cs_mayalen
Messages postés5Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 2 septembre 2004
-
29 juin 2004 à 11:59
Picospicos
Messages postés23Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention 8 juillet 2004
-
29 juin 2004 à 14:52
j'aimerai creer un scrollbar vertical dans une boite de dialogue
mais je suis un peu perdu!!!
merci
Picospicos
Messages postés23Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention 8 juillet 2004 29 juin 2004 à 14:52
Il va falloir que tu traites l'evenement WM_VSCROLL, si tu ne vois pas comment faire, renseigne toi sur le role de DECLARE_MESSAGE_MAP BEGIN_MESSAGE_MAP et END_MESSAGE_MAP (si tu utilises les MFC), grace à cet evenement tu vas pouvoir determiner quelles actions l'utilisateur à effectuer sur ta scrollbar. Et en fonction de cet action tu agis sur ta scroll bar.
Est ce que tu fais ton interface avec l'API windows ou avec les MFC?
Si tu l'as faits avec les MFC, je peux t'expliquer plus en detail :
Dans ta classe derivee de CDialog tu declares :
CScrollBar Scroll;
et
en protected
afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );
Dans la method DoDataExchange de cette classe derivee il faut que tu rentres cette ligne :
DDX_Control(pDX, IDC_SCROLL, Scroll);\\C'est pour lier la scroll bar que tu as dessiner avec l'editeur et l'instance de la classe CScrollBar que tu as declare.
Ensuite entre BEGIN_MESSAGE_MAP et END_MESSAGE_MAP il faut que tu rentres la ligne suivante :
ON_WM_VSCROLL() \\C'est le message correspondant à l'evenement
Voici une description possible de la methode OnVScroll :
void CDeriveDialog::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
switch(nSBCode)
{
case SB_LINEUP :
Scroll.SetScrollPos(Scroll.GetScrollPos()-1,TRUE);
break;
case SB_LINEDOWN :
Scroll.SetScrollPos(Scroll.GetScrollPos()+1,TRUE);
break;
case SB_THUMBTRACK :
Scroll.SetScrollPos(nPos,TRUE);
break;
}
}