wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 6

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» PopupMenu-le menu contextuel s'affiche ou il veut
Conversation (Résolue) : PopupMenu-le menu contextuel s'affiche ou il veut
02-06-2011 21:09:14  PopupMenu-le menu contextuel s'affiche ou il veut #1
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,

Je desire creer un menu contextuel au clic droit de la souris. J'ai donc creer mon wxMenu et j'ai utilise le PopupMenu(menu,x,y) du wxwidget.

le x,y sont obtenu par :
posx=wxGetMousePosition().x;
posy=wxGetMousePosition().y;

Seulement le menu est toujour decalé, il faut que je reajuste par un posx-32 ou posy-40

et cela a chaque mene que j'affiche. Cela est du a quoi?
04-06-2011 16:15:03  Re: PopupMenu-le menu contextuel s'affiche ou il veut #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1387
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Le comportement par défaut (celui que tu obtiens si tu ne spécifies pas les coordonnées d'affichage) fait que le coin supérieur gauche du menu correspond aux coordonnées de la souris.

Si tu demandes l'affichage avec ces coordonnées, tu obtiendras la même chose.

Par contre, il peut se passer le phénomène suivant :
Il faut d'abord savoir que si tu appelles la méthode "PopupMenu" depuis la frame, ses coordonnées seront calculées par rapport à la zone client de la fenêtre.
Imagines maintenant que tu possèdes un contrôle positionné à x=25 et y=5 par rapport à cette zone cliente.
Si l'évènement déclenchant l'appel est géré par ce contrôle, les coordonnées de la variable wxEvent seront relatives à ce contrôle.
If faudra donc les corriger en fonction de la position de ce dernier.

Je ne sais pas si mon explication est suffisamment claire : si ce n'est pas le cas, n'hésites pas à me le dire, je tâcherais de te fournir un exemple significatif.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
05-06-2011 16:45:57  Re: PopupMenu-le menu contextuel s'affiche ou il veut #3
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne
salut, je crois que c'est effectivement claire.
Puisque en effet je crée des popupmenu sur un wxGrid (un clic droit sur une cellule de la grid donne des options), et aussi dans un wxDialog qui apparait suite a un de mes bouton et je dois a chaque fois réajuster le popup.

et chose curieuse, jeles reajuste toujours en diminuant, puisque le popup apparait toujours loin devant et vers le bas, comme si j'augmentait le x et y.

SI je comprend ton explication, je dois chaque fois faire l aframe principal moins, les coordonnée du dialogue ou de la grid dans le dialog, etc.
----------
XAVIOU, ton hypothèse est correct.effectivement, cetai cela le probleme:
A chaque clic droit sur un controle je droit reterir les x et y de tous les contrôle parents, et cela marche bien, le popup s'affiche ua bon endroit.

Si le contrôle est trop imbriqué alors....OUF....
mais c'est pas le cas, c'est juste des boite de dialog et des wxgrid.

Mais ca marche trres bien.

C'est cool Xaviou

Dernière modification par sajaris (06-06-2011 01:06:10)

06-06-2011 11:37:02  Re: PopupMenu-le menu contextuel s'affiche ou il veut #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1387
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Sinon, tu peux essayer sans spécifier les coordonnées d'affichage du menu, normalement, ça fait la même chose.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2011 08:49:39  Re: PopupMenu-le menu contextuel s'affiche ou il veut #5
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Salut,

Moi je fait apparaître le PopupMenu sur wxGrid de la façon suivante:

void wxGridPopupMenuFrm::WxGrid1CellRightClick(wxGridEvent& event)
{
    WxGrid1->SetGridCursor(event.GetRow(),event.GetCol());
    wxWindow::PopupMenu(WxPopupMenu1);
}


http:/www.youtube.com/watch?v=anbh5N-euy8

Dernière modification par ajm (29-07-2011 09:17:58)

09-08-2011 00:16:06  Re: PopupMenu-le menu contextuel s'affiche ou il veut #6
sajaris (Membre)
Inscrit le : 23-11-2010
Messages: 47
Snippets: 0
Tutoriels: 0
Hors ligne
ca pourrai etre une bonne solution je vais l'essayé
05-12-2011 08:42:02  Re: PopupMenu-le menu contextuel s'affiche ou il veut #7
ajm (Membre)
Inscrit le : 16-03-2011
Messages: 82
Snippets: 0
Tutoriels: 0
Hors ligne
Je crois que j'ai trouvé une meilleure solution.

Si on veut par exemple afficher le WxPopupMenu1 dans un WxGrid1, ajoute

WxGrid1->PopupMenu(WxPopupMenu1);

là on n'a pas besoin d'ajouter les coordonnées. J'ai déjà testé cette méthode.
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» PopupMenu-le menu contextuel s'affiche ou il veut