Visual C et Icone de la barre des tache

Visual C et Icone de la barre des tache - Programmation

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 ???

Reply

Marsh Posté le 16-03-2002 à 19:21:39   

Reply

Marsh Posté le 16-03-2002 à 19:37:04    

regarde dans la msdn au rayon " Shell_NotifyIcon "

Reply

Marsh Posté le 16-03-2002 à 19:39:09    

chrisbk a écrit a écrit :

regarde dans la msdn au rayon " Shell_NotifyIcon "  




merci :)

Reply

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

Reply

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+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed