ajout de couleurs pour des curseurs et des traits pour des sliders dynamiques
4 réponses
ringo973
Bonjour je souhaite obtenir le m=EAme r=E9sultat que la 2e fen=EAtre(track
1) ici : http://www.codeproject.com/KB/miscctrl/CustomDrawCSliderCtrl.aspx
Je voudrais moi aussi obtenir des traits de couleurs et les curseurs
en couleur mais je n'arrive pas =E0 adapter leur code au mien car moi
mes sliders sont cr=E9es dynamiquement, comment puis-je faire alors ?
Merci.
void CDlg_Demo_Slider::affich_slider()
{
CString strTemp;
int j;
if (!(pSliderCtrl=3D(CSliderCtrl**)malloc(sizeof(CSliderCtrl*)
*nb_slider))) // r=E9servation m=E9moire
return;
if (!(pWndHeure=3D(CWnd**)malloc(sizeof(CWnd*)*nb_slider))) //
r=E9servation m=E9moire
return;
if (!(pString=3D(CString**)malloc(sizeof(CString*)*nb_slider))) //
r=E9servation m=E9moire
return;
if (!(heure_coupure=3D(int*)malloc(4*nb_slider))) // r=E9servation
m=E9moire
return;
heure_min=3D48*60; heure_max=3D0;
for (j=3D0;j<nb_slider;j++)
{
if (nb_slider=3D=3D1)
heure_coupure[j]=3D300+24*60;
else
heure_coupure[j]=3D240+24*60+(120*j)/(nb_slider-1);
if (heure_coupure[j]<heure_min)
heure_min=3Dheure_coupure[j];
if (heure_coupure[j]>heure_max)
heure_max=3Dheure_coupure[j];
}
for (j=3D0;j<nb_slider;j++)
{
RECT rect=3D{20,20,20,20};
pSliderCtrl[j]=3Dnew CSliderCtrl();
pString[j]=3Dnew CString();
(*pSliderCtrl[j]).SetWindowPos(&m_OK,120,10+(j*20),
175,20,SWP_NOZORDER);
(*pSliderCtrl[j]).SetRange(0,heure_max-heure_min+60); // tranche
horaire
(*pSliderCtrl[j]).SetPos(heure_coupure[j]-heure_min+30); //retrait de
chq slider pour les diff=E9rencier
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
domi
wrote:
Bonjour je souhaite obtenir le même résultat que la 2e fenêtre(track 1) ici : http://www.codeproject.com/KB/miscctrl/CustomDrawCSliderCtrl.aspx Je voudrais moi aussi obtenir des traits de couleurs et les curseurs en couleur mais je n'arrive pas à adapter leur code au mien car moi mes sliders sont crées dynamiquement, comment puis-je faire alors ?
Ca ne change rien, il faut toujours traiter WM_NOTIFY et NM_CUSTOMDRAW au niveau du controle parent Et c'est exemple est plutot môche (il vaut mieux utiliser des bitmaps...)
ringo973@gmail.com wrote:
Bonjour je souhaite obtenir le même résultat que la 2e fenêtre(track
1) ici : http://www.codeproject.com/KB/miscctrl/CustomDrawCSliderCtrl.aspx
Je voudrais moi aussi obtenir des traits de couleurs et les curseurs
en couleur mais je n'arrive pas à adapter leur code au mien car moi
mes sliders sont crées dynamiquement, comment puis-je faire alors ?
Ca ne change rien, il faut toujours traiter WM_NOTIFY et NM_CUSTOMDRAW
au niveau du controle parent
Et c'est exemple est plutot môche (il vaut mieux utiliser des bitmaps...)
Bonjour je souhaite obtenir le même résultat que la 2e fenêtre(track 1) ici : http://www.codeproject.com/KB/miscctrl/CustomDrawCSliderCtrl.aspx Je voudrais moi aussi obtenir des traits de couleurs et les curseurs en couleur mais je n'arrive pas à adapter leur code au mien car moi mes sliders sont crées dynamiquement, comment puis-je faire alors ?
Ca ne change rien, il faut toujours traiter WM_NOTIFY et NM_CUSTOMDRAW au niveau du controle parent Et c'est exemple est plutot môche (il vaut mieux utiliser des bitmaps...)
ringo973
Merci voici mon code du OnNotify et je ne possède pas de NM_CUSTOMDRAW, comment utiliseriez vous les bitmaps avec mon code ? Merci d'avance.
if (nPos+heure_min-30>$*60) sprintf(szText, "%02d:%02d ", (nPos+heure_min-30-24*60) / 60, (nPos +heure_min-30-24*60) % 60); //ajout d'espaces pour se décaler du curseur souris else if (nPos+heure_min-30<0) sprintf(szText, "%02d:%02d ", (nPos+heure_min-30+24*60) / 60, (nPos +heure_min-30+24*60) % 60); //ajout d'espaces pour se décaler du curseur souris else sprintf(szText, "%02d:%02d ", (nPos+heure_min-30) / 60, (nPos +heure_min-30) % 60); //ajout d'espaces pour se décaler du curseur souris ::SendMessage(pnmh->hwndFrom, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti); bReentrant = false;
for (j=0;j<nb_slider;j++) { n=(*pSliderCtrl[j]).GetPos()+heure_min-30; if (n!=heure_coupure[j]) dernier_modifie=j; heure_coupure[j]=n; }
for (j=0;j<nb_slider;j++) { if (heure_coupure[j]>$*60) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60, (heure_coupure[j]-24*60)%60); else if (heure_coupure[j]<0) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60, (heure_coupure[j]+24*60)%60); else (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure [j]%60);
if (nPos+heure_min-30>=24*60)
sprintf(szText, "%02d:%02d ", (nPos+heure_min-30-24*60) / 60, (nPos
+heure_min-30-24*60) % 60); //ajout d'espaces pour se décaler du
curseur souris
else
if (nPos+heure_min-30<0)
sprintf(szText, "%02d:%02d ", (nPos+heure_min-30+24*60) / 60, (nPos
+heure_min-30+24*60) % 60); //ajout d'espaces pour se décaler du
curseur souris
else
sprintf(szText, "%02d:%02d ", (nPos+heure_min-30) / 60, (nPos
+heure_min-30) % 60); //ajout d'espaces pour se décaler du curseur
souris
::SendMessage(pnmh->hwndFrom, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti);
bReentrant = false;
for (j=0;j<nb_slider;j++)
{
n=(*pSliderCtrl[j]).GetPos()+heure_min-30;
if (n!=heure_coupure[j])
dernier_modifie=j;
heure_coupure[j]=n;
}
for (j=0;j<nb_slider;j++)
{
if (heure_coupure[j]>=24*60)
(*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60,
(heure_coupure[j]-24*60)%60);
else
if (heure_coupure[j]<0)
(*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60,
(heure_coupure[j]+24*60)%60);
else
(*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure
[j]%60);
if (nPos+heure_min-30>$*60) sprintf(szText, "%02d:%02d ", (nPos+heure_min-30-24*60) / 60, (nPos +heure_min-30-24*60) % 60); //ajout d'espaces pour se décaler du curseur souris else if (nPos+heure_min-30<0) sprintf(szText, "%02d:%02d ", (nPos+heure_min-30+24*60) / 60, (nPos +heure_min-30+24*60) % 60); //ajout d'espaces pour se décaler du curseur souris else sprintf(szText, "%02d:%02d ", (nPos+heure_min-30) / 60, (nPos +heure_min-30) % 60); //ajout d'espaces pour se décaler du curseur souris ::SendMessage(pnmh->hwndFrom, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti); bReentrant = false;
for (j=0;j<nb_slider;j++) { n=(*pSliderCtrl[j]).GetPos()+heure_min-30; if (n!=heure_coupure[j]) dernier_modifie=j; heure_coupure[j]=n; }
for (j=0;j<nb_slider;j++) { if (heure_coupure[j]>$*60) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60, (heure_coupure[j]-24*60)%60); else if (heure_coupure[j]<0) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60, (heure_coupure[j]+24*60)%60); else (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure [j]%60);
for (j=0;j<nb_slider;j++) { n=(*pSliderCtrl[j]).GetPos()+heure_min-30; if (n!=heure_coupure[j]) dernier_modifie=j; heure_coupure[j]=n; }
for (j=0;j<nb_slider;j++) { if (heure_coupure[j]>$*60) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60, (heure_coupure[j]-24*60)%60); else if (heure_coupure[j]<0) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60, (heure_coupure[j]+24*60)%60); else (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure [j]%60);
for (j=0;j<nb_slider;j++)
{
n=(*pSliderCtrl[j]).GetPos()+heure_min-30;
if (n!=heure_coupure[j])
dernier_modifie=j;
heure_coupure[j]=n;
}
for (j=0;j<nb_slider;j++)
{
if (heure_coupure[j]>=24*60)
(*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60,
(heure_coupure[j]-24*60)%60);
else
if (heure_coupure[j]<0)
(*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60,
(heure_coupure[j]+24*60)%60);
else
(*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure
[j]%60);
for (j=0;j<nb_slider;j++) { n=(*pSliderCtrl[j]).GetPos()+heure_min-30; if (n!=heure_coupure[j]) dernier_modifie=j; heure_coupure[j]=n; }
for (j=0;j<nb_slider;j++) { if (heure_coupure[j]>$*60) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]-24*60)/60, (heure_coupure[j]-24*60)%60); else if (heure_coupure[j]<0) (*pString[j]).Format("%02d:%02d",(heure_coupure[j]+24*60)/60, (heure_coupure[j]+24*60)%60); else (*pString[j]).Format("%02d:%02d",heure_coupure[j]/60,heure_coupure [j]%60);