<?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[Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien.]]></title><description><![CDATA[<pre><code>case WM_PAINT:{
					timer_counter = GetWindowLong(hWnd,TIMER_COUNTER);
					count_new = GetWindowLong(hWnd,PAINT_COUNTER);
					count_new++;
					SetWindowLong(hWnd,PAINT_COUNTER,count_new);

					hDC = BeginPaint( hWnd, &amp;ps );

					file = fopen(&quot;datafile.dat&quot;,&quot;r&quot;);
					if( file == NULL){
						//info
						TextOut( hDC, 10, 10, &quot;Datei konnte nicht geöffnet werden!&quot;, 35 );
						return -1;
					}

					if(i&lt;=20){
					}
						else{
						for( i=0; i&lt;HISTORY; i++)
							buffer[i]=0;

					}

					nTail=0;

					// Rücksetzen der Extremwertspeicher
					nMin= 99;
					nMax=0;

					// Daten lesen
					// seek 0
					fseek(file, 0, SEEK_SET);
					// read string
					fgets( puffer, sizeof(puffer), file );
					// zu Integer konvertieren
					nValue=atoi(puffer);

					// min und max merken
					if(nValue &gt; nMax)
						nMax=nValue;

					if(nValue &lt; nMin)
						nMin=nValue;	

					// am En de in den Ringpuffer einfügen
					buffer[nTail]=nValue;
					// ... und zur nächsten Position mit &quot;Überschlag&quot;
					nTail= (nTail +1) %HISTORY;

					// vom Ende beginnend ausgeben
					nDrawPos=nTail;

					//startkoordinate setzen
					//	MoveToEx(hDC,koordinate_x+(i*SCHRITTWEITE),buffer[nDrawPos],NULL);

					for(i=0; i&lt;HISTORY; i++)
					{
						// Im Moment klappt das mit dem weiterrücken nicht								
						MoveToEx(hDC,koordinate_x,buffer[nDrawPos],NULL);

						koordinate_x=+10;

						LineTo(hDC,koordinate_x*i,buffer[nDrawPos]);

						nDrawPos= (nDrawPos +1) % HISTORY;
					}

					// 1/2 Sec. warten
					Sleep(500);

					InvalidateRect(hWnd,0,FALSE);

					EndPaint( hWnd, &amp;ps );

					close(file);

					break;
					}
</code></pre>
<p>Vielleicht habe ich auch was bei MoveToEx nicht richtig verstanden. Der Befehl ist doch zu Positionierung oder? In der Schleife mit dem MoveToEx und dem LineTo soll ein &quot;Graph&quot; gezeichnet werden. Pro schritt soll der abschnitt 10 pixel breit sein. Aber bei mir bewegt sich die Linie nur in vertikaler Richtung egal was ich an der X Koordinate ändere und ich raff nicht wieso.</p>
<p>Anfangsposition setzen, Linie zeichnen, neue Anfangsposition == Ende der Linie oder nicht?</p>
<p>Wenn einer weiß warum ich wo gegen den Baum laufe, dann bitte mal die Axt rausholen und den Baum fällen. Damit mein Brett vor dem Kopf verschwindet.</p>
<p>Gruß<br />
Snoop</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150830/grafische-ausgabe-nicht-so-wie-sie-sein-soll-keine-horizontale-ausdehnung-der-linien</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 16:50:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150830.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Jun 2006 16:11:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 16:13:45 GMT]]></title><description><![CDATA[<pre><code>case WM_PAINT:{
					timer_counter = GetWindowLong(hWnd,TIMER_COUNTER);
					count_new = GetWindowLong(hWnd,PAINT_COUNTER);
					count_new++;
					SetWindowLong(hWnd,PAINT_COUNTER,count_new);

					hDC = BeginPaint( hWnd, &amp;ps );

					file = fopen(&quot;datafile.dat&quot;,&quot;r&quot;);
					if( file == NULL){
						//info
						TextOut( hDC, 10, 10, &quot;Datei konnte nicht geöffnet werden!&quot;, 35 );
						return -1;
					}

					if(i&lt;=20){
					}
						else{
						for( i=0; i&lt;HISTORY; i++)
							buffer[i]=0;

					}

					nTail=0;

					// Rücksetzen der Extremwertspeicher
					nMin= 99;
					nMax=0;

					// Daten lesen
					// seek 0
					fseek(file, 0, SEEK_SET);
					// read string
					fgets( puffer, sizeof(puffer), file );
					// zu Integer konvertieren
					nValue=atoi(puffer);

					// min und max merken
					if(nValue &gt; nMax)
						nMax=nValue;

					if(nValue &lt; nMin)
						nMin=nValue;	

					// am En de in den Ringpuffer einfügen
					buffer[nTail]=nValue;
					// ... und zur nächsten Position mit &quot;Überschlag&quot;
					nTail= (nTail +1) %HISTORY;

					// vom Ende beginnend ausgeben
					nDrawPos=nTail;

					//startkoordinate setzen
					//	MoveToEx(hDC,koordinate_x+(i*SCHRITTWEITE),buffer[nDrawPos],NULL);

					for(i=0; i&lt;HISTORY; i++)
					{
						// Im Moment klappt das mit dem weiterrücken nicht								
						MoveToEx(hDC,koordinate_x,buffer[nDrawPos],NULL);

						koordinate_x=+10;

						LineTo(hDC,koordinate_x*i,buffer[nDrawPos]);

						nDrawPos= (nDrawPos +1) % HISTORY;
					}

					// 1/2 Sec. warten
					Sleep(500);

					InvalidateRect(hWnd,0,FALSE);

					EndPaint( hWnd, &amp;ps );

					close(file);

					break;
					}
</code></pre>
<p>Vielleicht habe ich auch was bei MoveToEx nicht richtig verstanden. Der Befehl ist doch zu Positionierung oder? In der Schleife mit dem MoveToEx und dem LineTo soll ein &quot;Graph&quot; gezeichnet werden. Pro schritt soll der abschnitt 10 pixel breit sein. Aber bei mir bewegt sich die Linie nur in vertikaler Richtung egal was ich an der X Koordinate ändere und ich raff nicht wieso.</p>
<p>Anfangsposition setzen, Linie zeichnen, neue Anfangsposition == Ende der Linie oder nicht?</p>
<p>Wenn einer weiß warum ich wo gegen den Baum laufe, dann bitte mal die Axt rausholen und den Baum fällen. Damit mein Brett vor dem Kopf verschwindet.</p>
<p>Gruß<br />
Snoop</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081539</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Tue, 20 Jun 2006 16:13:45 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 18:21:45 GMT]]></title><description><![CDATA[<p>Nur mal am Rande:<br />
1. Was soll der Sleep in WM_PAINT?<br />
2. Was soll der Invalidate in WM_PAINT vor EndPaint?</p>
<p>Was soll das Ding den tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081605</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 20 Jun 2006 18:21:45 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 20:14:23 GMT]]></title><description><![CDATA[<p>Ich habe eine Datei datafile.dat aus der werte ausgelesen werden. Diese sollten dann als Graph dargestellt werden. Bedingung hierbei ist das jeder wert als linie der länge 10 pixel mit der höhe(dem wert) als y-komponente dargestellt werden soll. Hierbei soll auch noch das MoveToEx zum einsatz kommen, aber ich krieg es einfach nicht hin das er den ersten strich zeichnet und dann DAHINTER den 2ten, obwohl das ganze ja nur eine verschiebung in x richtung ist, macht er es nicht wenn ich ihm sage MoveToEx ende der Linie und das ist der neue anfang für den nächsten Wert der als Linie dargestellt wird.</p>
<p>Das Sleep soll nur als verzögerung drinnen sein, weil die werte mit 1/2 sec in der Datei ankommen.</p>
<p>Mit dem InvalidateRect wird doch nur das Fenster aktualisiert oder und zwar in dem Fall das gesamte Fenster?</p>
<p>gruß<br />
Snoop</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081685</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Tue, 20 Jun 2006 20:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 20:32:01 GMT]]></title><description><![CDATA[<p>Du solltest das lesen der Datei *nicht* in WM_PAINT machen! Sondern am besten in einem WM_TIMER, welcher z.B. alle 500 ms aufgerufen wird.<br />
Nach dem einlesen und den speichern in einer &quot;Variablen&quot;, solltest Du InvalidateRect aufrufen, welches dann (wenn das Fenster sichtbar ist) ein WM_PAINT auslöst. Dann kannst Du dort Zeichnen (und bitte *nur* Zeichnen!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081696</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 20 Jun 2006 20:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 21:26:15 GMT]]></title><description><![CDATA[<p>Danke für den Tip mit der Aufgabenteilung.</p>
<p>Wenn ich mich nun mal auf das Zeichnen im WM_PAINT beschränke kommen wir schon zum Kernproblem.</p>
<pre><code>for(i=0; i&lt;HISTORY; i++)
                    {
                        // Im Moment klappt das mit dem weiterrücken nicht                               
                        MoveToEx(hDC,koordinate_x,buffer[nDrawPos],NULL);

                        koordinate_x=+10;

                        LineTo(hDC,koordinate_x*i,buffer[nDrawPos]);

                        nDrawPos= (nDrawPos +1) % HISTORY;
                    }
</code></pre>
<p>koordinate_x hat einen startwert und der wird danach erhöht, beim nächsten durchlauf sollte doch die koordinate die ja um 10 erhöht worden ist auch weiter rechts landen, da es ja die x koordinate ist oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081718</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Tue, 20 Jun 2006 21:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 22:14:45 GMT]]></title><description><![CDATA[<p>Mach aus<br />
koordinate_x**=+<strong>10;<br />
das hier:<br />
koordinate_x</strong>+=**10;</p>
<p>Vermutlich war das nur ein Tippfehler von dir, oder?<br />
Mit <em>=+10</em> setzt du jedes Mal <em>koordinate_x</em> auf <em>+10</em>.</p>
<pre><code>for(i=0; i&lt;HISTORY; i++)
                    {
                        // Im Moment klappt das mit dem weiterrücken nicht                              
                        MoveToEx(hDC,koordinate_x,buffer[nDrawPos],NULL);

                        koordinate_x+=10;    // Hier geändert

                        LineTo(hDC,koordinate_x*i,buffer[nDrawPos]);

                        nDrawPos= (nDrawPos +1) % HISTORY;
                    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1081740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081740</guid><dc:creator><![CDATA[Dago]]></dc:creator><pubDate>Tue, 20 Jun 2006 22:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Grafische Ausgabe nicht so wie sie sein soll. keine Horizontale Ausdehnung der Linien. on Tue, 20 Jun 2006 22:22:35 GMT]]></title><description><![CDATA[<p>selbst wenn ich</p>
<pre><code>koordinate_x=koordinate_x+10;
</code></pre>
<p>schreibe gehts kein pixel weiter, obwohl der wert ja eindeutig sich erhöht.</p>
<p>Gibt bei LineTo evtl richtungstechnisch was zu beachten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081742</guid><dc:creator><![CDATA[McSnoop]]></dc:creator><pubDate>Tue, 20 Jun 2006 22:22:35 GMT</pubDate></item></channel></rss>