Slider durch einen anderen Slider kontrollieren



  • Hi,

    ich würde gerne einen Slider durch einen anderen kontrollieren, mit dem Progressbalken hats ja schon super geklappt aber der 2. Slider will net so ganz. Vielleicht seht ihr ja irgendwo den Fehler.

    Hier mal der init code

    BOOL Dialog::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
        /*CListBox *list = (CListBox*)GetDlgItem(IDC_LIST2); 
    	list->AddString("Hello");*/
    	m_ctrlSlider2.SetRange(0,100,true); 
    	m_ctrlSlider.SetRange(0,100,true);
    	m_ctrlProgress.SetRange(0,100);
    	SetTimer(ID_TIMER,250,0);//initialisierung 
    //	SetTimer(IDC_LOAD,2000,0);
    	return true;
    
    }
    

    Und hier der SliderCode bzw das was er halt beim Event macht

    void Dialog::OnSliderMoved(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
    	UpdateData(true);
    	m_ctrlSlider2.SetPos(m_intSlider);
    	m_ctrlProgress.SetPos(m_intSlider);
    	UpdateData(false);
    	*pResult = 0;
    }
    

    Ich will dann später das noch mit nem Timer koppeln, da ich eine Animation abspielen will und der Slider die Position darstellt und beim normalen Play den Slider mitbewegt und bei Bedarf ich halt an eine bestimmte Stelle der Animation hinbewegen kann.

    Aber erst mal zu den einfachen Dingen ;o)

    Ups was ich noch vergessen hat zu fragen, bei meiner MDI Anwendung ist es so, dass am Anfang gleich ein ChildWindow erstellt wird(So wie´s der Assisstent halt gemacht hat) Nur will ich das gar net und hab da bisher noch nicht wirklich die Einstellung entdeckt wo dieses Fenster aufgerufen wird. Vorallem nervt beim beenden dieser "Wollen Sie speichern" Dialog



  • Das sind beides typische Automatismen:

    Problem Childwindow:
    in der Applikationsklasse in InitInstance wirst du folgende Zeilen finden:

    // Verteilung der in der Befehlszeile angegebenen Befehle
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
    

    Da drin wird OnFileNew ausgeführt, das macht ein Fenster auf. Auskommentieren sollte da helfen.

    Problem Speicherfrage:
    Daran ist das Dokument schuld. Schau in der MSDN mal nach CDocument::SetModifiedFlag oder CDocument::OnCloseDocument. Das sollte dich weiterbringen.

    Problem Slider:
    Da konnte ich nix entdecken, vielleicht stimmt ja der Wert in m_intSlider nicht.



  • ok speicherfrage hab ich erledigt ;o)
    Childwindow is nu auch weg, allerdings muss ich jetzt um meinen Dialog zu haben erst mal wieder ein solchen Childwindow erstellen ...... ok muss mir da nochmal den code ansehen vielleicht finds ich auch noch selber. Ist halt ein bischen doof so wie´s grad ist erst File->open Programm macht CHildwindow auf und dann bekomm ich erst wieder über File->open den DIalog den ich eigentlich erstellt hab .... ok hat sich erledigt ;o) musste nur dieses Standard OnFIleOpen überschreiben

    Ich hab mir das mit dem Slider nochmal angeguckt, wenn ich den Slider bewege springt für nenn kurzen augenblick der 2. auch aber geht sofort wieder auf die Andangsposition zurück. Also muss er die Werte schon übernehmen bzw. bei dem Progress balken gehts ja auch.
    Kann es sein dass ich da eine andere Methode brauch? Wenn ich nämlich auf Knopfdruck den Slider auf 50 fahren lassen will tut er das auch springt aber sofort wieder auf Pos 0 zurück.



  • Da du die Position "von Hand" setzt, such mal nach UpdateData(FALSE), vielleicht überschreibst du damit deine Position wieder. Das gilt allerdings nur dann, wenn du eine Wertevariable für den Slider hast.

    Viel Erfolg



  • DANKE estartu_de ;o) jetzt gehts!


Anmelden zum Antworten