Aktuelle Maus Position
-
Hallo Leute,
kann mir jemand sagen, wie ich die aktuelle Mausposition heraus bekomme ??
Ich möchte in einem Dialog in dem es mehrere CListCtrl gibt mit der rechten Maustaste ein ContexMenü aufrufen.
Aber eben nur in den einzelen Steuerelementen und nicht ausserhalb.
Hat da jemand ne Idee ??
Gruß
und Danke
andy_mann
-
Das müsste so gehen : (Ruf das in der WM_CONTEXTMENU auf)
CWnd* pWnd = GetDlgItem(IDC_LIST1); CRect rect; pWnd->GetClientRect(rect); ScreenToClient(point); if(rect.PtInRect(point)) { //Hier Kontext-Menue aufrufen CMenu menu; menu.LoadMenu(IDR_DEIN_MENUE); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); }
Gruß
:: NoName ::
-
GetCursorPos(..);
Wenn du das in WM_CONTEXTMENU (ShowContextMenu) machst dann hast du sowieso schon durch den CPoint die aktuelle Position gegeben
-
Hallo vielen Dank,
Also dass von NoName, habe ich nicht hin bekommen, dort hat er mir immer die Position oben links angezeigt.
Mit GetCursorPos(..); hats aber dann gefunzt.
Jetzt noch was, für was ist denn eigentlich die if Schleiffe ??
if(rect.PtInRect(point))
Gruß
andy_mann
-
Also das ist keine If-Schleife sondern eine Abfrage. Sie fragt ob die Mausposition (also die CPoint Var) in dem Viereck ist (deswegen die CRect Variable).
was genau zeigt er denn oben links an ? Das Menue ?Gruß
:: NoName ::
-
Sorry, hab ein paar Fehler gemacht ^^
So ist's richtig :
pWnd = GetDlgItem(IDC_LIST1); CRect rect; pWnd->GetWindowRect(rect); if(rect.PtInRect(point)) { //Hier Kontext-Menue aufrufen CMenu menu; menu.LoadMenu(IDR_DEIN_MENUE); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); }
Gruß
:: NoName ::