[MFC] Menu contextuel sur ListBox

Menu contextuel sur ListBox [MFC] - Programmation

Marsh Posté le 01-02-2002 à 17:39:15    

Salut,
je n'arrive pas à afficher un menu quand je clique droit sur une ListBox. Le problème c'est pas d'afficher le menu ni d'intercepter le RMouseDown mais c'est de savoir si le curseur est au dessus de la liste ! Comment faire ?
merci
  ANT

Reply

Marsh Posté le 01-02-2002 à 17:39:15   

Reply

Marsh Posté le 01-02-2002 à 17:57:54    

Dans ton OnRMouseButtonDown
 
CRect rect;
m_Listbox.GetClientRect(rect);
 
if (rect.PtInRect(point) == 0) {
   TRACE ("rclick not on the listbox\n" );
}
else {
   TRACE ("rclick on the listbox\n" );
}
 
point etant un des 2 param du WM_RMOUSBUTTONDOWN

 

[edtdd]--Message édité par VisualC++--[/edtdd]


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 01-02-2002 à 22:05:31    

cherche l'evenement OnContextMenu ...
dans la class wizard..

Reply

Marsh Posté le 02-02-2002 à 11:22:58    

merci je vais essayer ça

Reply

Marsh Posté le 02-02-2002 à 11:59:54    

Ca marche pas !
void CGServerDlg::OnRButtonDown(UINT nFlags, CPoint point)  
{
 CRect rect;
 m_clients.GetClientRect(rect);
 
 if (rect.PtInRect(point) == 0)
  MessageBeep(MB_OK); //ca marche
 else
  MessageBox("salut" ); //ça marche pas !
 
 CDialog::OnRButtonDown(nFlags, point);
}
 
il détecte bien si la souris est au dessus de la liste mais si elle y est il fait pas l'instruction, à croire que le message WM_RBUTTONDOWN n'est pas envoyé !

Reply

Marsh Posté le 03-02-2002 à 10:46:40    

up !  :bounce:

Reply

Marsh Posté le 03-02-2002 à 12:15:13    

Salut,
desole ca donne plutot ca (car l event MOUSEDOWN est envoye mais a ta listbox, faudrait l intercepter a son niveau mais faut utiliser une classe derivee pour ce faire ou alors la creer mais dynamiquement) donc comme l a dit la viper, tu peux^via le oncontextmenu (mais c est en screen coordinates les valeurs)
 
void CMyDlg::OnContextMenu(CWnd* pWnd, CPoint point)  
{
 CRect rect;
 m_ListBox.GetWindowRect(rect);
 
 if (rect.PtInRect(point) == 0) {
  TRACE ("rclick not on the listbox\n" );
 }
 else {
  TRACE ("rclick on the listbox\n" );
 }  
}

 

[edtdd]--Message édité par VisualC++--[/edtdd]


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Sujets relatifs:

Leave a Replay

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