System - wie bekomme ich ein progamm in die tray?



  • ich kann ich es schaffen das ein programm nur noch in der tray und nicht mehr in der taskbar angezeigt wird?

    Hast jemand mal nen tip, source, oder nen link? (bitte)



  • Für das TrayIcon

    NOTIFYICONDATA nid; 
        nid.cbSize = sizeof (NOTIFYICONDATA);
        nid.hIcon = m_hIcon;
        nid.hWnd = m_hWnd;
        lstrcpy(m_nid.szTip, "Tooltip-Text");
        nid.uCallbackMessage = WM_USER + 1;
        nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
        nid.uID = 1;
        Shell_NotifyIcon(NIM_ADD /* NIM_DELETE oder NIM_MODIFY */, &m_nid);
    

    In MFC hab ichs auch noch nicht hinbekommen ohne Taskbar-Icon





  • ich hab mir den tread mal angekuckt - interessant und es geht auch, aber:

    LRESULT CDeinProggDlg::OnTrayNotification(WPARAM wp, LPARAM lp)
    {
            switch (lp)
        {
        case WM_LBUTTONDOWN:
            ShowWindow(SW_SHOW);
            NOTIFYICONDATA iconData;
            iconData.cbSize = sizeof(NOTIFYICONDATA);
            iconData.hWnd = this->GetSafeHwnd();
            iconData.uID = 1;
            return Shell_NotifyIcon(NIM_DELETE,&iconData);
        }
        return 0;
    }
    

    wird nicht aufgerufen(bei einem klick)
    und... wie bekomm ich da ein kontextmenü rein?



  • Du musst natürlcih einen Eintrag in die Nachrichtenbehandlungstabelle machen, sonst wird nix aufgerufen...



  • wie und wo?
    (denke mein username sagt warum ich das frage)



  • [Ich hab mir bei meinem letzten Posting überlegt, ob ich mit jemandem eine Wette abschließen soll ob diese Frage kommt.... hätts doch machen sollen]

    Also:
    Irgendwo in der Dlg-Cpp-Datei findest du ziemlich am Anfang die Zeile

    BEGIN_MESSAGE_MAP(CDeinProggDlg, CDialog)
    

    Dahinter kommen, grau eingefärbt, die Nachrichtenbehandlungen.
    Mach da die Zeile

    ON_MESSAGE(WM_NOTIFICATION, OnTrayNotification)
    

    rein. (Ohne Strichpunkt, da Makro!)

    Und weils so schön ist, beantworte ich deine nächste potentielle frage auch noch, mann sollte die OnTrayNotification auch in einem Header definieren...
    Such in der Dlg-h-Datei in der Dialogsklasse nach soetwas wie

    // Generierte Message-Map-Funktionen
    //{{AFX_MSG(CDeinproggDlg)
    

    und schreib dann uz den anderen afx_msgs

    afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);
    

    dazu.

    Fertig...



  • passt images/smiles/icon_smile.gif
    danke, danke, danke, danke, danke, danke, danke, danke, danke, danke, danke, danke UND DANKE!



  • dann mach ich den als ergänzung in die FAQ images/smiles/icon_smile.gif


Anmelden zum Antworten