Systray-Problem was mach ich falsch ?



  • Hallo an alle,

    ich habe die FAQ zum Thema Systray schon zum xxten mal durchgearbeitet
    und stehe vor einem schier unlösbarem Problem 😞

    Ich kann das Programm zwar starten und auf den Button klicken, der
    mein Prog im Systray ablegen soll(geschieht auch), aber dann geschieht übles!

    Ich erhalte folgende Fehler:

    1. Debug Assertion failed File: winocc.cpp Line 301
    dort steht dann

    {
        ASSERT(::IsWindow(m_hWnd));
    
        if (m_pCtrlSite == NULL)
            return ::ShowWindow(m_hWnd, nCmdShow);
        else
            return m_pCtrlSite->ShowWindow(nCmdShow);
    }
    

    Das bezieht sich doch auf ein Fenster, welches ich nicht beeinflussen kann, oder muß ich noch irgendwo in meinem Source eine Verknüpfung einbauen?

    2.bei Details (in der Fehlermeldung die Windows ausgibt)
    steht folgendes:

    SYSTRAY verursachte einen Ausnahmefehler 03H in Modul MFC42D.DLL bei 017f:5f436c8e.

    Wobei SYSTRAY natürlich der Name von meinem Prog ist.

    Ok, evtl bringt es nicht viel das hier zu posten...aber in meiner Verzweiflung
    erdreiste ich mich mal 😡

    Ich würd mich schon über nen laufenden Source freuen, den ich studieren kann.
    Hat evtl. jemand einen Link ?

    Chris



  • Laufender Source :

    #define WM_NOTIFICATION (WM_APP+100)
    
    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,ausgabe,sizeof(tnd.szTip));
    Shell_NotifyIcon(NIM_ADD,&tnd);
    ShowWindow(SW_HIDE);
    
    //und wiederherstellen
    
    LRESULT CProggDlg::OnTrayNotification(WPARAM wp, LPARAM lp)
    {
        switch (lp)
        {
        case WM_LBUTTONDOWN:
            {
            KillTimer(1);
            ShowWindow(SW_SHOW);
            NOTIFYICONDATA iconData;
            iconData.cbSize = sizeof(NOTIFYICONDATA);
            iconData.hWnd = this->GetSafeHwnd();
            iconData.uID = 1;
            return Shell_NotifyIcon(NIM_DELETE,&iconData);
            }
        }
        return 0;
    }
    

    sonst schonmal debugged??


Anmelden zum Antworten