<?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[Desktop switchen]]></title><description><![CDATA[<p>Hi!<br />
Mit folgendem Source versuche ich mein Desktop zu switchen:</p>
<pre><code class="language-cpp">CWnd *pWnd = CWnd::FindWindow(&quot;Progman&quot;, &quot;Program Manager&quot;); 

if(!pWnd)
return;

CWnd* pChild = pWnd-&gt;GetWindow(GW_CHILD);
HWND hWnd;
pChild-&gt;GetDlgItem(0x1, &amp;hWnd);
ASSERT(IsWindow(hWnd));
CWnd* pCtrl = (CWnd*)CWnd::FromHandle(hWnd);
((CListCtrl*)pCtrl)-&gt;DeleteAllItems();

LPITEMIDLIST id;
static char path[1024];
SHGetSpecialFolderLocation(hWnd,CSIDL_DESKTOPDIRECTORY ,&amp;id);
SHGetPathFromIDList(id,path);

CString strDesk;
strDesk = _T(path);
strDesk += &quot;\\*.*&quot;;
CFileFind finder;
BOOL bWorking = finder.FindFile(strDesk);

while (bWorking) {
bWorking = finder.FindNextFile();
((CListCtrl*)pCtrl)-&gt;InsertItem(0,(LPCTSTR)finder.GetFileName(),0); 
}
</code></pre>
<p>Warum geht das nicht? InsretItem liefert manchmal (!!) nen reda access error <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Danke&amp;mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/46997/desktop-switchen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 07:56:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/46997.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Aug 2003 12:54:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Desktop switchen on Mon, 25 Aug 2003 12:54:29 GMT]]></title><description><![CDATA[<p>Hi!<br />
Mit folgendem Source versuche ich mein Desktop zu switchen:</p>
<pre><code class="language-cpp">CWnd *pWnd = CWnd::FindWindow(&quot;Progman&quot;, &quot;Program Manager&quot;); 

if(!pWnd)
return;

CWnd* pChild = pWnd-&gt;GetWindow(GW_CHILD);
HWND hWnd;
pChild-&gt;GetDlgItem(0x1, &amp;hWnd);
ASSERT(IsWindow(hWnd));
CWnd* pCtrl = (CWnd*)CWnd::FromHandle(hWnd);
((CListCtrl*)pCtrl)-&gt;DeleteAllItems();

LPITEMIDLIST id;
static char path[1024];
SHGetSpecialFolderLocation(hWnd,CSIDL_DESKTOPDIRECTORY ,&amp;id);
SHGetPathFromIDList(id,path);

CString strDesk;
strDesk = _T(path);
strDesk += &quot;\\*.*&quot;;
CFileFind finder;
BOOL bWorking = finder.FindFile(strDesk);

while (bWorking) {
bWorking = finder.FindNextFile();
((CListCtrl*)pCtrl)-&gt;InsertItem(0,(LPCTSTR)finder.GetFileName(),0); 
}
</code></pre>
<p>Warum geht das nicht? InsretItem liefert manchmal (!!) nen reda access error <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Danke&amp;mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/340095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/340095</guid><dc:creator><![CDATA[mike84]]></dc:creator><pubDate>Mon, 25 Aug 2003 12:54:29 GMT</pubDate></item><item><title><![CDATA[Reply to Desktop switchen on Mon, 25 Aug 2003 19:50:27 GMT]]></title><description><![CDATA[<p>Hallo ! <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="🙂"
    /><br />
die tatsache das der fehler &quot;manchmal&quot; kommt und lässt meiner meinung nach auf ein zugriffsproblem von zwei oder mehreren threads schließen ... Hast du mehrere Threads am laufen die auf das Control zugreifen ?<br />
wenn ja dann machs bitte so dan klappts auch mit den nachbarn <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="😃"
    /></p>
<pre><code class="language-cpp">CCriticalSection cs; 
// cs muss von allen threads erreichbar sein !!!!!
function(){
  cs.Lock(); 
    //Aktionen mit der Listbox 
  cs.Unlock();
}
</code></pre>
<p>Aber vorsicht trifft ein thread auf cs.Lock(); und ein anderer thread war &quot;vor ihm da&quot; und hat noch nicht Unlock() passiert wird der nachfolgende thread solange schlafen gelegt bis der andere zum Ende (Unlock) gekommen ist...<br />
Es gibt auch noch andere möglichkeiten um Zugriffsprobleme bei mehreren threads zu beseitigen aber ich hab mich mit denen noch nicht so wirklich befasst weil das oben für meine belange eigentlich immer gereicht hat <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="😃"
    /></p>
<p>wenn du nicht mehrere threads benutzt was bei solchen aktionen ratsam wäre <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="😉"
    /><br />
würd ich mir mal die datei angucken bei der er ärger macht {irgendwo dran musses ja liegen}<br />
mfg tRiG4</p>
]]></description><link>https://www.c-plusplus.net/forum/post/340404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/340404</guid><dc:creator><![CDATA[Trigger_Hurt]]></dc:creator><pubDate>Mon, 25 Aug 2003 19:50:27 GMT</pubDate></item></channel></rss>