<?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[Neuzeichnen der &amp;quot;Explorer-Details&amp;quot; Liste funzt nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe in einem Programm eine spezielle Art der Liste benutzt, die im Explorer zum anzeigen von Details benutzt wird. Das Problem ist immer wenn das komplette Fenster neu gezeichnet werden muss oder die breite einer Spalte verändert wird, werden alle bisherigen Einträge mit dem letzten überschrieben. Allerdings ist es problemlos möglich neue Einträge hinzuzufügen.</p>
<p>z.B.</p>
<p>1 | 1 | 1 3 | 3 | 3<br />
2 | 2 | 2 --&gt; 3 | 3 | 3<br />
3 | 3 | 3 3 | 3 | 3</p>
<p>Hier der Code, es kann sein das einige deklarationen von Variabeln fehlen, er ist aber im ganzen kompelierbar:</p>
<pre><code class="language-cpp">//Message Handler:
static HINSTANCE hinstance = (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE);
	static char xy1[100], xy2[100], xy3[100];
	static int iSubItem = 0;
	static deque&lt;VOKABEL_DATEN&gt; vok_daten;
	static LVCOLUMN list;
	LVITEM item;
	INITCOMMONCONTROLSEX icex; 
	TEST text = {&quot;xy&quot;, &quot;xy&quot;, &quot;xy&quot;};
	switch(message)
	{
		case WM_CREATE:
  			icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
          	icex.dwICC  = ICC_LISTVIEW_CLASSES;
          	InitCommonControlsEx(&amp;icex);

			CreateWindow(&quot;button&quot;, &quot;Speichern&quot;, WS_VISIBLE | WS_CHILD, 270,360,100,40,hwnd,(HMENU) BT_SPEICHERN,hinstance,0);
			CreateWindow(&quot;button&quot;, &quot;Abbrechen&quot;, WS_VISIBLE | WS_CHILD, 20,360,100,40,hwnd,(HMENU) BT_ABBRECHEN,hinstance,0);
			CreateWindow(&quot;button&quot;, &quot;Hinzufügen&quot;, WS_VISIBLE | WS_CHILD, 280,70,100,40,hwnd,(HMENU) BT_HINZUFUGEN,hinstance,0);
			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,50,170,20,hwnd,(HMENU) EDIT_LATEIN,hinstance,0);
			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,80,170,20,hwnd,(HMENU) EDIT_DEUTSCH,hinstance,0);
   			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,110,170,20,hwnd,(HMENU) EDIT_ZUSATZ,hinstance,0);
      		CreateWindow(&quot;static&quot;, &quot;Latein:&quot;, WS_VISIBLE | WS_CHILD, 20,52,60,50,hwnd,0,hinstance,0);
        	CreateWindow(&quot;static&quot;, &quot;Deutsch:&quot;, WS_VISIBLE | WS_CHILD, 20,82,60,50,hwnd,0,hinstance,0);
         	CreateWindow(&quot;static&quot;, &quot;Zusatz:&quot;, WS_VISIBLE | WS_CHILD, 20,112,60,50,hwnd,0,hinstance,0);
          	CreateWindowEx(WS_EX_CLIENTEDGE,WC_LISTVIEW, &quot;&quot;, WS_VISIBLE | WS_CHILD | LVS_REPORT, 20,200,350,150,hwnd,(HMENU)LB_LIST,hinstance,0);         	

           	list.mask = LVCF_TEXT | LVCF_WIDTH;
          	list.pszText = &quot;Latein&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),0,&amp;list);
           	list.mask = LVCF_TEXT | LVCF_WIDTH;
          	list.pszText = &quot;Deutsch&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),1,&amp;list);
           	list.pszText = &quot;Zusatz&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),2,&amp;list);

            EnumChildWindows(hwnd, EnumChildProc, 0);            
			break;
   		case WM_COMMAND:
     		switch(LOWORD(wParam))
       		{
       			case BT_HINZUFUGEN:
       				VOKABEL_DATEN voktemp;

          			GetDlgItemText(hwnd, EDIT_LATEIN, xy1, 100);
             		GetDlgItemText(hwnd, EDIT_DEUTSCH, xy2, 100);  
          			GetDlgItemText(hwnd, EDIT_ZUSATZ, xy3, 100);
             		LV_ITEM lvI;        
            		int    iSubItem;

		            strcpy(test.xy1, xy1);
		            strcpy(test.xy2, xy2);
		            strcpy(test.xy3, xy3);

		            strcpy(voktemp.heimatsprache, xy1);
		            strcpy(voktemp.fremdsprache, xy2);
		            strcpy(voktemp.bemmerkungen, xy3);

		            vok_daten.push_back(voktemp);

		            iSubItem++;

		            lvI.mask    = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
		            lvI.state    = 0;      
		            lvI.stateMask    = 0;  
		            lvI.iItem    = iSubItem;
		            lvI.iSubItem    = 0;
		            lvI.pszText    = LPSTR_TEXTCALLBACK;
		            lvI.cchTextMax    = MAX_PATH;
		            lvI.lParam    = (LPARAM)&amp;test;

		            ListView_InsertItem(GetDlgItem(hwnd, LB_LIST), &amp;lvI);
          			break;
              	case BT_ABBRECHEN:
   					DestroyWindow(hwnd);
   					break;
        		case BT_SPEICHERN:
        			char filename[255];
        			SpeichernFenster(filename, hwnd, &quot;Vokabeldatei speichern&quot;);
        			WriteFile(filename, vok_daten);		        			
        			break;			
	         	}
	          	break;
       	case WM_NOTIFY:       		
  			switch(wParam)
			{
		    case LB_LIST:
		    	{
   					LV_DISPINFO *pLvdi = (LV_DISPINFO *)lParam;
           			TEST *pTest = (TEST*)(pLvdi-&gt;item.lParam);
			        switch(pLvdi-&gt;hdr.code)
			        {
			        	case LVN_GETDISPINFO:
			        		switch(pLvdi-&gt;item.iSubItem)
			        		{
		                    	case 0:  
		                    		pLvdi-&gt;item.pszText = pTest-&gt;xy1;		                                
	                    			break;
                    			case 1:  
                    				pLvdi-&gt;item.pszText = pTest-&gt;xy2;                                          
                    				break;
                				case 2:  
                					pLvdi-&gt;item.pszText = pTest-&gt;xy3;                                          
                					break;
                    			default:
                    				break;
        					}
        					break;
		              }		              
	              }
	              break;
              default:
              	return DefWindowProc(hwnd, message, wParam, lParam);
              	break;
		    };
   			break;

		default:
  			return DefWindowProc (hwnd, message, wParam, lParam);
     		break;			
	}	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/97041/neuzeichnen-der-quot-explorer-details-quot-liste-funzt-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:19:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/97041.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Jan 2005 23:43:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Neuzeichnen der &amp;quot;Explorer-Details&amp;quot; Liste funzt nicht on Thu, 06 Jan 2005 23:46:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe in einem Programm eine spezielle Art der Liste benutzt, die im Explorer zum anzeigen von Details benutzt wird. Das Problem ist immer wenn das komplette Fenster neu gezeichnet werden muss oder die breite einer Spalte verändert wird, werden alle bisherigen Einträge mit dem letzten überschrieben. Allerdings ist es problemlos möglich neue Einträge hinzuzufügen.</p>
<p>z.B.</p>
<p>1 | 1 | 1 3 | 3 | 3<br />
2 | 2 | 2 --&gt; 3 | 3 | 3<br />
3 | 3 | 3 3 | 3 | 3</p>
<p>Hier der Code, es kann sein das einige deklarationen von Variabeln fehlen, er ist aber im ganzen kompelierbar:</p>
<pre><code class="language-cpp">//Message Handler:
static HINSTANCE hinstance = (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE);
	static char xy1[100], xy2[100], xy3[100];
	static int iSubItem = 0;
	static deque&lt;VOKABEL_DATEN&gt; vok_daten;
	static LVCOLUMN list;
	LVITEM item;
	INITCOMMONCONTROLSEX icex; 
	TEST text = {&quot;xy&quot;, &quot;xy&quot;, &quot;xy&quot;};
	switch(message)
	{
		case WM_CREATE:
  			icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
          	icex.dwICC  = ICC_LISTVIEW_CLASSES;
          	InitCommonControlsEx(&amp;icex);

			CreateWindow(&quot;button&quot;, &quot;Speichern&quot;, WS_VISIBLE | WS_CHILD, 270,360,100,40,hwnd,(HMENU) BT_SPEICHERN,hinstance,0);
			CreateWindow(&quot;button&quot;, &quot;Abbrechen&quot;, WS_VISIBLE | WS_CHILD, 20,360,100,40,hwnd,(HMENU) BT_ABBRECHEN,hinstance,0);
			CreateWindow(&quot;button&quot;, &quot;Hinzufügen&quot;, WS_VISIBLE | WS_CHILD, 280,70,100,40,hwnd,(HMENU) BT_HINZUFUGEN,hinstance,0);
			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,50,170,20,hwnd,(HMENU) EDIT_LATEIN,hinstance,0);
			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,80,170,20,hwnd,(HMENU) EDIT_DEUTSCH,hinstance,0);
   			CreateWindowEx(WS_EX_CLIENTEDGE, &quot;edit&quot;, &quot;&quot;, WS_VISIBLE | WS_CHILD, 80,110,170,20,hwnd,(HMENU) EDIT_ZUSATZ,hinstance,0);
      		CreateWindow(&quot;static&quot;, &quot;Latein:&quot;, WS_VISIBLE | WS_CHILD, 20,52,60,50,hwnd,0,hinstance,0);
        	CreateWindow(&quot;static&quot;, &quot;Deutsch:&quot;, WS_VISIBLE | WS_CHILD, 20,82,60,50,hwnd,0,hinstance,0);
         	CreateWindow(&quot;static&quot;, &quot;Zusatz:&quot;, WS_VISIBLE | WS_CHILD, 20,112,60,50,hwnd,0,hinstance,0);
          	CreateWindowEx(WS_EX_CLIENTEDGE,WC_LISTVIEW, &quot;&quot;, WS_VISIBLE | WS_CHILD | LVS_REPORT, 20,200,350,150,hwnd,(HMENU)LB_LIST,hinstance,0);         	

           	list.mask = LVCF_TEXT | LVCF_WIDTH;
          	list.pszText = &quot;Latein&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),0,&amp;list);
           	list.mask = LVCF_TEXT | LVCF_WIDTH;
          	list.pszText = &quot;Deutsch&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),1,&amp;list);
           	list.pszText = &quot;Zusatz&quot;;
          	list.cx = 100;
           	ListView_InsertColumn(GetDlgItem(hwnd,LB_LIST),2,&amp;list);

            EnumChildWindows(hwnd, EnumChildProc, 0);            
			break;
   		case WM_COMMAND:
     		switch(LOWORD(wParam))
       		{
       			case BT_HINZUFUGEN:
       				VOKABEL_DATEN voktemp;

          			GetDlgItemText(hwnd, EDIT_LATEIN, xy1, 100);
             		GetDlgItemText(hwnd, EDIT_DEUTSCH, xy2, 100);  
          			GetDlgItemText(hwnd, EDIT_ZUSATZ, xy3, 100);
             		LV_ITEM lvI;        
            		int    iSubItem;

		            strcpy(test.xy1, xy1);
		            strcpy(test.xy2, xy2);
		            strcpy(test.xy3, xy3);

		            strcpy(voktemp.heimatsprache, xy1);
		            strcpy(voktemp.fremdsprache, xy2);
		            strcpy(voktemp.bemmerkungen, xy3);

		            vok_daten.push_back(voktemp);

		            iSubItem++;

		            lvI.mask    = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
		            lvI.state    = 0;      
		            lvI.stateMask    = 0;  
		            lvI.iItem    = iSubItem;
		            lvI.iSubItem    = 0;
		            lvI.pszText    = LPSTR_TEXTCALLBACK;
		            lvI.cchTextMax    = MAX_PATH;
		            lvI.lParam    = (LPARAM)&amp;test;

		            ListView_InsertItem(GetDlgItem(hwnd, LB_LIST), &amp;lvI);
          			break;
              	case BT_ABBRECHEN:
   					DestroyWindow(hwnd);
   					break;
        		case BT_SPEICHERN:
        			char filename[255];
        			SpeichernFenster(filename, hwnd, &quot;Vokabeldatei speichern&quot;);
        			WriteFile(filename, vok_daten);		        			
        			break;			
	         	}
	          	break;
       	case WM_NOTIFY:       		
  			switch(wParam)
			{
		    case LB_LIST:
		    	{
   					LV_DISPINFO *pLvdi = (LV_DISPINFO *)lParam;
           			TEST *pTest = (TEST*)(pLvdi-&gt;item.lParam);
			        switch(pLvdi-&gt;hdr.code)
			        {
			        	case LVN_GETDISPINFO:
			        		switch(pLvdi-&gt;item.iSubItem)
			        		{
		                    	case 0:  
		                    		pLvdi-&gt;item.pszText = pTest-&gt;xy1;		                                
	                    			break;
                    			case 1:  
                    				pLvdi-&gt;item.pszText = pTest-&gt;xy2;                                          
                    				break;
                				case 2:  
                					pLvdi-&gt;item.pszText = pTest-&gt;xy3;                                          
                					break;
                    			default:
                    				break;
        					}
        					break;
		              }		              
	              }
	              break;
              default:
              	return DefWindowProc(hwnd, message, wParam, lParam);
              	break;
		    };
   			break;

		default:
  			return DefWindowProc (hwnd, message, wParam, lParam);
     		break;			
	}	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/689266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689266</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Thu, 06 Jan 2005 23:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to Neuzeichnen der &amp;quot;Explorer-Details&amp;quot; Liste funzt nicht on Fri, 07 Jan 2005 11:31:34 GMT]]></title><description><![CDATA[<p>Wenn ihr irgendwas an der Frage nicht versteht dann müsst ihrs sagen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/689532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/689532</guid><dc:creator><![CDATA[flammenvogel]]></dc:creator><pubDate>Fri, 07 Jan 2005 11:31:34 GMT</pubDate></item></channel></rss>