Slider ne répondant pas correctement
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:
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);
} |
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:
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 !