<?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 beim schreiben eines Texteditors]]></title><description><![CDATA[<p>Hallo !</p>
<p>Ich habe die Tage angefangen mich mit der WinAPI zu beschäftigen und wollte jetzt einen ganz einfachen Texteditor schreiben .<br />
Ich bin aber auf ein Problem getroffen , welches ich nicht alleine lösen kann .</p>
<p>Ich möchte in einem Feld, die aktuelle Spalte und Zeile des Carets im Editfeld anzeigen lassen :</p>
<pre><code>case WM_COMMAND:{
[...]
if( HIWORD( wParam ) == EN_CHANGE ){
	switch( LOWORD(wParam) ){
		case 5: // ID von hEdit ( Editfeld )

			iZeile = HIWORD(SendMessage(hEdit,EM_GETSEL,0,0));
			iSpalte = LOWORD(SendMessage(hEdit,EM_GETSEL,0,0));

			wsprintf( status_text , &quot;Zeile: %i - Spalte: %i&quot; , iZeile , iSpalte  );
			SetWindowText( hStatus , status_text );

			return 0;
	}
}
[...]
</code></pre>
<p>Mein Problem ist , das der Wert der Spalte = der Wert der Zeile ist und das der Wert pro Spalte um 1 ansteigt und pro Zeile um 2 .</p>
<p>Ich würde mich freuen , wenn ihr mir helfen würdet .</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/72981/problem-beim-schreiben-eines-texteditors</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 07:36:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/72981.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 May 2004 15:17:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Tue, 04 May 2004 15:17:20 GMT]]></title><description><![CDATA[<p>Hallo !</p>
<p>Ich habe die Tage angefangen mich mit der WinAPI zu beschäftigen und wollte jetzt einen ganz einfachen Texteditor schreiben .<br />
Ich bin aber auf ein Problem getroffen , welches ich nicht alleine lösen kann .</p>
<p>Ich möchte in einem Feld, die aktuelle Spalte und Zeile des Carets im Editfeld anzeigen lassen :</p>
<pre><code>case WM_COMMAND:{
[...]
if( HIWORD( wParam ) == EN_CHANGE ){
	switch( LOWORD(wParam) ){
		case 5: // ID von hEdit ( Editfeld )

			iZeile = HIWORD(SendMessage(hEdit,EM_GETSEL,0,0));
			iSpalte = LOWORD(SendMessage(hEdit,EM_GETSEL,0,0));

			wsprintf( status_text , &quot;Zeile: %i - Spalte: %i&quot; , iZeile , iSpalte  );
			SetWindowText( hStatus , status_text );

			return 0;
	}
}
[...]
</code></pre>
<p>Mein Problem ist , das der Wert der Spalte = der Wert der Zeile ist und das der Wert pro Spalte um 1 ansteigt und pro Zeile um 2 .</p>
<p>Ich würde mich freuen , wenn ihr mir helfen würdet .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514215</guid><dc:creator><![CDATA[datanist]]></dc:creator><pubDate>Tue, 04 May 2004 15:17:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Tue, 04 May 2004 19:01:57 GMT]]></title><description><![CDATA[<p>Also laut MSDN gibt dir EM_GETSEL nicht Zeile/Spalte zurück, sondern die Position der Markierung im Text. Und zwar in Zeichen vom Anfang der Datei/Dokument.</p>
<blockquote>
<p>Return Value</p>
<p>The return value is a zero-based value with the starting position of the selection in the low-order word and the position of the first character after the last selected character in the high-order word. If either of these values exceeds 65,535, the return value is –1.</p>
<p>It is better to use the values returned in wParam and lParam because they are full 32-bit values.</p>
</blockquote>
<p>Sofern es dafür nicht bereits eine Funktion gibt müsstest du also folgendes machen:<br />
Die Anzahl der Zeichen bis zum ersten Return (&quot;\n&quot;) vor der zurückgegebenen Position (LOWORD) ist die Spalte.<br />
Die Anzahl der Returns vor der zurückgegebenen Position (auch LOWORD) ist die Zeile.</p>
<p>Allerdings bin ich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Anfänger <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> und deswegen könnte das totaler Quatsch sein was ich da rede.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ...möglicherweise hat Windows auch bereits irgendeine Funktion/Message dafür eingebaut....bist ja schließlich nicht der erste der sowas braucht...</p>
<p>[Zusatz]<br />
Guck mal nach EM_LINEFROMCHAR / EM_EXLINEFROMCHAR / EM_LINEINDEX, das könnte sowas sein...<br />
Mit EM_LINEFROMCHAR bekommst du die Zeile in der sich eine bestimmte Position befindet. Mit EM_LINEINDEX bekommst du die Position des ersten Zeichens in der Zeile. Also bekommst du mit (Position - erstes Zeichen) die Spalte.</p>
<p>Coolcat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514379</guid><dc:creator><![CDATA[Coolcat]]></dc:creator><pubDate>Tue, 04 May 2004 19:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Tue, 04 May 2004 19:51:42 GMT]]></title><description><![CDATA[<p>Danke Coolcat ,<br />
ich habe zwar keine Funktion gefunden , aber eine selber geschrieben .</p>
<p>MFG datanist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514427</guid><dc:creator><![CDATA[datanist]]></dc:creator><pubDate>Tue, 04 May 2004 19:51:42 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Tue, 04 May 2004 22:10:46 GMT]]></title><description><![CDATA[<p>Er hat doch eigentlich geschrieben, welche Messages du brauchst <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>
]]></description><link>https://www.c-plusplus.net/forum/post/514487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514487</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Tue, 04 May 2004 22:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Tue, 04 May 2004 22:50:43 GMT]]></title><description><![CDATA[<p>datanist schrieb:</p>
<blockquote>
<p>Danke Coolcat ,<br />
ich habe zwar keine Funktion gefunden , aber eine selber geschrieben .</p>
</blockquote>
<p>Bei eigenen Lösungen die bitte immer angeben für Nachfolgende, die auch das Problem haben sollten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/514496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514496</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Tue, 04 May 2004 22:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim schreiben eines Texteditors on Wed, 05 May 2004 13:35:27 GMT]]></title><description><![CDATA[<p>Meine Lösung ist :</p>
<pre><code>caret_pos = HIWORD(SendMessage(hEdit,EM_GETSEL,0,0));
GetWindowText( hEdit , temp , caret_pos );

iZeile = 1;
iSpalte = 1;

for( int i = 0; i &lt; (caret_pos); i++ ){
	if( temp[i] == (CHAR) 13 ){
		iZeile++;
		iSpalte = 0;
	}else{
		iSpalte++;
	}
}

wsprintf( status_text , &quot;Zeile: %i - Spalte: %i&quot; , iZeile , iSpalte  );
SetWindowText( hStatus , status_text );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/514737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/514737</guid><dc:creator><![CDATA[datanist]]></dc:creator><pubDate>Wed, 05 May 2004 13:35:27 GMT</pubDate></item></channel></rss>