Recentemente ho riscontrato un problema simile. Piuttosto che hackerare il back-end, ho implementato un work-around, che utilizza BalloonTipText, che può ospitare un bel po 'di personaggi.
La descrizione comando viene visualizzata sul primo evento MouseMove sopra l'icona del vassoio e il suggerimento viene visualizzato per 2 secondi. Dopo che il suggerimento è stato chiuso, può essere riaperto nuovamente da un nuovo evento MouseMove.
L'unico svantaggio di questa soluzione è che non è possibile chiudere il palloncino in modo programmatico, quando un utente, ad esempio, lascia l'area dell'icona, quindi scompare solo dopo un timeout o se l'utente fa clic sul piccolo X- pulsante.
Si noti che il titolo e il testo possono essere impostati in qualsiasi momento altrove nel programma. Sono ambientati qui nell'evento a solo scopo dimostrativo.
EDIT:ShowBalloonTip()
incendi Oltre a cascata MouseMove
eventi, quindi è necessario disattivare questo evento fino al momento in cui il suggerimento palloncino è nascosto. Inoltre, BalloonTipClosed
è (secondo the documentation) attivato solo quando l'utente fa clic attivamente su "X", anche se ho notato che è stato attivato quando il suggerimento è stato chiuso dopo un timeout. Ho quindi aggiunto un timer di supporto per ripristinare lo stato, invece di fare affidamento sull'evento BalloonTipClosed
. Il codice rivisto e testato è qui sotto:
private bool balloonTipShown;
private Timer balloonTimer;
private void trayIcon_MouseMove(object sender, MouseEventArgs e)
{
if (balloonTipShown)
{
return;
}
balloonTipShown = true;
trayIcon.MouseMove -= trayIcon_MouseMove;
balloonTimer = new Timer();
balloonTimer.Tick += balloonTimer_Tick;
balloonTimer.Interval = 2005;
balloonTimer.Start();
trayIcon.ShowBalloonTip(2000);
}
void balloonTimer_Tick(object sender, EventArgs e)
{
balloonTipShown = false;
balloonTimer.Stop();
balloonTimer.Dispose();
trayIcon.MouseMove += trayIcon_MouseMove;
}
EDIT 2: Uno screenshot di un suggerimento palloncino con un bel po 'di testo, che utilizza questa soluzione può essere seen in by blog.
Qualsiasi hack per C++? –
Nessuna modifica necessaria, devi solo impostare correttamente la macro WINVER in modo che il compilatore sappia che hai almeno il targeting per Windows 2000. –
Scusa, voglio superare la limitazione simile in 'szInfoTitle', che imposta il titolo per un popup a fumetto . C'è una soluzione anche per questo? –