Problem Kontextmenü: Verbinden mit Dialogelementen



  • Hi Leute,

    ich bekomme immer nur ein leeres Kontextmenü bei rechtsklick. Habe herrausgefunden das er mir als Rückgabewert von SetMenu(..) eine 0 zurückgibt was bedeutet:(wörtlich)

    BOOL SetMenu( CMenu* pMenu );

    Return Value

    Nonzero if the menu is changed; otherwise 0.

    Also ich bastle gerade an einer Dialoganwendung, dort habe ich mehrere CListCtrl Objekte eingefügt, denen will ich nun ein und dasselbe Kontextmenü zuweisen. Natürlich hab ich auch eine Menüresource erstellt sowie eine Membervariable vom typ CMenu. Das zuweisen von der resource in die membervariable macht er ja noch, laut rückgabewert. Aber das verbinden mit meinen CListCtrl nicht. 😕

    //zu Dialogklasse
    public:
        CMenu m_mContext;
    
    //...
    
    BOOL CPlanerTestDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
        //-
        m_mContext.LoadMenu(IDR_CONTEXT); 
        GetDlgItem(IDC_LIST1)->SetMenu(&m_mContext);
        GetDlgItem(IDC_LIST2)->SetMenu(&m_mContext);
        GetDlgItem(IDC_LIST3)->SetMenu(&m_mContext);
        //.......
        //-
        return TRUE;  
    }
    
    //...
    
    void CPlanerTestDlg::OnContextMenu(CWnd* pWnd, CPoint point) 
    {
    m_mContext.TrackPopupMenu(TPM_RIGHTBUTTON+TPM_RIGHTALIGN,point.x,point.y,this);
    }
    

    Ich hoffe mir kann einer helfen. Ich danke euch im Vorraus.

    MfG RobRoy



  • m_mContext.**GetSubMenu(0)->**TrackPopupMenu(TPM_RIGHTBUTTON+TPM_RIGHTALIGN,point.x,point.y,this);

    SetMenu kannst du weglassen.



  • Hi,

    ich hab das mal probiert, er compiliert es auch anstandslos auch kann ich das programm starten, aber beim rechtsklick gibt er mir eine fehlermeldung aus.
    'Der Befehl read konnte nicht auf Speicher ...blablabla... angewendet werden' oder so ähnlich. Wie vorgeschlagen hab ich den Befehl SetMenu() aus dem Programm entfernt.
    Help plz 🙄
    RobRoy


Anmelden zum Antworten