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