Solved How to make menus pop up in a certain distance of the mouse?

I know how to use the method below to create a popup menu:

c4d.gui.ShowPopupDialog(cd, bc, x, y, flags=POPUP_RIGHT|POPUP_EXECUTECOMMANDS)
(x (int) – Popup X position in screen pixels, or c4d.MOUSEPOS to popup where the cursor is.
y (int) – Popup Y position in screen pixels, or c4d.MOUSEPOS to popup where the cursor is.)

I want the menu to popup at a position like this:x=c4d.mousepos+200,y=c4d.mousepos+200

but it do not work. is there a way?

thank you very much!

Hi @milkliu first of all welcome in the plugincafe.

I would like to point you to Q&A New Functionality.

While your idea is correct to add 200, c4d.mousepos is actually a constant and not a real value. So if you want to offset the position you have to first, retrieve the position with GetInputState.

import c4d

def main():
    IDM_MENU1 = c4d.FIRST_POPUP_ID
    IDM_MENU2 = c4d.FIRST_POPUP_ID+1
        
    menu = c4d.BaseContainer()
    menu.InsData(IDM_MENU1, 'Item 1')
    menu.InsData(IDM_MENU2, 'Item 2')

    state = c4d.BaseContainer()
    c4d.gui.GetInputState(c4d.BFM_INPUT_MOUSE, c4d.BFM_INPUT_MOUSELEFT, state)
    x = state.GetInt32(c4d.BFM_INPUT_X) + 200
    y = state.GetInt32(c4d.BFM_INPUT_Y) + 200

    result = c4d.gui.ShowPopupDialog(cd=None, bc=menu, x=x, y=y)

# Execute main()
if __name__=='__main__':
    main()

If you have any question, please let me know.
Cheers,
Maxime.

@m_adam wow!
I did what you say,it works!!
you are so cool!!
thank you very much!!!
yeah!!