<?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[Einen Eintrag in der ListBox um eine Position nach oben bzw. nach unten verschieben?]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine ListBox, welche bereits mit verschiedenen Einträgen gefüllt ist. Nun möchte ich einen markierten Eintrag, ausgelöst durch einen Button-Klick, um jeweils eine Position nach oben bzw. unten in der Liste verschieben.</p>
<p>Hier meine bisherige Realisierung:</p>
<pre><code class="language-cpp">...
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
   ...
   case ID_MOVEUPBUTTON:
   {
      LPCSTR	szItem1[URL_BUF];  // lokale Hilfsvariable
      LPCSTR	szItem2[URL_BUF];  // lokale Hilfsvariable
      int       CurrentItemPos;  // speichert die Position des aktuell markierten Listen-Eintrags

      /* aktuell ausgewählten Listen-Eintrag um eine Position nach oben schieben */
      CurrentItemPos = SendMessage(hListBox, LB_GETCURSEL, 0, 0);  // liefert die Position des ausgewählten Listen-Eintrags
      if (CurrentItemPos &gt; 0)	 // wenn der Eintrag nicht der oberste in der Liste ist
      {
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos, (LPARAM)szItem1);
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos - 1, (LPARAM)szItem2);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos, 0);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos - 1, 0);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos - 1, (LPARAM)szItem1);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos, (LPARAM)szItem2);
      }
      break;
   }
   case ID_MOVEDOWNBUTTON:
   {
      LPCSTR	szItem1[URL_BUF];  // lokale Hilfsvariable
      LPCSTR	szItem2[URL_BUF];  // lokale Hilfsvariable
      int       CurrentItemPos;  // speichert die Position des aktuell markierten Listen-Eintrags
      int       ItemCount;  // speichert die Anzahl der Listen-Einträge

      /* aktuell ausgewählten Listen-Eintrag um eine Position nach unten schieben */
      CurrentItemPos = SendMessage(hListBox, LB_GETCURSEL, 0, 0);  // liefert die Position des ausgewählten Listen-Eintrags
      ItemCount = SendMessage(hListBox, LB_GETCOUNT, 0, 0);  // liefert die Position des letzten Listen-Eintrags
      if (CurrentItemPos &lt; ItemCount - 1)  // wenn es nicht der letzte Eintrag der Liste ist
      {
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos, (LPARAM)szItem1);
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos + 1, (LPARAM)szItem2);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos + 1, 0);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos, 0);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos, (LPARAM)szItem2);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos + 1, (LPARAM)szItem1);
      }
      break;
   }
   ...
}
</code></pre>
<p>Das Prinzip:<br />
1. Auslesen der beiden zuvertauschenden Listen-Einträge in Hilfsvariablen.<br />
2. Löschen der beiden Listen-Einträge<br />
3. Zwei neue Listeneinträge von den Hilfsvariablen erstellen</p>
<p>Das Ganze ist ziemlich umständlich und unübersichtlich wie ich finde. Also da gibt es doch sicherlich etwas vorgefertigtes bzw. eleganteres?</p>
<p>Gibt es nicht wenigstens eine LB_*-Nachricht um einen Eintrag umzubennen, statt ihn zu löschen und neu zu erstellen?</p>
<p>Danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189514/einen-eintrag-in-der-listbox-um-eine-position-nach-oben-bzw-nach-unten-verschieben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:21:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189514.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Aug 2007 19:48:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einen Eintrag in der ListBox um eine Position nach oben bzw. nach unten verschieben? on Mon, 13 Aug 2007 19:48:38 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe eine ListBox, welche bereits mit verschiedenen Einträgen gefüllt ist. Nun möchte ich einen markierten Eintrag, ausgelöst durch einen Button-Klick, um jeweils eine Position nach oben bzw. unten in der Liste verschieben.</p>
<p>Hier meine bisherige Realisierung:</p>
<pre><code class="language-cpp">...
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
   ...
   case ID_MOVEUPBUTTON:
   {
      LPCSTR	szItem1[URL_BUF];  // lokale Hilfsvariable
      LPCSTR	szItem2[URL_BUF];  // lokale Hilfsvariable
      int       CurrentItemPos;  // speichert die Position des aktuell markierten Listen-Eintrags

      /* aktuell ausgewählten Listen-Eintrag um eine Position nach oben schieben */
      CurrentItemPos = SendMessage(hListBox, LB_GETCURSEL, 0, 0);  // liefert die Position des ausgewählten Listen-Eintrags
      if (CurrentItemPos &gt; 0)	 // wenn der Eintrag nicht der oberste in der Liste ist
      {
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos, (LPARAM)szItem1);
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos - 1, (LPARAM)szItem2);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos, 0);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos - 1, 0);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos - 1, (LPARAM)szItem1);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos, (LPARAM)szItem2);
      }
      break;
   }
   case ID_MOVEDOWNBUTTON:
   {
      LPCSTR	szItem1[URL_BUF];  // lokale Hilfsvariable
      LPCSTR	szItem2[URL_BUF];  // lokale Hilfsvariable
      int       CurrentItemPos;  // speichert die Position des aktuell markierten Listen-Eintrags
      int       ItemCount;  // speichert die Anzahl der Listen-Einträge

      /* aktuell ausgewählten Listen-Eintrag um eine Position nach unten schieben */
      CurrentItemPos = SendMessage(hListBox, LB_GETCURSEL, 0, 0);  // liefert die Position des ausgewählten Listen-Eintrags
      ItemCount = SendMessage(hListBox, LB_GETCOUNT, 0, 0);  // liefert die Position des letzten Listen-Eintrags
      if (CurrentItemPos &lt; ItemCount - 1)  // wenn es nicht der letzte Eintrag der Liste ist
      {
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos, (LPARAM)szItem1);
         SendMessage(hListBox, LB_GETTEXT, CurrentItemPos + 1, (LPARAM)szItem2);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos + 1, 0);
         SendMessage(hListBox, LB_DELETESTRING, CurrentItemPos, 0);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos, (LPARAM)szItem2);
         SendMessage(hListBox, LB_INSERTSTRING, CurrentItemPos + 1, (LPARAM)szItem1);
      }
      break;
   }
   ...
}
</code></pre>
<p>Das Prinzip:<br />
1. Auslesen der beiden zuvertauschenden Listen-Einträge in Hilfsvariablen.<br />
2. Löschen der beiden Listen-Einträge<br />
3. Zwei neue Listeneinträge von den Hilfsvariablen erstellen</p>
<p>Das Ganze ist ziemlich umständlich und unübersichtlich wie ich finde. Also da gibt es doch sicherlich etwas vorgefertigtes bzw. eleganteres?</p>
<p>Gibt es nicht wenigstens eine LB_*-Nachricht um einen Eintrag umzubennen, statt ihn zu löschen und neu zu erstellen?</p>
<p>Danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343958</guid><dc:creator><![CDATA[BarneyGumble]]></dc:creator><pubDate>Mon, 13 Aug 2007 19:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Eintrag in der ListBox um eine Position nach oben bzw. nach unten verschieben? on Mon, 13 Aug 2007 21:23:24 GMT]]></title><description><![CDATA[<p>BarneyGumble schrieb:</p>
<blockquote>
<p>Das Ganze ist ziemlich umständlich und unübersichtlich wie ich finde. Also da gibt es doch sicherlich etwas vorgefertigtes bzw. eleganteres?</p>
<p>Gibt es nicht wenigstens eine LB_*-Nachricht um einen Eintrag umzubennen, statt ihn zu löschen und neu zu erstellen?</p>
</blockquote>
<p>Das Ganze ist in der Tat umständlich und unübersichtlich, aber etwas vorgefertigtes bzw. eleganteres gibt es (leider) nicht.</p>
<p>Nach einer LB_*-Nachricht, die einen Eintrag umbenennt, wirst du vergeblich suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1343995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1343995</guid><dc:creator><![CDATA[schmidt-webdesign.net]]></dc:creator><pubDate>Mon, 13 Aug 2007 21:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Eintrag in der ListBox um eine Position nach oben bzw. nach unten verschieben? on Mon, 13 Aug 2007 21:28:45 GMT]]></title><description><![CDATA[<p>Du solltest Dir diese Funktionalität evtl in einer Funktion kapseln, dann bleibt es im Hauptprogramm übersichtlich <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="😉"
    /> . Denn, wie schon gesagt, sowas gibts nicht (IMHO).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1344001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344001</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Mon, 13 Aug 2007 21:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Eintrag in der ListBox um eine Position nach oben bzw. nach unten verschieben? on Tue, 14 Aug 2007 07:08:36 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten</p>
<p>In der Tat, ich habe in der MSDN Library vergeblich nach einer solchen Funktionalität gesucht.</p>
<p>Okay, ich werde das Ganze noch in eine Funktion packen und die Sache ist gegessen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1344074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1344074</guid><dc:creator><![CDATA[BarneyGumble]]></dc:creator><pubDate>Tue, 14 Aug 2007 07:08:36 GMT</pubDate></item></channel></rss>