Bonjour, voici ma question : Comment être averti qu'un slider dynamique a été bougé (son curseur)? Merci.
Version imprimable
Bonjour, voici ma question : Comment être averti qu'un slider dynamique a été bougé (son curseur)? Merci.
salut,
tu reçois un message WM_HSCROLL ou WM_VSCROLL (suivant si la trackbar est horizontale ou verticale)
ça se gère comment un scrollbar ...
@+
Voici mon code pour faire plus simple :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 void CDlg_Demo_Slider::OnOK() { register int i,j; CString m_Heure; for (j=0;j<nb_slider;j++) { i=(*pSliderCtrl[j]).GetPos(); //position de chaque curseur en mémoire (i) m_Heure.Format("%02d:%02d",i/60,i%60); } CDialog::OnOK(); } void CDlg_Demo_Slider::affich_slider() { CString strTemp; int j; int heure_min, heure_max; if (!(pSliderCtrl=(CSliderCtrl**)malloc(sizeof(CSliderCtrl*)*nb_slider))) // réservation mémoire return; if (!(pWndHeure=(CWnd**)malloc(sizeof(CWnd*)*nb_slider))) // réservation mémoire return; if (!(pString=(CString**)malloc(sizeof(CString*)*nb_slider))) // réservation mémoire return; if (!(heure_coupure=(int*)malloc(4*nb_slider))) // réservation mémoire return; heure_min=1500;heure_max=0; for (j=0;j<nb_slider;j++) { heure_coupure[j]=240+(120*j)/nb_slider; if (heure_coupure[j]<heure_min) heure_min=heure_coupure[j]; if (heure_coupure[j]>heure_max) heure_max=heure_coupure[j]; } for (j=0;j<nb_slider;j++) { RECT rect={20,20,20,20}; pSliderCtrl[j]=new CSliderCtrl(); pString[j]=new CString(); DWORD dwStyle = TBS_NOTICKS | WS_CHILD | WS_VISIBLE | WM_HSCROLL ; (*pSliderCtrl[j]).Create(dwStyle|TBS_BOTTOM|TBS_HORZ ,rect, m_parametres,m_OK.GetDlgCtrlID()+(10000+j)); (*pSliderCtrl[j]).SetWindowPos(&m_OK,120,10+(j*20),175,20,SWP_NOZORDER); (*pSliderCtrl[j]).SetRange(0,heure_max-heure_min+60); (*pSliderCtrl[j]).SetPos(heure_coupure[j]-heure_min+30); //retrait de chq slider pour les différencier (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure[j]%60); pWndHeure[j] = new CWnd; pWndHeure[j]->Create(_T("STATIC"), *pString[j], WS_CHILD | WS_VISIBLE, CRect(300, 10+j*20, 380, 30+j*20), this, 1234); /* pWndHeure[j]->DestroyWindow(); pWndHeure[j]->Create(_T("STATIC"), *pString[j], WS_CHILD | WS_VISIBLE, CRect(300, 10+j*20, 380, 30+j*20), this, 1234); */ } }
Bonjour j'ajoute encore une question : Savez-vous comment modifier la valeur de l'info-bulle de chaque curseur (je ne veux pas des entiers mais un format hh:mm)? Merci.