Bonjour,

j'ai un petit souci sur l'implémentation d'un CSliderCtrl dans un lecteur multimédia que je suis en train de développer. En effet, je souhaite que ce slider se déplace automatiquement pendant la lecture d'un fichier pour indiquer où en est la progression. Pour ce point là, pas de problème, ma fonction OnTimer marche nickel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//timer se déclenchant toutes les secs
void CMainFrame::OnTimer(UINT nIDEvent){  
	sliderCtrl = reinterpret_cast<CSliderCtrl *>(this->m_wndDlgBar.GetDlgItem(IDC_SLIDER1));
	int length = m_fileDuration/10000000;//pr mettre en secondes
	int pasduneunite = length/100;
	sliderCtrl->SetRange(0,length);
	LONGLONG current;
	m_graph.GetPos(&current);
	long cur = (long)current/10000000;
	sliderCtrl->SetPos(cur);
}
La où cela marche moins bien, c'est lorsque j'implémente la méthode qui permet de changer la position de lecture en manipulant le slider:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
void CMainFrame::OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult) {
	sliderCtrl = reinterpret_cast<CSliderCtrl *>(this->m_wndDlgBar.GetDlgItem(IDC_SLIDER1));
	int length = m_fileDuration/10000000;//met en secondes
	int tick = length/100;//déplacement d'une unité du slider vaut:
	int n = sliderCtrl->GetPos();
	m_graph.SetPos(n*tick*10000000);
 
}
Ce qui se passe, c'est que lorsque je bouge le slider, celui-ci se remet à la position de lecture avant que je l'aie bougé, ou sinon celui ci prend parfois une position incorrecte.

Quelqu'un a t-il une idée?

Merci !