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 :
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
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(¤t); long cur = (long)current/10000000; sliderCtrl->SetPos(cur); }
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.
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); }
Quelqu'un a t-il une idée?
Merci !
Partager