N curseurs dynamiques

Résolu
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009 - 20 avril 2009 à 16:52
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 4 mai 2009 à 10:36
Bonjour, voici mon problème je dispose de plusieurs sliders sur une même fenêtre disposés les uns en dessous des autres qui représentent des plages horaires. Lorsque l'on bouge l'un des curseurs d'un slider il est évident qu'il ne pourra pas être placé avant le curseur le précédant (car heure plus tardive). Je voulais savoir comment il était possible de gérer cela, de récupérer la valeur de chaque slider et savoir lequel a été bougé si jamais on se trompe en les bougeant ?Merci.

60 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 avril 2009 à 15:06
Tout à fait l'heure. Du curseur survolé.
Quel est le curseur survolé -> ma boucle for un peu plus haut.
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
28 avril 2009 à 15:15
Très bien mais je ne vois toujours pas pour ça  if ((*pSliderCtrl[j]).m_hWnd == pNMHDR->hwndFrom)? Merci.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 avril 2009 à 15:23
Bin je ne vois pas comment être plus clair que ce que j'ai déjà écrit... C'est un test d'égalité entre deux hwnd, l'un provenant du tableau que tu as rempli avec les hwnd de tes sliders, l'autre passé en paramètre à ta fonction dans une structure. Si les deux handles sont les mêmes, c'est que tu as trouvé le slider.

Du moins si j'ai bien compris le "A window handle to the control sending the message.".
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
28 avril 2009 à 15:40
Ainsi je remplace TTN_NEEDTEXTA par (*pSliderCtrl[j]).m_hWnd ??? Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 avril 2009 à 15:43
Non.

Trouver le slider et gérer l'unicode et le mbcs sont deux choses différentes.
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
28 avril 2009 à 15:51
OK alors je dois faire :

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




 if ((*pSliderCtrl[j]).m_Heure = = pWndHeure->hwndFrom);
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
28 avril 2009 à 16:14
Non pardon ça if ((*pSliderCtrl[j]).m_hWnd == pNMHDR->hwndFrom)? Merci.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 avril 2009 à 16:56
Tu essais de connaître le slider survolé juste après leurs créations ?

Coder de manière aléatoire ne te donnera que des résultats aléatoire. Réfléchis. Imagine ce que tu veux faire globalement, et traduis tout ça en ligne de code.

Coder, ce n'est pas tout à fait faire des copier coller de codes trouvés sur le web et assemblés les uns derrière les autres.
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 09:49
Bonjour, oui une fois le nombre de sliders voulus par l'utilisateur ils sont affichés et seulement après l'utilisateur peut les manipuler.
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 10:28
Déjà pour l'info-bulle pour que mon heure s'affiche, je dois bien modifier cela ? Merci.

CString m_strTipText = _T("anything you like!");
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 11:03
Et c'est après ce code  :
(*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);

que je dois mettre : if ((*pSliderCtrl[j]).m_hWnd == pNMHDR->hwndFrom) car c'est après le code précédent que l'on change de slider.Merci.


 
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 11:50
Ne me laissez tomber svp
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 12:05
Il faudrait que j'arrive à faire à peu près cela :

CString m_strTipText ;
m_strTipText((*pSliderCtrl[j]).GetPos());
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
29 avril 2009 à 14:43
Je ne comprend vraiment pas ce qui te bloque...

function OnToolTipNotify(notifyinfo)
  pour i de 0 à nombre_slider faire
    si sliders[i] == notifyinfo->hwndFrom alors
      text_info_bulle = sliders[i].getPos();
      break;
    fsi;
  fait;

  si notifyinfo->ansi alors
    Copy(notifyinfo->szText, text_info_bulle);
  sinon
    MbcsToUnicode(notifyinfo->szText, text_info_bulle);
  fsi;
fin;
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
29 avril 2009 à 15:42
Ayé merci j'arrive à faire défiler les heures avec mes curseurs, il me reste l'actualisation des valeurs (cases static) en même temps que le déplacement des curseurs.
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
30 avril 2009 à 11:25
Bonjour savez vous comment je peux faire pour avoir mes sliders ou mes curseurs de différentes couleurs les uns par rapport aux autres? Merci.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
30 avril 2009 à 12:18
Fait une recherche, tu n'es pas le premier à te demander ça.(ici,là...)
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
30 avril 2009 à 16:19
Merci mais savez-vous pourquoi j'obtiens ce message d'erreur lors de la compilation?Merci
C:\Dlg_Demo_Slider.cpp(398) : error C2511: 'OnCtlColor' : overloaded member function 'struct HBRUSH__ *(class CDC *,class CWnd *,unsigned int)' not found in 'CDlg_Demo_Slider'

Voici le code qui pose problème : HBRUSH CDlg_Demo_Slider::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if( (nCtlColor CTLCOLOR_STATIC) && (pWnd->GetDlgCtrlID() IDC_MYCOLOREDTEXT) )
{
pDC->SetBkColor( RGB(0xFF,0,0) );
pDC->SetTextColor( RGB(0,0xFF,0) );
}
return hbr;
}
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
30 avril 2009 à 16:24
Non excusez-moi c'est bon j'ai trouvé l'erreur!
0
cs_ringo44 Messages postés 65 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 20 mai 2009
4 mai 2009 à 10:28
Bonjour je n'arrive pas à utiliser SetColor pour changer la couleur de chaque curseur, lorsque je compile j'ai le message d'erreur suivant, quelqu'un sait-il pourquoi et comment enlever cette erreur?
Merci.
 
C:\Exemple de sliders\SliderMultiple\Dlg_Demo_Slider.cpp(204) : error C2039: 'SetColor' : is not a member of 'CSliderCtrl'
        c:\program files\microsoft visual studio\vc98\mfc\include\afxcmn.h(426) : see declaration of 'CSliderCtrl'
0
Rejoignez-nous