Callback Message vom Tray-Icon



  • hallo, ich erstelle mir mein tray-icon so:

    HICON Icon;
    	Icon=LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
    
    	// TrayIcon
        nidTrayIcon.cbSize = sizeof(nidTrayIcon);
    	nidTrayIcon.hIcon = Icon; //Exemplarisch 
        nidTrayIcon.hWnd = hWnd; //Exemplarisch, HWND des Fensters an dessen MessageLoop die Nachricht geschickt werden soll
        //nidTrayIcon.uCallbackMessage = (WM_USER + 1); //Exemplarisch
        nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; //Exemplarisch
        nidTrayIcon.uID = 1; //Exemplarisch
    	nidTrayIcon.uCallbackMessage = 23;
    
        strcpy(nidTrayIcon.szTip, "Look");
    
        Shell_NotifyIcon(NIM_ADD,&nidTrayIcon);
    

    wie kann ich nun die "CallbackMessage" abfangen? welches ereignis
    muss ich im Klassenassistenten einfügen??

    danke euch



  • du hst doch das ereignis so festgelegt:

    nidTrayIcon.uCallbackMessage = 23;
    

    dann must du auch darauf reagieren.

    machs lieber sauber, und definier dir eine message, z.B.:

    #define TRAY_NOTIFICATION WM_APP + 0x100
    

    das trägst du in deine messagemap ein und reagierst darauf



  • ja ok die "23" war auch erstmal testweise!

    aber ich bin neu und weis jetzt garnet wo ich diese
    Message abfangen muss :-| also welche Methode ich mit dem Klassenassistenten
    hinzufügen muss!!

    danke



  • also irgendwie OnTrayMessage() oder sowas?



  • ON_MESSAGE



  • In deiner Klasse einmal folgendes hinzufügen:

    protected:
        LRESULT OnTrayMessage(WPARAM /*wParam*/, LPARAM /*lParam*/);
        // ..
    

    Dann in der Messagemap:

    // ...
        ON_MESSAGE(TRAY_NOTIFICATION, OnTrayMessage)
    END_MESSAGE_MAP()
    

    Und noch die Funktionsimplementierung...

    LRESULT C...::OnTrayMessage(WPARAM /*wParam*/, LPARAM /*lParam*/)
    {
    }
    


  • @(D)Evil

    hmm also ich habe alles gemacht aber es kommt keine message an!

    hier die Message hinzugefügt:

    BEGIN_MESSAGE_MAP(CBTro_LookDlg, CDialog)
    	//{{AFX_MSG_MAP(CBTro_LookDlg)
    	ON_WM_SYSCOMMAND()
    	ON_WM_PAINT()
    	ON_WM_QUERYDRAGICON()
    	ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
    	ON_WM_SIZE()
    	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
    	ON_COMMAND(ID_MAIN_SENDCOMMAND, OnMainSendcommand)
    	ON_COMMAND(ID_MAIN_CONNECT, OnMainConnect)
    	ON_COMMAND(ID_MAIN_CONNECTTOIP, OnMainConnecttoip)
    	ON_COMMAND(ID_MAIN_UPDATE, OnMainUpdate)
    	ON_MESSAGE(23, OnTrayMessage)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    

    in der Header-Datei:

    LRESULT OnTrayMessage(WPARAM wParam, LPARAM lParam);
    

    in der Cpp:

    LRESULT CBTro_LookDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
    {
    	MessageBox("Lol","lol");
    
    	return TRUE;
    }
    

    aber es kommt halt GARKEINE Message an wenn ich (egal wie^^) aufs
    Icon klicke!!

    warum? :-|



    #define WM_TRAY_NOTIFI WM_APP + 0x100
    
    LRESULT CBTro_LookDlg::OnTrayMessage(WPARAM /*wParam*/, LPARAM /*lParam*/)
    {
        MessageBox("TrayIcon notification", "Message", MB_OK | MB_ICONINFORMATION);
    
        return S_OK;
    }
    

    An sonnsten sollte das so gehen...



  • ne das klappt nicht! ich bin am verzweiflen ich bekomm garkeine Message
    vom icon 😕

    @(D)Evil
    habe die sachen geändert aber es klappt nicht!

    woran kann das liegen?



  • Moin,

    zieh Dir dass mal rein: 🤡

    http://homepages.tu-darmstadt.de/~guentner/prog_sni#einf

    Grüsse



  • wow sieht sehr vielversprechend aus 🙂

    danke schonmal, werd ich mir wenn ich zuhaus bin ansehen!!

    danke



  • Tjo... das es nicht klappt liegt rel. warscheinlich an Wuestkamp... evt. hat er nicht den Code den ich gegeben hab richtig eingefügt... in deinem Tut steht das selbe -.-


Anmelden zum Antworten