Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

Menu contextuel sur un graphe 2D

Je souhaiterai utiliser un menu contextuel ( Bt droit de la souris) au dessus d'un graphe 2D pour changer de mode de fonctionnement( zoom, curseurs,déplacement)
dans le fichier joint je détecte l'event Mouse down j'affiche un menu contextuel ( x, y n'ont pas les bonnes valeurs ???) chaque item de ce menu change le mode par appel à set trackmode. Probléme apres cet appel la fonction zoom ne fonctionne plus .
Le graphe semble ne plus generer d'events.
merci pour votre attention.
0 Kudos
Message 1 of 3
(3,375 Views)
Bonjour,

les coordonnées x et y sont relatives au graphe. Vous pouvez modifier votre code comme ci dessous pour afficher votre popup à la position du curseur de souris.

void CSimpleGraphDlg::OnMouseDownCwgraph(short Button, short Shift, long x, long y) //jlr
{
// test du mode choisi.
CWnd *p =GetDlgItem(IDC_TRACKMODE);

int i= m_graph.GetTrackMode();
CString tm;
tm.Format("Track mode %d",i);
p->SetWindowText(tm);

//Bt droit
if(Button==2)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu * pmnu = menu.GetSubMenu(0);

// si l'on appelle le menu contextuel on constate qu'il est positionné
// en dehors du graphe, en outre il menu bloque tous les
// events du graphe.

RECT graph_rect;
m_graph.GetWindowRect(&graph_rect);


int popup_x = x + graph_rect.left;
int popup_y = y + graph_rect.top;

pmnu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, popup_x, popup_y, this);
pmnu->DestroyMenu();
}
}

Cordialement

Salissou ISSA
Ingénieur d'applications
National Instruments France
0 Kudos
Message 2 of 3
(3,375 Views)
Merci pour votre réponse, mais elle ne résoud qu'une partie du probleme le positionnement du menu.
Lorsque le changement de mode est fait par l'un des items du menu, le graphe ne genere plus d'evennements.
les fonctions associée à ces menus ne font que changer trackmode que faire pour y remedier
Cordialement
0 Kudos
Message 3 of 3
(3,375 Views)