<?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[Daten an Listenelement hängen]]></title><description><![CDATA[<p>ich versuche gerade in einer WinApi anwendung Daten an ein Listenelement zu hängen.<br />
Damit es keine missverständnisse gibt bei CListCtrl wäre das SetItemData.</p>
<p>Laut MSDN würde/soll das mit der LVITEM strucktur gehn. Nur bin ich mir nicht ganz im klaren wie.<br />
alle meine versuche schlugen bislang fehl, indem nichts an das Element gefügt wurde.</p>
<p>wie folgt sind meine versuche die Daten an das Element zu hängen bzw. diese wieder abzurufen.</p>
<pre><code class="language-cpp">BOOL SetListItemData(HWND hWnd, UINT uiID, DWORD dwData,int iItem)
{	/**********************************************************************************************
		- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
		- uiID definition der Liste
		- dwData Informationen die im Element gespeichert werden
		- iItem Nr des Elementes in das gespeichert wird
	**********************************************************************************************/
	LVITEM LvItem;
	memset(&amp;LvItem,0,sizeof(LvItem));			

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen

	LvItem.mask			= LVIF_PARAM;			

	LvItem.iItem		= iItem;				// Element Nr das gesetzt wird 

	LPARAM lParam		= MAKELPARAM(dwData,sizeof(dwData));
	LvItem.lParam		= lParam;			

	SendMessage(hList,LVM_SETITEM,(WPARAM)0,(LPARAM)&amp;LvItem); // füge Element ein

	return TRUE;
}
BOOL GetListItemData(HWND hWnd, UINT uiID,int iItem,DWORD &amp;dwData,DWORD &amp;dwSizeData)
{	/**********************************************************************************************

		- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
		- uiID definition der Liste
		- iItem Nr des Elementes das gesucht wird
		- dwData gespeicherte Informationen im Element
		- dwSizeData größe der gespeicherte Informationen im Element
	**********************************************************************************************/

	LVITEM LvItem;
    	memset(&amp;LvItem,0,sizeof(LvItem));			

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen

	LvItem.mask			= LVIF_PARAM;			

	LvItem.iItem		= iItem;				// Element Nr das gesucht wird 

	SendMessage(hList,LVM_GETITEMTEXT,(WPARAM)iItem,(LPARAM)&amp;LvItem); 

	CString sFormat;
	sFormat.Format(&quot;0x%08X\n%i&quot;,LOWORD(LvItem.lParam),HIWORD(LvItem.lParam));
	MsgBox(sFormat);

	dwData				= LOWORD(LvItem.lParam);	         
	dwSizeData			= HIWORD(LvItem.lParam);

	return TRUE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/178262/daten-an-listenelement-hängen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 00:11:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178262.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Apr 2007 18:55:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Daten an Listenelement hängen on Mon, 09 Apr 2007 18:55:06 GMT]]></title><description><![CDATA[<p>ich versuche gerade in einer WinApi anwendung Daten an ein Listenelement zu hängen.<br />
Damit es keine missverständnisse gibt bei CListCtrl wäre das SetItemData.</p>
<p>Laut MSDN würde/soll das mit der LVITEM strucktur gehn. Nur bin ich mir nicht ganz im klaren wie.<br />
alle meine versuche schlugen bislang fehl, indem nichts an das Element gefügt wurde.</p>
<p>wie folgt sind meine versuche die Daten an das Element zu hängen bzw. diese wieder abzurufen.</p>
<pre><code class="language-cpp">BOOL SetListItemData(HWND hWnd, UINT uiID, DWORD dwData,int iItem)
{	/**********************************************************************************************
		- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
		- uiID definition der Liste
		- dwData Informationen die im Element gespeichert werden
		- iItem Nr des Elementes in das gespeichert wird
	**********************************************************************************************/
	LVITEM LvItem;
	memset(&amp;LvItem,0,sizeof(LvItem));			

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen

	LvItem.mask			= LVIF_PARAM;			

	LvItem.iItem		= iItem;				// Element Nr das gesetzt wird 

	LPARAM lParam		= MAKELPARAM(dwData,sizeof(dwData));
	LvItem.lParam		= lParam;			

	SendMessage(hList,LVM_SETITEM,(WPARAM)0,(LPARAM)&amp;LvItem); // füge Element ein

	return TRUE;
}
BOOL GetListItemData(HWND hWnd, UINT uiID,int iItem,DWORD &amp;dwData,DWORD &amp;dwSizeData)
{	/**********************************************************************************************

		- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
		- uiID definition der Liste
		- iItem Nr des Elementes das gesucht wird
		- dwData gespeicherte Informationen im Element
		- dwSizeData größe der gespeicherte Informationen im Element
	**********************************************************************************************/

	LVITEM LvItem;
    	memset(&amp;LvItem,0,sizeof(LvItem));			

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen

	LvItem.mask			= LVIF_PARAM;			

	LvItem.iItem		= iItem;				// Element Nr das gesucht wird 

	SendMessage(hList,LVM_GETITEMTEXT,(WPARAM)iItem,(LPARAM)&amp;LvItem); 

	CString sFormat;
	sFormat.Format(&quot;0x%08X\n%i&quot;,LOWORD(LvItem.lParam),HIWORD(LvItem.lParam));
	MsgBox(sFormat);

	dwData				= LOWORD(LvItem.lParam);	         
	dwSizeData			= HIWORD(LvItem.lParam);

	return TRUE;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1262495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1262495</guid><dc:creator><![CDATA[Liste]]></dc:creator><pubDate>Mon, 09 Apr 2007 18:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Daten an Listenelement hängen on Wed, 11 Apr 2007 10:46:57 GMT]]></title><description><![CDATA[<p>schiebung<br />
keinder eine Idee wie das geht bzw was ich falsch mach?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263705</guid><dc:creator><![CDATA[Liste]]></dc:creator><pubDate>Wed, 11 Apr 2007 10:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to Daten an Listenelement hängen on Wed, 11 Apr 2007 12:26:06 GMT]]></title><description><![CDATA[<p>Hoi,</p>
<p>Also, dieser Codeabschnitt könnte Probleme machen:</p>
<blockquote>
<pre><code class="language-cpp">LPARAM lParam        = MAKELPARAM(dwData,sizeof(dwData));
LvItem.lParam        = lParam;
</code></pre>
</blockquote>
<p>dwData, also der Typ DWORD verbraucht i.d.R. (auf einem 32-Bit Rechner) <em>sizeof(DWORD) = 4 Bytes</em>. LPARAM ist definiert als long, verbraucht also auch 4 Bytes...das wird eng. Was soll diese Art der Zuweisung überhaupt ?<br />
Machs einfach so:</p>
<pre><code class="language-cpp">LvItem.lParam = dwData;
</code></pre>
<p>In Deinem Post ist übrigens keine Fehlerbeschreibung vorhanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /> ... <strong>WAS</strong> ist denn überhaupt das Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ? <strong>WO</strong> läuft etwas schief ? Gegebenenfalls mal mit dem <strong>Debugger</strong> geschaut ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263790</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 11 Apr 2007 12:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Daten an Listenelement hängen on Wed, 11 Apr 2007 13:08:33 GMT]]></title><description><![CDATA[<p>Naja fehlerbeschreibung gibt es keine, denn es passiert kein fehler, die Liste wird problemlos erstellt nur wird nichts<br />
an das Listenelement drangehängt.</p>
<p>Zu meiner schande mus ich gestehn das ich nicht gerade per du mit dem Debugger bin.</p>
<p>und mit der art der zuweisung wollte ich versuchen, zwei fliegen mit einer klappe zu schlagen. ging wohl nach hinten los.<br />
Danke für den tip werd das nacher gleich mal versuchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263822</guid><dc:creator><![CDATA[Liste]]></dc:creator><pubDate>Wed, 11 Apr 2007 13:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to Daten an Listenelement hängen on Tue, 17 Apr 2007 13:47:57 GMT]]></title><description><![CDATA[<p>aus dem nacher ist dann doch etwas später geworden.<br />
so, hab das mal versucht wie CodeFinder es vorgeschlagen hat.</p>
<p>anscheinend bin ich zu blöd das zu bewerkstelligen, denn ich krieg es nicht gebacken daten an das Listenelement zu klemmen.<br />
was ich zumindest mal geschaft hab ist das SetCheck/Getcheck für Checkboxen in der Liste zu bewerkstelligen.<br />
dabei versteh ich noch nicht ganz was da passiert. anbei vieleicht kann mir das jemand mal erklären.</p>
<pre><code>#define LV_SETCHECKBOX(x) ((int(x) + 1) &lt;&lt; 12)
#define LV_GETCHECKBOX(x) ((int(x) - 1) &gt;&gt; 12)

void CCtrlList::SetListItemCheck(HWND hWnd, UINT uiID,int iItem,BOOL bCheck)
{	/**********************************************************************************************
									SET LIST ITEM CHECK
					Setzt die Checkbox des Elements

				- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
				- uiID definition der Liste
				- iItem Nr des Elementes das gesucht wird
				- bCheck Wert auf den die Checkbox gesetzt wird
	**********************************************************************************************/
	LVITEM LvItem;
    memset(&amp;LvItem,0,sizeof(LvItem));			// Setze Element Struct zurück

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen
	LvItem.mask			= LVIF_STATE ;			// Text Style
	LvItem.state		= LV_SETCHECKBOX(bCheck);//((int(bCheck) + 1) &lt;&lt; 12);
	LvItem.stateMask	= LVIS_STATEIMAGEMASK;

	SendMessage(hList,LVM_SETITEMSTATE,(WPARAM)iItem,(LPARAM)&amp;LvItem); // Setze Element Status

}
BOOL CCtrlList::GetListItemCheck(HWND hWnd, UINT uiID,int iItem)
{	/**********************************************************************************************
									GET LIST ITEM CHECK
					gibt zurück ob die Checkbox des Elements angehackt ist

				- hWnd Handle auf das Dialogfenster indem die Liste erstellt wird
				- uiID definition der Liste
				- iItem Nr des Elementes das gesucht wird
	**********************************************************************************************/
	LVITEM LvItem;
   memset(&amp;LvItem,0,sizeof(LvItem));			// Setze Element Struct zurück

	HWND hList			= GetDlgItem(hWnd,uiID);//Handle auf die Liste holen
	LvItem.mask			= LVIF_STATE ;			// Text Style
	LvItem.stateMask	= LVIS_STATEIMAGEMASK;
    LvItem.iItem		= iItem; 

	SendMessage(hList,LVM_GETITEM,(WPARAM)0,(LPARAM)&amp;LvItem); // Setze Element Status

	return 	LV_GETCHECKBOX(LvItem.state);//((int(LvItem.state) - 1) &gt;&gt; 12);

}
</code></pre>
<p>bevor missverständniss auftreten was ich nicht versteh ist ((int(TRUE) + 1) &lt;&lt; 12) bzw. ((int(LvItem.state) - 1) &gt;&gt; 12)<br />
was passiert da</p>
<p>ferner bräuchte ich wirklich dringend, wie ich daten an ein listenelement hängen kann. durch googlen und lesen in der<br />
MSDN &lt;-(werd daraus leider nicht soo ganz schlau) denke ich das es ähnlich gehen muss wie den Status der CheckBox an das Element<br />
zu hängen. ich muss daten in der form von Flags</p>
<pre><code>#define	OPEN_EDIT		0x1000	
#define	OBEN_COMBO	0x2000
</code></pre>
<p>an das Listenelement hängen. aber ich hab keinen schimmer unter was LVIS_STATEIMAGEMASK o. LVIS_OVERLAYMASK bzw. wie</p>
<pre><code>LvItem.state = OPEN_EDIT;
LvItem.state = ((OPEN_EDIT)&lt;&lt;8);
</code></pre>
<p>da alle versuche in der form fehlschlugen das ich keine Daten zurückbekommen hab. aus diesem grund hab ich auch keine code<br />
den ich hier posten könnte. Ich weis also nicht, ob ich die daten schon falsch zuweise oder nur die abfrage falsch ist.</p>
<p>wie gesagt ich bräuchte es echt dringend.<br />
bin für jede hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267758</guid><dc:creator><![CDATA[Liste]]></dc:creator><pubDate>Tue, 17 Apr 2007 13:47:57 GMT</pubDate></item></channel></rss>