TrayIcon aus dem Faq



  • Ich möchte diesen Code verwenden um mir einen TrayIcon zu erstellen, nur hab ich jetzt 2 Fragen.

    1. Was ist IDI_MIN in diesem Code
    2. Wo finde ich in meinem MFc /dialogfeld die funktion für das minimize button.

    // CDeinDialog.cpp
    #define WM_NOTIFICATION (WM_APP+100)
    
    BEGIN_MESSAGE_MAP(CDeinDlg, CDialog)
        ON_MESSAGE(WM_NOTIFICATION, OnTrayNotification)
    END_MESSAGE_MAP()
    
    // CDeinDlg.h
    // Generierte Message-Map-Funktionen
    //{{AFX_MSG(CDeinDlg)
    afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);
    //}}AFX_MSG
    dann kommt der aufruf, wo du das Progg minimieren willst also button oder so!
    
    void CDeinDlg::OnMini() 
    {
       NOTIFYICONDATA tnd;
       ZeroMemory(&tnd, sizeof (NOTIFYICONDATA));
       tnd.cbSize = sizeof (NOTIFYICONDATA);
       tnd.hWnd = this ->m_hWnd;
       tnd.uID = 1;
       tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
       tnd.uCallbackMessage = WM_NOTIFICATION;
       tnd.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance,
       MAKEINTRESOURCE(IDI_MIN),IMAGE_ICON,
       16,16,LR_SHARED|LR_DEFAULTCOLOR);
       tnd.szTip[64]='\0';
       lstrcpyn(tnd.szTip,"Proggname",sizeof(tnd.szTip));
       Shell_NotifyIcon(NIM_ADD,&tnd);
       ShowWindow(SW_HIDE);
    }
    so fehlt nur noch, das du das Progg ja auch wieder haben willst (hier beispiel linke maustastendruck):
    
    LRESULT CDeinDlg::OnTrayNotification(WPARAM wp, LPARAM lp)
    {
        switch (lp)
        {
        case WM_LBUTTONUP:
            ShowWindow(SW_SHOW);
            NOTIFYICONDATA iconData;
            iconData.cbSize = sizeof(NOTIFYICONDATA);
            iconData.hWnd = this->GetSafeHwnd();
            iconData.uID = 1;
            return Shell_NotifyIcon(NIM_DELETE,&iconData);
        }
    return 0;
    }
    

    Mfg Skalariak



    1. IDI_MIN ist der Name vom Icon der in der Task dann angezeigt werden soll
    2. Die Message, die man bekommt, ist WM_SYSCOMMAND mit SC_MINIMIZE oder SC_MAXIMIZE als Parameter.


  • Ja, schlagt mich tod und erklärt mich für dumm, aber:

    Wie deklarier ich denn IDI_MIN?



  • Du fügst als Resource ein ICON ein und benennst es so.


Anmelden zum Antworten