[VC++] 2 Sliders, gestion de OnHScroll

cs_maju Messages postés 16 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 25 août 2005 - 3 août 2005 à 16:53
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 août 2005 à 15:25
La question a deja ete posee, mais je n ai pas defini mes sliders de la meme facon alors je suis un peu perdue. Je voudrais savoir comment differencier les 2 OnHScroll.


void CTestOScopeDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if(nSBCode == SB_THUMBPOSITION)
{
amplification = exp(((double)nPos-20)/10);
//amplification = (int)(amplification * 100);
//amplification = amplification / 100;
m_SliderValue.Format("%4.1f", amplification);
UpdateData(false);
}

else
{
CDialog::OnHScroll(nSBCode, nPos,pScrollBar);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}


Merci d avance

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 août 2005 à 21:08
if(GetWindowLongPtr(hslid, GWLP_ID) == ID_SLID1) {


}
else {


}

A voir s'il n'y a pas une bidouille MFC équivalente.

ciao...
BruNews, MVP VC++
0
cs_maju Messages postés 16 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 25 août 2005
5 août 2005 à 10:45
Desolee, je suis vraiement tres mauvaise, voila ce que j ai essaye:



void CTestOScopeDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

if(nSBCode == SB_THUMBPOSITION)

{

if(GetWindowLongPtr(NULL,GWLP_ID) == IDC_SLIDER1) {


amplification =
exp(((double)nPos-20)/10);


amplification =
(int)(amplification * 100);


amplification = amplification /
100;


m_SliderValue.Format("%4.1f",
amplification);

UpdateData(false);

}

else {

freq = ((double)nPos);

//freq = (int)(freq * 100);

//freq = freq / 100;


m_SliderValue2.Format("%4.1f",
freq);

UpdateData(false);}

}

else

{

CDialog::OnHScroll(nSBCode, nPos,pScrollBar);



}

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);

}


Ca ne compile pas. et GWLP_ID est considere comme undeclared identifier . Et
je ne sais pas quoi mettre a la place de NULL dans l
expression if(GetWindowLongPtr(NULL,GWLP_ID) ==
IDC_SLIDER1)

Desolee pour ces questiosn plus que bateau, mais je ne m en sort vrament pas...

Merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 août 2005 à 11:07
un vieux VS peut-être ??
Remplace GetWindowLongPtr par GetWindowLong (et peut-être préfixer de '::' vu que tu te burnes avec MFC alors que tout va si bien sans.
IDC_SLIDER1 était un exemple, tu mets les ID de controle de ton prog bien entendu.

Ragarde MSDN, GetWindowLong() comme tout le reste y est documenté.

ciao...
BruNews, MVP VC++
0
cs_maju Messages postés 16 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 25 août 2005
9 août 2005 à 15:11
void CTestOScopeDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{


if(nSBCode == SB_THUMBPOSITION)

{

if(GetWindowLong(NULL,GWL_ID) == IDC_SLIDER1)

{


amplification = exp(((double)nPos-20)/10);


amplification = (int)(amplification * 100);


amplification = amplification / 100;


m_SliderValue.Format("%4.1f", amplification);


UpdateData(false);

}




else if (GetWindowLong(IDC_SLIDER2,GWL_ID) ==
IDC_SLIDER2)

{


freq= ((int)nPos);


m_SliderValue2.Format("%4.1f", freq);


UpdateData(false);}

}



else {


timeBase= ((int)nPos);


m_SliderValue3.Format("%4.1f", timeBase);


UpdateData(false);

}

}

else

{

CDialog::OnHScroll(nSBCode, nPos,pScrollBar);



}

CDialog::OnHScroll(nSBCode, nPos, pScrollBar);

}



J ai procede de cette facon et ca ne fonctionne pas du tout , l
affichage du slider 1 se fait dans la sliderValue2 et si je bouge mes
sliders 2 et 3 ca influe sur la valeur du slider1, je n y comprend rien
du tout.

Vois tu une erreur qui te saute aux yeux et qui fait que la fonction (GetWindowLong ) n est meme pas reconnue.

Merci d avance, c est vraiment la galere la, je mem melange les pinceaux





Maju
0

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

Posez votre question
cs_maju Messages postés 16 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 25 août 2005
9 août 2005 à 15:15
//erratum



else if (GetWindowLong(hWnd,GWL_ID) == IDC_SLIDER2)

{


freq= ((int)nPos);


m_SliderValue2.Format("%4.1f", freq);


UpdateData(false);}



PS: je ne sais pas quoi mettre a la place de hWnd........et oui vraiment bcp de mal
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2005 à 15:25
ton pScrollBar en param n'a pas un GetSafeHwnd() ou truc de ce genre ?

ciao...
BruNews, MVP VC++
0
Rejoignez-nous