CSlider aktuallisieren



  • Hallo,

    ich habe ein Problem mit einem Slider bei MFC.

    void CBigVideoDlg::OnBnClickedRadioLaerNight()
    {
      int iWert;
      char cValue[32];
      m_cExposureSlider.SetRange(21, 520, FALSE);
    
      DSRSetParamCamera("GET", "EXPOSURE", cValue);
      iWert = atoi(cValue);
    
      if(iWert > 520)
      {
        m_cExposureSlider.SetPos(520);
        sprintf(cValue, "520");
        DSRSetParamCamera("SET", "EXPOSURE", cValue);
      }
    
      //m_cExposureSlider.RedrawWindow();
    
      DSRSetParamCamera("SET", "LASER", "1");
    }
    

    Hier habe ich den Befehl: "SetRange()" verwendet, und einen neuen Wertebereich gesetzt.

    Da aber der Wert noch ect. der selbe ist, soll der Slider auf die Richjtige Position springen.

    Einfach ausgedrpckt:

    alter Slider:

    SetRange(1, 10);
    wert 5

    Der Slider ist in der Mitte...

    Neuer Slider
    SetRange(1, 100);
    wert 5

    Der slider muss sehr weit links sein.
    Wie schaffe ich es, dass er da hin springe, wenn ich ihn aktuallisiere??

    mfg

    Freshman



  • Hehe, das Problem hatte ich auch schon. IMHO ein Bug in der Implementierung. Umgehen lässt er sich so:

    //Pseudocode
    int nPos=GetPos();
    SetPos(nPos-1);
    SetPos(nPos);
    


  • m_cExposureSlider.SetRange(21, 520, FALSE);

    bei mir war diese Zeile der Fehler, es muss so heißen

    m_cExposureSlider.SetRange(21, 520, TRUE);

    dann geht irgendwie alles 😉

    ob das beim MFC im 6 er Studio geht weiß ich allerdings nicht, da musste ich damals auch so einen komischen weg gehen, wie du gerade geschrieben hast.


Anmelden zum Antworten