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 ::


Anmelden zum Antworten