Mauspositon mit OnRButtonDown
-
Hallo Leute,
kann mir jemand sagen wie ich die momentane Mausposition herausbekomme ??
Möchte in Meinem CTreeView auf einem CTreeCtrl mit der rechten Maus drücken um ein Contextmenü zu erhalten.
Das tut auch, allerdings immer oben links im eck erscheint das Contextmenü.
Hier mein Source:
void CNaviView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard. CMenu menu; // Kontextmenü laden menu.LoadMenu(IDR_MENU1); // Erstes Untermenü CMenu * pContextMenu = menu.GetSubMenu(0); HTREEITEM hSelectedItem = GetTreeCtrl().GetSelectedItem(); CString m_strAuswahl = GetTreeCtrl().GetItemText(hSelectedItem); pContextMenu->TrackPopupMenu(TPM_CENTERALIGN + TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd()); // CTreeView::OnRButtonDown(nFlags, point); }Kann mir jemand weiter helfen ??
Gruß
andy_mann
-
point wird in Client-Koordinaten übergeben,
d.h. relativ zur linken oberen Ecke des CNaviView-Fensters.
TrackPopupMenu() braucht aber Screen-Koordinaten relativ zum gesamten Bildschirm,
weil so ein Popup-Menu auch ausserhalb des Apl-Mainframe erscheinen kann.
Die Client-Koordinaten funktionieren nur zufällig, wenn CNaviView links oben auf dem Bildschirm sitzt.
Also versuch's mal mit[b]ClientToScreen(&point);[/b] pContextMenu->TrackPopupMenu(...);
-
Oh, vielen Dank für die schnelle Anwort,
es hat funktioniert.
Eigentlich sollte ich jetzt aufhören, es hat schon zu lange zu viel und zu gut geklappt..........
Aber man muß ja mal wieder, ein wenig glück haben.......

Gruß und nochmals Danke
andy_mann