<?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[Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch...]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich habe folgendes Problem: Ich möchte meine Anwendung so gestalten, dass sie im Hintergrund bleibt, bis der Benutzer auf das Tray-Icon klickt. Aus Eurer FAQ habe ich den Code zum Erzeugen eines Tray-Icons her:</p>
<pre><code class="language-cpp">char szTip[64] = &quot;Matze's Lupe (Linke Maustaste zum Starten)&quot;; 

  nidTrayIcon.cbSize = sizeof(nidTrayIcon); 
  nidTrayIcon.hIcon = (HICON)LoadImage(NULL,&quot;.\\iconLupe16.ico&quot;,IMAGE_ICON,16,16,LR_LOADFROMFILE);
  nidTrayIcon.hWnd = hWnd;
  nidTrayIcon.uCallbackMessage = (WM_USER + 1);
  nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
  nidTrayIcon.uID = 0x0200;
  strcpy(nidTrayIcon.szTip, szTip); 
  nidTrayIcon.szTip[strlen(szTip)] = '\0'; 

  Shell_NotifyIcon(NIM_ADD, &amp;nidTrayIcon);
</code></pre>
<p>Nun habe ich den Effekt, dass das Icon verschwindet, sobald ich den Mauszeiger darüber bewege. Das Programm läuft aber noch (=&gt;TaskMan).</p>
<p>Irgendjemand eine Idee?</p>
<p>Gruß Matze</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188934/icon-im-systemtray-verschwindet-bei-kontakt-mit-dem-cursor-prog-läuft-aber-noch</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 14:40:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188934.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Aug 2007 12:58:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 12:58:31 GMT]]></title><description><![CDATA[<p>Moin!</p>
<p>Ich habe folgendes Problem: Ich möchte meine Anwendung so gestalten, dass sie im Hintergrund bleibt, bis der Benutzer auf das Tray-Icon klickt. Aus Eurer FAQ habe ich den Code zum Erzeugen eines Tray-Icons her:</p>
<pre><code class="language-cpp">char szTip[64] = &quot;Matze's Lupe (Linke Maustaste zum Starten)&quot;; 

  nidTrayIcon.cbSize = sizeof(nidTrayIcon); 
  nidTrayIcon.hIcon = (HICON)LoadImage(NULL,&quot;.\\iconLupe16.ico&quot;,IMAGE_ICON,16,16,LR_LOADFROMFILE);
  nidTrayIcon.hWnd = hWnd;
  nidTrayIcon.uCallbackMessage = (WM_USER + 1);
  nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
  nidTrayIcon.uID = 0x0200;
  strcpy(nidTrayIcon.szTip, szTip); 
  nidTrayIcon.szTip[strlen(szTip)] = '\0'; 

  Shell_NotifyIcon(NIM_ADD, &amp;nidTrayIcon);
</code></pre>
<p>Nun habe ich den Effekt, dass das Icon verschwindet, sobald ich den Mauszeiger darüber bewege. Das Programm läuft aber noch (=&gt;TaskMan).</p>
<p>Irgendjemand eine Idee?</p>
<p>Gruß Matze</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339565</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 06 Aug 2007 12:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 13:06:08 GMT]]></title><description><![CDATA[<p><a href="http://www.winapi.net/index.php?inhalt=s16" rel="nofollow">http://www.winapi.net/index.php?inhalt=s16</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339571</guid><dc:creator><![CDATA[gosha16]]></dc:creator><pubDate>Mon, 06 Aug 2007 13:06:08 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 13:06:38 GMT]]></title><description><![CDATA[<p>versuch mal bei<br />
nidTrayIcon.uID = NULL;<br />
bzw. ein Menu (IDR_MENU) zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339572</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 06 Aug 2007 13:06:38 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 14:17:55 GMT]]></title><description><![CDATA[<p>Danke für die schnellen Antworten!</p>
<p>ID=NULL hat nix gebracht, Menü habe ich nicht probiert. Allerdings hat das Beispiel von <a href="http://winapi.net" rel="nofollow">winapi.net</a> funktioniert, aber nur in einem eigenen Test-Projekt, die Übernahme der Funktionen hat nicht geklappt.</p>
<p>Ich habe dann etwas rumprobiert und habe folgende Lösung gefunden: Die Initialisierung des Tray-Icons darf scheinbar nicht in der WinMain passieren, aus welchem Grund auch immer. Wenn man nämlich den ganzen Code nimmt und in WM_CREATE packt (wie auch im winapi.net-Beispiel), dann klappt es komischerweise.</p>
<p>Ich wäre dankbar, wenn jemand eine plausible Erklärung dafür hätte.</p>
<p>Gruß Matze</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339618</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 06 Aug 2007 14:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 14:19:03 GMT]]></title><description><![CDATA[<p>...also so:</p>
<pre><code class="language-cpp">case (WM_USER+1):   //Nachrichten für das Tray-Icon
      switch(lParam) {
        case WM_MOUSEMOVE:
          return 0;
        case WM_RBUTTONUP:  //Rechtsklick: Programm wird beendet
          SendMessage(hWnd,WM_CLOSE,0,0);
          return 0;
        case WM_LBUTTONUP:
          SetForegroundWindow(hWnd);
          ShowWindow(hWnd,SW_SHOW);
          return 0;
      }
    case WM_CREATE:
    {
      SetCursorPos(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2);
      hideCursor();
      GetCursorPos(&amp;mousePos);
      wsprintf(sTitleBar,&quot;Matze's Lupe (Vergrößerung: %iX)&quot;,(int)iLupeFaktor);
      SetWindowText(hWnd,sTitleBar);

      nidTrayIcon.cbSize = sizeof(NOTIFYICONDATA); 
      nidTrayIcon.hIcon = (HICON)LoadImage(NULL,&quot;.\\iconLupe16.ico&quot;,IMAGE_ICON,16,16,LR_LOADFROMFILE);
      nidTrayIcon.hWnd = hWnd;
      nidTrayIcon.uCallbackMessage = (WM_USER+1);
      nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
      nidTrayIcon.uID = 1;
      strcpy(nidTrayIcon.szTip, szTip); 
      nidTrayIcon.szTip[strlen(szTip)] = '\0'; 
      Shell_NotifyIcon(NIM_ADD, &amp;nidTrayIcon); 

      return 0;
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1339621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339621</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 06 Aug 2007 14:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 14:22:08 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">default:
    // Wurde die Taskleiste zwischendurch neu gestartet?
        if (message == s_uTaskbarRestart)
        Icon_in_Taskleiste (hwnd, TRUE); // Icon in die Taskleiste setzen
        break;
</code></pre>
<p>Ich denke mal daran liegts.<br />
Das das Icon halt immer mal wieder neu gezeichnet werden muss. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Aber andre wissen das bestimmt besser <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1339622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339622</guid><dc:creator><![CDATA[gosha16]]></dc:creator><pubDate>Mon, 06 Aug 2007 14:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 14:27:29 GMT]]></title><description><![CDATA[<p>Das war auch eine meiner vielen Vermutungen, woran's denn liegen könnte, aber nein, das isses nicht. Diesen Code habe ich momentan gar nicht drinnen.</p>
<p>Zum Vergleich meinen Code mit allen relevanten Stellen:</p>
<pre><code class="language-cpp">NOTIFYICONDATA nidTrayIcon;
//
HWND hWnd;  //Fenster-Handle

//--------------------------------------------------------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow) {
//--------------------------------------------------------------------------------------------------------------------------
  MSG msg;    //Struktur für Windows-Nachrichten
  WNDCLASS wc;  //Struktur für den Typ der Fensterklasse
  //
  int iGetMessageRetVal;
  //
  wc.style = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc = WndProc;   //Adresse der Funktion, die die Nachrichtenbehandlung übernehmen soll (Callback-Funktion)
  wc.cbClsExtra = 0;  //zusätzlichen Speicher kann mit diesen Variablen
  wc.cbWndExtra = 0;  //für das Fenster reserviert werden (?)
  wc.lpszClassName = szAppName; //Fensterklassenname, hierüber kann man dann Instanzen der Fensterklasse erzeugen
  wc.lpszMenuName = NULL;
  wc.hInstance = hInstance; //Handle der Programminstanz
  wc.hCursor = LoadCursor(NULL,IDC_ARROW);  //zu verwendender Cursor
//  wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);  //zu verwendendes Icon
  wc.hIcon = (HICON)LoadImage(NULL,&quot;.\\iconLupe16.ico&quot;,IMAGE_ICON,16,16,LR_LOADFROMFILE);
  wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
  //
  RegisterClass(&amp;wc); //die Fensterklasse muss registriert werden, um in CreateWindow() benutzt werden zu können
  //
  //  
  hWnd = CreateWindow(szAppName,&quot;Lupe&quot;,WS_OVERLAPPED,CW_USEDEFAULT,CW_USEDEFAULT,WinSizeX,WinSizeY,NULL,NULL,hInstance,NULL);
  //
  ScreenShotWholeDesktop();
  hbm = (HBITMAP)LoadImage( NULL,
                            &quot;.\\__TMP__SCRNSHOT__2357__.BMP&quot;,
                            IMAGE_BITMAP,
                            0,
                            0,
                            LR_LOADFROMFILE );
  //
  ShowWindow(hWnd,iCmdShow);
  SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  CenterWindow(hWnd);
  UpdateWindow(hWnd);
  ShowWindow(hWnd,SW_HIDE);
  //
  while(iGetMessageRetVal=GetMessage(&amp;msg,NULL,0,0)) {  //2. Parameter muss NULL sein, sonst richten sich die Nachrichten nur an den Thread, nicht ans Fenster
    if(iGetMessageRetVal==-1) { break; }
    TranslateMessage(&amp;msg);
    DispatchMessage(&amp;msg);
    //
  }
  //
  DeleteObject(hbm);  //ScreenShot-Objekt
  DeleteObject(hbmOld);
  Shell_NotifyIcon(NIM_DELETE,&amp;nidTrayIcon);
  //
  return msg.wParam;
}

//--------------------------------------------------------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {
//--------------------------------------------------------------------------------------------------------------------------
  static RECT rect;
  static bool isActive;
  //
  switch(msg) {
    case (WM_USER+1):   // - Nachrichten für das Tray-Icon -
      switch(lParam) {
        case WM_MOUSEMOVE:
          return 0;
        case WM_RBUTTONUP:  //Rechtsklick: Programm wird beendet
          SendMessage(hWnd,WM_CLOSE,0,0);
          return 0;
        case WM_LBUTTONUP:
          ShowWindow(hWnd,SW_SHOW);
          SetForegroundWindow(hWnd);
          return 0;
      }
    case WM_CREATE:
    {
      SetCursorPos(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2);
      hideCursor();
      GetCursorPos(&amp;mousePos);
      wsprintf(sTitleBar,&quot;Matze's Lupe (Vergrößerung: %iX)&quot;,(int)iLupeFaktor);
      SetWindowText(hWnd,sTitleBar);

      nidTrayIcon.cbSize = sizeof(NOTIFYICONDATA); 
      nidTrayIcon.hIcon = (HICON)LoadImage(NULL,&quot;.\\iconLupe16.ico&quot;,IMAGE_ICON,16,16,LR_LOADFROMFILE);
      nidTrayIcon.hWnd = hWnd;
      nidTrayIcon.uCallbackMessage = (WM_USER+1);
      nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
      nidTrayIcon.uID = 1;
      strcpy(nidTrayIcon.szTip, szTip); 
      nidTrayIcon.szTip[strlen(szTip)] = '\0'; 
      Shell_NotifyIcon(NIM_ADD, &amp;nidTrayIcon); 

      return 0;
    }
</code></pre>
<p>Gruß Matze</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339624</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 06 Aug 2007 14:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to Icon im SystemTray verschwindet bei Kontakt mit dem Cursor, Prog läuft aber noch... on Mon, 06 Aug 2007 14:50:08 GMT]]></title><description><![CDATA[<p>ich hab mir auch mal eine classe gebastelt die ein try icon verwaltet, wenn mich nicht alles täuscht bin ich damals auch über den selben stein gestolpert wie du gerade</p>
<p>ich glaube mich zu entsinnen das erst als ich eine membervariable für NOTIFYICONDATA angelegt habe das icon blieb. mit bestimmtheit sagen kann ich es aber nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1339638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339638</guid><dc:creator><![CDATA[LowFly]]></dc:creator><pubDate>Mon, 06 Aug 2007 14:50:08 GMT</pubDate></item></channel></rss>