<?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[Sprechblase von TrayIcon]]></title><description><![CDATA[<p>Hallo,</p>
<p>Habe nach der Anleitung <a href="http://www.swissdelphicenter.ch/torry/showcode.php?id=1164" rel="nofollow">http://www.swissdelphicenter.ch/torry/showcode.php?id=1164</a><br />
versucht meinem TrayIcon ein Ballon Tip verpassen. Habe jetzt schon folgenden Code:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#define _WIN32_IE 0x0600
#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;Unit1.h&quot;
#include &lt;Commctrl.h&gt;
#include &lt;ShellApi.h&gt;
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))

//---------------------------------------------------------------------------
#pragma package(smart_init)

#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
NOTIFYICONDATA IconData = {0};
IconData.cbSize = sizeof(IconData);
IconData.uFlags = NIF_INFO;
IconData.hWnd = TrayIcon1-&gt;Handle;
IconData.uTimeout = 15000; // in milliseconds
strcpy (IconData.szInfoTitle, &quot;Titel&quot;);
strcpy (IconData.szInfo, &quot;Text&quot;);
IconData.dwInfoFlags=NIIF_INFO;
Shell_NotifyIcon(NIM_MODIFY, &amp;IconData);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Nur irgendwie will das noch nicht so richtig funktionieren. Ich bekomme keinen Fehler beim Kopmpilieren. Wenn ich auf den Button drücke, passiert allerdings auch nichts <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="😞"
    /> Sieht vielleicht jemand wo der Fehler liegt.</p>
<p>Danke und Gruß</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113955/sprechblase-von-trayicon</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 13:45:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113955.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jun 2005 17:45:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sprechblase von TrayIcon on Tue, 28 Jun 2005 17:49:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Habe nach der Anleitung <a href="http://www.swissdelphicenter.ch/torry/showcode.php?id=1164" rel="nofollow">http://www.swissdelphicenter.ch/torry/showcode.php?id=1164</a><br />
versucht meinem TrayIcon ein Ballon Tip verpassen. Habe jetzt schon folgenden Code:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#define _WIN32_IE 0x0600
#include &lt;vcl.h&gt;
#pragma hdrstop
#include &quot;Unit1.h&quot;
#include &lt;Commctrl.h&gt;
#include &lt;ShellApi.h&gt;
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))

//---------------------------------------------------------------------------
#pragma package(smart_init)

#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
NOTIFYICONDATA IconData = {0};
IconData.cbSize = sizeof(IconData);
IconData.uFlags = NIF_INFO;
IconData.hWnd = TrayIcon1-&gt;Handle;
IconData.uTimeout = 15000; // in milliseconds
strcpy (IconData.szInfoTitle, &quot;Titel&quot;);
strcpy (IconData.szInfo, &quot;Text&quot;);
IconData.dwInfoFlags=NIIF_INFO;
Shell_NotifyIcon(NIM_MODIFY, &amp;IconData);
}
//---------------------------------------------------------------------------
</code></pre>
<p>Nur irgendwie will das noch nicht so richtig funktionieren. Ich bekomme keinen Fehler beim Kopmpilieren. Wenn ich auf den Button drücke, passiert allerdings auch nichts <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="😞"
    /> Sieht vielleicht jemand wo der Fehler liegt.</p>
<p>Danke und Gruß</p>
<p>Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819235</guid><dc:creator><![CDATA[ping_of_death]]></dc:creator><pubDate>Tue, 28 Jun 2005 17:49:15 GMT</pubDate></item><item><title><![CDATA[Reply to Sprechblase von TrayIcon on Wed, 29 Jun 2005 06:23:25 GMT]]></title><description><![CDATA[<p>irgendwie sieht das beispiel bei mir ganz anders aus. Vlei solltest du mal den Rest des Codes auch mit hinschreiben?!</p>
<p>P.S. Probiere doch selber mal ein wenig und komm nicht immer gleich mit: Geht nicht, Laeuft nicht, Macht nichts, usw.. Glaubst Du uns fliegt das alles zu? Nein, wir müssen uns auch erst damit beschäftigen und es ausprobieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819453</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 29 Jun 2005 06:23:25 GMT</pubDate></item><item><title><![CDATA[Reply to Sprechblase von TrayIcon on Wed, 29 Jun 2005 08:43:27 GMT]]></title><description><![CDATA[<p>so um mal wieder zum eigentlichen problem zurück zu kommen, hier mal ne übersetzte version, ich will ja schliesslich auch zu den guten gehören. <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>header-Sektion:</p>
<pre><code class="language-cpp">NOTIFYICONDATA IconData;

void __fastcall DeleteSysTrayIcon();
void __fastcall ShowBalloonTips();
void __fastcall AddSysTrayIcon();
void __fastcall SysTrayIconMsgHandler(TMessage &amp;Msg);

void __fastcall Restore();
void __fastcall Minimize();
void __fastcall WndProc(TMessage &amp;Message);
</code></pre>
<p>cpp-Sektion;</p>
<pre><code class="language-cpp">// ganz oben ins file (allererste zeile)
// -&gt; wird benötigt, damit alle Strukturvariablen bekannt sind, die hier
//    Verwendung finden
#define _WIN32_IE 0x0600

//---------------------------------------------------------------------------
// Fensterfunktion hier kommen alle Botschaften an
//---------------------------------------------------------------------------
void __fastcall TForm1::WndProc(TMessage &amp;Message)
{
  inherited::WndProc(Message);

  // auswerten von Minimieren und Wiederherstellen
  if (Message.Msg == WM_SYSCOMMAND)
  {
    if (Message.WParam == SC_MINIMIZE) Minimize();
    if (Message.WParam == SC_RESTORE)  Restore();
  }
}

//---------------------------------------------------------------------------
// Funktion stellt das Fenster wieder her
//---------------------------------------------------------------------------
void __fastcall TForm1::Restore()
{
  // TrayIcon ausblenden
  DeleteSysTrayIcon();

  // Fenster wieder in Taskleiste anzeigen
  Application-&gt;Restore();
  ShowWindow(Application-&gt;Handle, SW_RESTORE);
  SetForegroundWindow(Application-&gt;Handle);
}

//---------------------------------------------------------------------------
// Funktion minimiert das Fenster
//---------------------------------------------------------------------------
void __fastcall TForm1::Minimize()
{
  // Fenster aus Taskleiste verbannen
  Application-&gt;Minimize();
  ShowWindow(Application-&gt;Handle, SW_HIDE);

  // TrayIcon anlegen und anzeigen
  AddSysTrayIcon();
  ShowBalloonTips();
}

// Botschaft-Message fuer das TrayIcon
#define  TRAYICON_CALLBACK_MESSAGE  (WM_USER + 29272);

//---------------------------------------------------------------------------
// Callback-Funktion fuer das TrayIcon
//---------------------------------------------------------------------------
void __fastcall TForm1::SysTrayIconMsgHandler(TMessage &amp;Msg)
{
  switch (Msg.LParam)
  {
    // beim Klick mit der Maus auf das Icon, das Fenster wiederherstellen
    // denkbar wäre das auch bei LBUTTONDBLCLK
    case WM_LBUTTONDOWN       : Restore(); break;

    // hier kann noch irgendwas gemacht werden
    case WM_MOUSEMOVE         : 
    case WM_LBUTTONUP         :
    case WM_LBUTTONDBLCLK     :
    case WM_RBUTTONDOWN       :
    case WM_RBUTTONUP         :
    case WM_RBUTTONDBLCLK     :

    case NIN_BALLOONSHOW      :
    case NIN_BALLOONHIDE      :
    case NIN_BALLOONTIMEOUT   :
    case NIN_BALLOONUSERCLICK : break;
  }
}

//---------------------------------------------------------------------------
// Funktion initialisiert das TrayIcon an
//---------------------------------------------------------------------------
void __fastcall TForm1::AddSysTrayIcon()
{
  IconData.cbSize           = sizeof(NOTIFYICONDATA);
  IconData.hWnd             = AllocateHWnd(SysTrayIconMsgHandler);
  IconData.uID              = 0;
  IconData.uFlags           = NIF_ICON | NIF_MESSAGE | NIF_TIP;
  IconData.uCallbackMessage = TRAYICON_CALLBACK_MESSAGE;
  IconData.hIcon            = Application-&gt;Icon-&gt;Handle;

  strcpy(IconData.szTip,  &quot;Standard-Tip, wenn Maus über Icon&quot;);

  // Icon in Statusbereich einfuegen
  if (!Shell_NotifyIcon(NIM_ADD, &amp;IconData))
    ShowMessage(&quot;Failed&quot;);
}

//---------------------------------------------------------------------------
// Funktion zeigt das TrayIcon an
//---------------------------------------------------------------------------
void __fastcall TForm1::ShowBalloonTips()
{
  AnsiString TipInfo  = &quot;Programm arbeitet jetzt im Hintergrund&quot;;
  AnsiString TipTitle = &quot;Programmname&quot;;

  strncpy(IconData.szInfo,      TipInfo.c_str(),  sizeof(IconData.szInfo)      - 1);
  strncpy(IconData.szInfoTitle, TipTitle.c_str(), sizeof(IconData.szInfoTitle) - 1);

  // laut MSDN muss der TimeOut zwischen 10 und 30 Sekunden liegen
  IconData.cbSize           = sizeof(NOTIFYICONDATA);
  IconData.uFlags           = NIF_INFO;
  IconData.uTimeout         = 10000;
  IconData.dwInfoFlags      = NIIF_INFO;  //NIIF_ERROR;  //NIIF_WARNING;

  // Icon anpassen
  Shell_NotifyIcon(NIM_MODIFY, &amp;IconData);

//  IconData.uVersion = NOTIFYICON_VERSION;

  // Win2000-Verhalten verwenden
//  if (!Shell_NotifyIcon(NIM_SETVERSION, &amp;IconData))
//    ShowMessage(&quot;Failed&quot;);
}

//---------------------------------------------------------------------------
// Funktion entfernt das TrayIcon
//---------------------------------------------------------------------------
void __fastcall TForm1::DeleteSysTrayIcon()
{
  DeallocateHWnd(IconData.hWnd);

  // Icon aus Statusbereich entfernen
  if (!Shell_NotifyIcon(NIM_DELETE, &amp;IconData))
    ShowMessage(&quot;Failed&quot;);
}
</code></pre>
<p>viel spass</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819536</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 29 Jun 2005 08:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Sprechblase von TrayIcon on Wed, 29 Jun 2005 09:48:44 GMT]]></title><description><![CDATA[<p>aehm <strong>#include &lt;shellapi.h&gt;</strong> fehlt natürlich noch</p>
<p>am besten definiert ihr <strong>NOTIFYICONDATA IconData;</strong> global in der cpp und nicht im header. bei mir snd sonst alle member-variablen der form immer 0 auch wenn sie gerade initialisiert wurden... seltsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819587</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 29 Jun 2005 09:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Sprechblase von TrayIcon on Wed, 29 Jun 2005 18:57:54 GMT]]></title><description><![CDATA[<p>Müll entfernt.</p>
<p>Kritik an vermeintlich unfreundlichen Antworten ist kontraproduktiv und allenfalls per Mail an den Betreffenden zu richten.<br />
Weitere Offtopic-Beiträge werden kommentarlos gelöscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820053</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 29 Jun 2005 18:57:54 GMT</pubDate></item></channel></rss>