Visual C et Icone de la barre des tache - Programmation
Marsh Posté le 16-03-2002 à 19:39:09
chrisbk a écrit a écrit : regarde dans la msdn au rayon " Shell_NotifyIcon " |
merci
Marsh Posté le 23-03-2002 à 20:32:16
J'ai toujours 1 probleme !!!!
J'arrive a avoir l'icone mais je ne comprend pas comment le rendre reactif au click de souris
Marsh Posté le 23-03-2002 à 20:47:17
il y a différentes étapes pour faire ceci, c'est assez chaud et rigoureux :
1 - créer un message personnalisé : définir un message perso au début de ton prog, du style
#define WM_TRAYMESSAGE (WM_USER + 101)
2 - lors de l'appel à Shell_NotifyIcon, initialiser le champ uCallbackMessage de la structure NOTIFYICONDATA avec ce message :
m_ni.uCallbackMessage = WM_TRAYMESSAGE;
m_ni est une structure NOTIFYICONDATA
3 - créer un gestionnaire d'évènements pour ce message, par le ClassWizard de VC++. par exemple, pour faire apparaitre un menu sous la souris :
LRESULT CTestDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
// Bouton droit -> on affiche le menu
// Double clic -> on affiche la fenêtre
CMenu menu;
CPoint pt;
if (lParam == WM_RBUTTONDOWN) { // bouton droit
menu.LoadMenu(IDR_MENU1);
CMenu *m = menu.GetSubMenu(0);
GetCursorPos(&pt);
m->SetDefaultItem(0, TRUE);
::SetForegroundWindow(m_hWnd);
m->TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
pt.x,
pt.y,
this);
::PostMessage(m_hWnd, WM_NULL, 0, 0);
} else if (lParam == WM_LBUTTONDBLCLK) { // double clic
ShowWindow(SW_SHOWNORMAL);
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
SetActiveWindow();
}
return 0;
}
Absolument rien de compliqué dans cette fonction, voir le MSDN si tu ne comprends pas certains trucs.
Cette fonction doit toujours retourner LRESULT, car il s'agit d'un callback
Pour une explication plus détaillée, cf MSDN
A+
Marsh Posté le 16-03-2002 à 19:21:39
On fait comment pour mettre 1 icone sur la barre des taches(a droite) et qu'il soit reactif au click de souris ???