Popup Menue zu weit links

  • Popup Menue zu weit links

    Hi Leutz,

    ich hab ne Frage bzgl. Popups, ich hab eine Form mit nem Menü bei rechtsklick wird ein Popup angezeigt wenn ich so mach direct über dem MausCursor wie mans gewöhnt ist :

    Quellcode

    1. void CKontextmenueDlg::OnContextMenu(CWnd* pWnd, CPoint point)
    2. {
    3. CMenu *m_lMenu = NULL; // Zeiger vom Typ Menü erstellen
    4. m_lMenu = GetMenu(); // Zeiger auf Fenstermenü holen
    5. m_lMenu = m_lMenu->GetSubMenu(0); // Zeiger auf erstes Untermenü holen
    6. m_lMenu->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON,point.x, point.y, this, NULL); // Popup-Menü anzeigen
    7. }


    Wenn ich aber erreichen möchte dass je nach dem wo ich hinklicke ein anderes Menü erscheint, werden die 2 versch. Popups viel zu weit links angezeigt, ich habs in OnButtonDown gemacht :

    Quellcode

    1. void CDLG_MenueDlg::OnRButtonDown(UINT nFlags, CPoint point)
    2. {
    3. CMenu *pMenu = NULL;
    4. pMenu = GetMenu ();
    5. if (point.x < 218)
    6. {
    7. pMenu = pMenu->GetSubMenu(0); // Zeiger auf erstes Untermenü holen
    8. pMenu->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON, point.x, point.y, this, NULL); // Popup-Menü anzeigen
    9. }
    10. else if (point.x > 218)
    11. {
    12. pMenu = pMenu->GetSubMenu(1); // Zeiger auf zweites Untermenü holen
    13. pMenu->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON, point.x, point.y, this, NULL); // Popup-Menü anzeigen
    14. }
    15. }
    Alles anzeigen


    Wisst ihr was ich falsch mache und wies richtig geht ?

    regards
    ShadowEater
  • So klappts:

    Quellcode

    1. void CDLG_MenueDlg::OnContextMenu(CWnd* pWnd, CPoint point)
    2. {
    3. CMenu *pMenu = NULL;
    4. pMenu = GetMenu ();
    5. ScreenToClient (&point); // Von Screen in Clientkoordinaten umrechnen
    6. if (point.x < 218)
    7. {
    8. ClientToScreen (&point); // Von Client in Screenkoordinaten umrechnen
    9. pMenu = pMenu->GetSubMenu(0); // Zeiger auf erstes Untermenü holen
    10. pMenu->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON, point.x, point.y, this, NULL); // Popup-Menü anzeigen
    11. }
    12. else if (point.x > 218)
    13. {
    14. ClientToScreen (&point); // Von Client in Screenkoordinaten umrechnen
    15. pMenu = pMenu->GetSubMenu(1); // Zeiger auf zweites Untermenü holen
    16. pMenu->TrackPopupMenu(TPM_CENTERALIGN|TPM_LEFTBUTTON, point.x, point.y, this, NULL); // Popup-Menü anzeigen
    17. }
    18. }
    Alles anzeigen


    regards
    ShadowEater