Posted By: Jerry_III (Jerry III) on 'CZprogram'
Title:     Program co se min. do traye
Date:      Tue Jun 23 18:20:54 1998

O.K. tady to je:

Prvne vytvorime ikonu (ja to delam v OnCreate hlavniho okna):

// Put icon in the tray area
NOTIFYICONDATA nid;
HICON hIcon;
CString str;

nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = GetSafeHwnd();
nid.uID = ID_TRAY_ICON_ID;
nid.uCallbackMessage = ID_TRAY_ICON;
hIcon = AfxGetApp()->LoadIcon(AFX_IDI_STD_FRAME);
nid.hIcon = hIcon;
GetWindowText(str);
strcpy(nid.szTip, str);
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &nid);    // Taky je dobry kontrolovat vracenou
                                    // hodnotu, kdyby se to nepovedlo

Iconu (resp. jeji handle) samozrejme zrusit nemuzete, to musite udelat az 
potom, co ji zrusite v trayi.

Potom ve funkci, ktera odchytava zpravu ID_TRAY_ICON udelate nasledujici:


LONG CMainWnd::OnTrayIcon(UINT nIcon, LONG nMsg)
{
    switch( nIcon )
    {
        case ID_TRAY_ICON_ID:
            switch( nMsg )
            {
                case WM_LBUTTONDBLCLK:  // Show window
                {
                    if( IsWindowVisible() )
                        ShowWindow(SW_HIDE);
                    else
                        ShowWindow(SW_SHOW);
                        SetForegroundWindow();
                }
                break;
            }
    }

    return 0;
}

Tak to je vse :-)

          Jerry III

http://members.xoom.com/JerryIII
E-mail: jerryiii@sprynet.com
ICQ: 8990712

Search the boards