Menü bei Rechtsklick auf TrayIcon



  • Hallo,

    wie der Titel schon sagt:

    Wie kann ich meinem TrayIcon ein Menü zuordnen,
    das aufgeht, sobald ich z.B. mit Rechts darauf klicke ?



  • Ist ein bißchen Handarbeit, aber im Prinzip nicht sonderlich schwer 😉

    In der Struktur, in der du das Tray-Icon definierst, gibst du erst einmal eine Message an, die das Icon auslöst:
    trayIcon.uCallbackMessage = TRAY_ICON_MESSAGE;

    Dann bei der Message-Map folgendes Makro hinzufügen:
    ON_MESSAGE(TRAY_ICON_MESSAGE, OnTrayIcon)

    und schließlich noch eine Funktion OnTrayIcon wie hier in die Klasse aufnehmen:

    long CMainDialog::OnTrayIcon(WPARAM ID, LPARAM event) {
        CMenu  *menu = ???;
        CPoint  mausPos;
    
        switch(event) {
            case WM_RBUTTONDOWN:
                GetCursorPos(&mausPos);
                menu->TrackPopupMenu(TPM_RIGHTALIGN|TPM_RIGHTBUTTON, mausPos.x, mausPos.y, this);
                break;
    
        default:
            break; }
    
        return 0; }
    

    Vielleicht gehts auch einfacher, so klappts jedenfalls 🙂



  • Hi,

    danke für deine Hilfe !

    Ich habe es zwischenzeitlich bereits so gelöst:

    case WM_RBUTTONDOWN: 
                {// The user clicked the right mouse button. 
                    // Let's give them a menu so they can start/stop    
                    // the animation.    
                    CMenu oMenu; 
    
                    if (oMenu.LoadMenu(IDR_MENU1))         
                    { 
                        CMenu* pPopup = oMenu.GetSubMenu(0); 
    		   ASSERT(pPopup != NULL); 
    		   CPoint oPoint; 
                        // Figure out where the mouse is so we 
                        // can display the menu near it. 
                        GetCursorPos(&oPoint); 
                        SetForegroundWindow(); 
                        pPopup->TrackPopupMenu( 
                            TPM_LEFTALIGN | TPM_RIGHTBUTTON, 
                            oPoint.x, oPoint.y, this); 
    
                    }
    

    Es wird dann auch das Menü angezeigt 👍 nur wie kann ich
    jetzt einen 2ten Menüstrang darunter/rüber setzen ?
    menü1->slide1 // juhu das geht super 😋
    menü2->slide1menü2 // das hier muss noch irgendwie zeitgleich rein



  • Und noch eine Frage.

    Wie kann ich in dem Menü noch kleine Bilder
    einfügen ? So wie z.B. bei GetRight.



  • Kann mir niemand sagen wie ich da Icons in mein
    Menü bekomme 😕



  • Das Menü musst du selber pinseln wenn es Menüs mit Icons mittlerweile nicht schon in den MFC gibt.





  • na dann is wohl nix mit ebenmal so 'n icon ranhängen...


Anmelden zum Antworten