<?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[TrayIcon verschwindet bei &amp;quot;hover&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Programm geschrieben, das durch einen ButtonKlick in die SystemTray/Notification Area minimiert werden soll.<br />
Das anzeigen der Icons sowie das verstecken des Hauptfensters klappt.</p>
<p>Mein Problem ist allerdings, dass beim &quot;mouseover&quot;/&quot;hover&quot; - oder wie auch immer man das jetzt genau nennt - das Icon sofort verschwindet.<br />
(Einmal hat er mir wenigstens kurz den ProgrammTitel (nicht szTip) angezeigt.</p>
<p>Nachdem das Programm eigentlich durch doppelklick bzw. rechtsklick -&gt; Menu wieder sichtbar gemacht werden soll, ist es natürlich schlecht, das das Icon verschwindet. Der Process (Taskmanager) bleibt bestehen. Und wenn ich das Programm mehrfach starte (es wird in InitInstance nur eine Instanz zugelassen) kommt es auch wieder zum vorschein.</p>
<p>Die Frage ist, ob vielleicht jemand einen Tip hat, wo der Fehler liegen könnte. Ich habe schon länger gegoogelt, und dabei bin ich auf einen Eintrag gestossen, der schrieb, das das Icon verschwindet, wenn das Window-Handle in der NID-structure nicht richtig gesetzt ist. Welches WindowHandle brauch ich denn da bei einer SDI-Anwendung?</p>
<p>Zum Code:<br />
Das Programm ist auf SDI mit Doc/View mittels MS Visual Studio 2005 aufgebaut.<br />
Das initialisieren des Icons:</p>
<pre><code>nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd = ;
nid.uID = IDI_ICON1;
nid.dwInfoFlags = 0;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = MSG_ICONNOTIFY;
_tcscpy_s(nid.szTip,64,&quot;Zum Beenden doppelklicken\0&quot;);
nid.hIcon = LoadIcon(IDI_ICON1);
</code></pre>
<p>Das anzeigen des TrayIcon/Programmfensters in des App.cpp</p>
<pre><code>ToTrayAndBack()
{
	if (IsVisible){
		m_pMainWnd-&gt;ShowWindow(SW_HIDE);
		m_pMainWnd-&gt;UpdateWindow();
		Shell_NotifyIcon(NIM_ADD, &amp;nid);
		IsVisible = !IsVisible;
	} else {
		m_pMainWnd-&gt;ShowWindow(SW_SHOW);
		m_pMainWnd-&gt;UpdateWindow();
		Shell_NotifyIcon(NIM_DELETE, &amp;nid);
		IsVisible = !IsVisible;
	}
}
</code></pre>
<p>Die CALLBACK-Funktion für das MessageHandling steht in MainFrame.cpp, wird allerdings nie aufgerufen, bzw. das Icon verschwindet bevor ich klicken kann...</p>
<p>Vielen Dank schonmal für jede Hilfe und jeden Ratschlag,<br />
Grüße Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195244/trayicon-verschwindet-bei-quot-hover-quot</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 20:23:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195244.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Oct 2007 18:54:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TrayIcon verschwindet bei &amp;quot;hover&amp;quot; on Mon, 15 Oct 2007 18:54:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Programm geschrieben, das durch einen ButtonKlick in die SystemTray/Notification Area minimiert werden soll.<br />
Das anzeigen der Icons sowie das verstecken des Hauptfensters klappt.</p>
<p>Mein Problem ist allerdings, dass beim &quot;mouseover&quot;/&quot;hover&quot; - oder wie auch immer man das jetzt genau nennt - das Icon sofort verschwindet.<br />
(Einmal hat er mir wenigstens kurz den ProgrammTitel (nicht szTip) angezeigt.</p>
<p>Nachdem das Programm eigentlich durch doppelklick bzw. rechtsklick -&gt; Menu wieder sichtbar gemacht werden soll, ist es natürlich schlecht, das das Icon verschwindet. Der Process (Taskmanager) bleibt bestehen. Und wenn ich das Programm mehrfach starte (es wird in InitInstance nur eine Instanz zugelassen) kommt es auch wieder zum vorschein.</p>
<p>Die Frage ist, ob vielleicht jemand einen Tip hat, wo der Fehler liegen könnte. Ich habe schon länger gegoogelt, und dabei bin ich auf einen Eintrag gestossen, der schrieb, das das Icon verschwindet, wenn das Window-Handle in der NID-structure nicht richtig gesetzt ist. Welches WindowHandle brauch ich denn da bei einer SDI-Anwendung?</p>
<p>Zum Code:<br />
Das Programm ist auf SDI mit Doc/View mittels MS Visual Studio 2005 aufgebaut.<br />
Das initialisieren des Icons:</p>
<pre><code>nid.cbSize=sizeof(NOTIFYICONDATA);
nid.hWnd = ;
nid.uID = IDI_ICON1;
nid.dwInfoFlags = 0;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = MSG_ICONNOTIFY;
_tcscpy_s(nid.szTip,64,&quot;Zum Beenden doppelklicken\0&quot;);
nid.hIcon = LoadIcon(IDI_ICON1);
</code></pre>
<p>Das anzeigen des TrayIcon/Programmfensters in des App.cpp</p>
<pre><code>ToTrayAndBack()
{
	if (IsVisible){
		m_pMainWnd-&gt;ShowWindow(SW_HIDE);
		m_pMainWnd-&gt;UpdateWindow();
		Shell_NotifyIcon(NIM_ADD, &amp;nid);
		IsVisible = !IsVisible;
	} else {
		m_pMainWnd-&gt;ShowWindow(SW_SHOW);
		m_pMainWnd-&gt;UpdateWindow();
		Shell_NotifyIcon(NIM_DELETE, &amp;nid);
		IsVisible = !IsVisible;
	}
}
</code></pre>
<p>Die CALLBACK-Funktion für das MessageHandling steht in MainFrame.cpp, wird allerdings nie aufgerufen, bzw. das Icon verschwindet bevor ich klicken kann...</p>
<p>Vielen Dank schonmal für jede Hilfe und jeden Ratschlag,<br />
Grüße Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1385885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1385885</guid><dc:creator><![CDATA[webermichl]]></dc:creator><pubDate>Mon, 15 Oct 2007 18:54:00 GMT</pubDate></item><item><title><![CDATA[Reply to TrayIcon verschwindet bei &amp;quot;hover&amp;quot; on Tue, 16 Oct 2007 06:59:42 GMT]]></title><description><![CDATA[<p>IMHO das Handle Deines Main Windows. (also Dein CMainFRame)<br />
Schau doch in den Code bei <a href="http://www.codeproject.com" rel="nofollow">www.codeproject.com</a><br />
<a href="http://www.codeproject.com/shell/systemtray.asp" rel="nofollow">http://www.codeproject.com/shell/systemtray.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386067</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 16 Oct 2007 06:59:42 GMT</pubDate></item></channel></rss>