<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit Slider in SDI]]></title><description><![CDATA[<p>Hallo ich hab eine SDI (MFC) Anwendung inder ich Slider und entsprechende Edit Fenster habe um die Werte anzuzeigen und selber auch reinschreiben zu können. Nun habe ich das Problem das der Slider beim Tippen eines Wertes zwar zuckt, aber sofort wieder auf 0 springt.<br />
In einer reinen Dialoganwendung funktioniert der folgende Code einwandfrei.<br />
Weiß einer vielleicht woran das liegen könnte?<br />
Vielen Dank</p>
<p>Auszug aus der OnInitialUpdate():</p>
<pre><code class="language-cpp">void CComCentralOneView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()-&gt;RecalcLayout();
	ResizeParentToFit();

// Eigene Initialisierung

	m_ctlSlider1.SetRange(0,200);								// Von wo bis wo geht der Regler
	m_ctlSlider1.SetPos(0);										// Anfangswert des Reglers
	m_strAnzeige1 = &quot;0&quot;;
</code></pre>
<p>Auszug aus der OnVScroll:</p>
<pre><code class="language-cpp">void CComCentralOneView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
// Werte vom Slider werden an das Editfenster übergeben

	int akt_pos1 = m_ctlSlider1.GetPos();
	int neue_pos1 = akt_pos1;

    // Aktuelle Position an Scrolleiste übermitteln
    m_ctlSlider1.SetPos(neue_pos1);

    // Wert der Bildlaufleiste im Textfeld anzeigen
	SetDlgItemInt(IDC_WERT1, neue_pos1);
</code></pre>
<p>Falls es wichtig ist, ich verwende insgesamt 5 Slider in meiner Anwendung. Der Code ist aber copy&amp;paste mäßig gleich.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183052/problem-mit-slider-in-sdi</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 04:15:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183052.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Jun 2007 06:20:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 06:20:25 GMT]]></title><description><![CDATA[<p>Hallo ich hab eine SDI (MFC) Anwendung inder ich Slider und entsprechende Edit Fenster habe um die Werte anzuzeigen und selber auch reinschreiben zu können. Nun habe ich das Problem das der Slider beim Tippen eines Wertes zwar zuckt, aber sofort wieder auf 0 springt.<br />
In einer reinen Dialoganwendung funktioniert der folgende Code einwandfrei.<br />
Weiß einer vielleicht woran das liegen könnte?<br />
Vielen Dank</p>
<p>Auszug aus der OnInitialUpdate():</p>
<pre><code class="language-cpp">void CComCentralOneView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()-&gt;RecalcLayout();
	ResizeParentToFit();

// Eigene Initialisierung

	m_ctlSlider1.SetRange(0,200);								// Von wo bis wo geht der Regler
	m_ctlSlider1.SetPos(0);										// Anfangswert des Reglers
	m_strAnzeige1 = &quot;0&quot;;
</code></pre>
<p>Auszug aus der OnVScroll:</p>
<pre><code class="language-cpp">void CComCentralOneView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
// Werte vom Slider werden an das Editfenster übergeben

	int akt_pos1 = m_ctlSlider1.GetPos();
	int neue_pos1 = akt_pos1;

    // Aktuelle Position an Scrolleiste übermitteln
    m_ctlSlider1.SetPos(neue_pos1);

    // Wert der Bildlaufleiste im Textfeld anzeigen
	SetDlgItemInt(IDC_WERT1, neue_pos1);
</code></pre>
<p>Falls es wichtig ist, ich verwende insgesamt 5 Slider in meiner Anwendung. Der Code ist aber copy&amp;paste mäßig gleich.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296347</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 06:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 06:22:38 GMT]]></title><description><![CDATA[<p>hab ja noch was vergessen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
ich denke das hilft:</p>
<pre><code class="language-cpp">void CComCentralOneView::OnChangeWert1() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CFormView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.

	UpdateData(TRUE);							// wichtig!!! sonst geht gar nix

	int atoi_wert1 = atoi(m_strAnzeige1);		// atoi von string to int
	m_ctlSlider1.SetPos(atoi_wert1);			// int an Slider übergeben
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1296349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296349</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 06:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 09:02:54 GMT]]></title><description><![CDATA[<p>IMHO löst SetPos OnVScroll aus. Damit hast Du eine Rekursion. Der Slider ist noch auf dem alten Wert wenn Du ihn abfragst und damit hat sich das ganze. Der Wert 0 steht wieder drin.<br />
Setz doch mal einen Breakpoint und schau den Callstack an!<br />
Dito löst SetDlgItem Int ein OnEditChange aus!</p>
<p>Du musst das Problem der Abhändigkeiten regeln.<br />
Wenn Du die Werte explizit setzt darf kein Change Event berücksichtigt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296423</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 01 Jun 2007 09:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 09:27:09 GMT]]></title><description><![CDATA[<p>Diese Zeilen bewirken doch gar nichts (in Bezug auf die Sliderstellung von m_ctlSlider1), oder?</p>
<pre><code class="language-cpp">int akt_pos1 = m_ctlSlider1.GetPos(); 
    int neue_pos1 = akt_pos1; 

    // Aktuelle Position an Scrolleiste übermitteln 
    m_ctlSlider1.SetPos(neue_pos1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1296442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296442</guid><dc:creator><![CDATA[isabeau]]></dc:creator><pubDate>Fri, 01 Jun 2007 09:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 09:39:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int atoi_wert1 = atoi(m_strAnzeige1);
</code></pre>
<p>Wandelt den eingegebenene Wert den ich in das Editfenster schreibe in ein int Zahl um.</p>
<pre><code class="language-cpp">m_ctlSlider1.SetPos(atoi_wert1);
</code></pre>
<p>Übergibt die int Zahl an die CSliderCtrl Variable und setzt damit den Slider an die Position der int Zahl</p>
<pre><code class="language-cpp">m_ctlSlider1.SetPos(neue_pos1);
</code></pre>
<p>Macht das gleich an anderer Stelle.</p>
<p>Wenn ich dich richtig verstanden habe, ist das mist, dass ich 2x SetPos an unterschiedlichen Stellen verwendet habe.</p>
<p>Ich habe schon viel versucht. Stellenweise Funktionen zur testzwecken auskommentiert damit das doppelgeändere nicht aufkommt, aber eigentlich wurde es immer schlimmer.</p>
<p>Du schreibst das ich kein ChangeEvent berücksichtigen darf. Wie meinst du das?<br />
Und warum funktioniert der Code bei einem reinen Dialog einwandfrei?</p>
<p>PS: Mein VC++ Status ist eher angehender Fortgeschrittener</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296450</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 09:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 09:44:04 GMT]]></title><description><![CDATA[<p>@ isabeau:</p>
<p>Diese Zeilen Übergeben die Aktuelle Position des Sliders als Wert in ein Editfenster. Ich bewege also den Slider und die Zahlen im Editfenster ändern sich laufend.</p>
<p>Auf diese Weise kann ich auch wunderbar die Werte einstellen, aber halt andersrum nicht. Ich änder den Wert im Editfenster und der Slider bleibt da wo er vorher war</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296452</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 09:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 09:51:41 GMT]]></title><description><![CDATA[<p>Sieht für mich nur so aus, als ob du dir erst die aktuelle Sliderposition in akt_pos1 merkst.<br />
Genau die gleiche Position merkst du dir dann in neue_pos1.<br />
Und genau die gleiche Position setzt du dann im Slider.<br />
Bis dahin ändert sich doch kein Stück an der Position.<br />
Erst danach wird die Position im Editfeld angezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296456</guid><dc:creator><![CDATA[isabeau]]></dc:creator><pubDate>Fri, 01 Jun 2007 09:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 10:02:18 GMT]]></title><description><![CDATA[<p>Stimmt, du hast recht</p>
<pre><code class="language-cpp">int neue_pos1 = m_ctlSlider1.GetPos();
	SetDlgItemInt(IDC_WERT1, neue_pos1);
</code></pre>
<p>macht genau das gleiche auch, nur 2 Zeilen kürzer.<br />
Vielen Dank.</p>
<p>1x SetPos wär damit eliminiert. Das eigentliche Problem besteht aber leider immernoch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296467</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 10:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 10:18:14 GMT]]></title><description><![CDATA[<p>Es ging mir eigentlich eher um die Fehlersuche. Hat Martin Richter doch auch schon oben angesprochen. Bei sich gegenseitig auslösenden Events zuerst aktuelle Position bestimmen und zurückschreiben ist schonmal so eine mögliche Fehlerquelle. Lösungsansätze stehen auch schon oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296479</guid><dc:creator><![CDATA[isabeau]]></dc:creator><pubDate>Fri, 01 Jun 2007 10:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 11:14:24 GMT]]></title><description><![CDATA[<p>Darum gehts mir auch. Und jede Codezeile zuviel ist ein potentieller Fehler, daher war der Tip von dir schon nicht schlecht, wobei ich einen Funktionsaufruf gespart habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Versteh das nur noch nicht so ganz.<br />
Du schreibst das ich kein ChangeEvent berücksichtigen darf. Wie meinst du das?<br />
Und warum funktioniert der Code bei einem reinen Dialog einwandfrei?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296511</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 11:14:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 11:34:33 GMT]]></title><description><![CDATA[<p>Dann müsste ich mehr von Denem Code sehen.<br />
Grunsätzlich ist es so, dass Datenänderungen in einem Event, evtl. andere Events auslöst, das führt leicht zu unerwünschten Effekten und Rekursionen.</p>
<p>Das müsstest Du einfach mal debuggen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296531</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 01 Jun 2007 11:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 11:45:01 GMT]]></title><description><![CDATA[<p>Ich werd mich mal am debugger versuchen, hab den bisher immer recht gut umgehen können :p</p>
<p>hier aber trotzdem mal ein bissel mehr von code.</p>
<pre><code class="language-cpp">void CComCentralOneView::OnChangeWert1() 
{
	UpdateData(TRUE);							// wichtig!!! sonst geht gar nix

	int atoi_wert1 = atoi(m_strAnzeige1);		// atoi von string to int
	m_ctlSlider1.SetPos(atoi_wert1);			// int an Slider übergeben
}

void CComCentralOneView::OnChangeWert2() 
{
	UpdateData(TRUE);							// wichtig!!! sonst geht gar nix

	int atoi_wert2 = atoi(m_strAnzeige2);		// atoi von string to int
	m_ctlSlider2.SetPos(atoi_wert2);			// int an Slider übergeben	
}
</code></pre>
<p>OnChangeWert3() bis 5 analog</p>
<pre><code class="language-cpp">void CComCentralOneView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
// Werte vom Slider werden an das Editfenster übergeben

	int neue_pos1 = m_ctlSlider1.GetPos();
	SetDlgItemInt(IDC_WERT1, neue_pos1);		// Wert der Bildlaufleiste im Textfeld anzeigen

// 2ter Slider

	int neue_pos2 = m_ctlSlider2.GetPos();
	SetDlgItemInt(IDC_WERT2, neue_pos2);

// ... Slider 3 bis 5 analog

	CFormView::OnVScroll(nSBCode, nPos, pScrollBar);
}
</code></pre>
<p>An anderen Stellen bis auf OnInitialUpdate() greif ich nicht auf diese Variablen zu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296543</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 11:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 12:09:21 GMT]]></title><description><![CDATA[<p>Warum setzt Du immer alle Variablen, wenn nur ein Slider bewegt wird. Es wird doch an OnVScroll en pScrollBar der angibt von welchem Slider es kommt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296562</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 01 Jun 2007 12:09:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Slider in SDI on Fri, 01 Jun 2007 12:23:11 GMT]]></title><description><![CDATA[<p>Du kannst fragen stellen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Es tut mir leid, aber wie gesagt, ich bin noch recht neu in diesem Milleau. Ich sag mal, meine Variante kam mir schlüssig vor, als ich das ganze noch in einem normalen Dialog hatte, dann wurde es aber mehr und mehr und musste durch eine SDI Anwendung weichen, da funktionierte der Code auf einmal nicht mehr.</p>
<p>Also ich seh und les in der MSDN die 3 Zeilen über den Pointer ScrollBar. Weiss aber leider nicht wie ich ihn anwende, damit mein Problem behoben wird.</p>
<p>Ich hatte das für einen Slider geschrieben, dann brauchte ich 4 weitere und hab den einfachen Weg des Copy&amp;Paste genommen *shame*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1296580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1296580</guid><dc:creator><![CDATA[McFanatic]]></dc:creator><pubDate>Fri, 01 Jun 2007 12:23:11 GMT</pubDate></item></channel></rss>