Часто не появляются иконки...
От: demidov2  
Дата: 13.03.07 07:30
Оценка:
Привет. У меня работают 3 моих программы, все в автозапуске в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run). Очень часто у какой-нибудь одной не появляется иконка в трее, хотя программа запускается и работает. Видно в процессах. Система XP SP2. В чем может быть ошибка?
//глобальные
#define WM_TRAYNOTIFY  (WM_USER + 101)
NOTIFYICONDATA nf;

//в оконной процедуре
case WM_INITDIALOG:
{
    //здесь много чего создается вперемешку
    hStatusBar = CreateStatusWindow(...);
    hListFont = CreateFont(...);
    hCachePopupMenu = CreatePopupMenu();
    hMsgWnd = CreateDialog(...);
    ...
    
    nf.cbSize = sizeof(NOTIFYICONDATA);
    nf.hWnd = hWnd;
    nf.uID = NULL;
    nf.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
    nf.uCallbackMessage = WM_TRAYNOTIFY;
    nf.hIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_SMALL), IMAGE_ICON, 16, 16, 0);
    lstrcpyn(nf.szTip, szAppName, 128);
    Shell_NotifyIcon(NIM_ADD, &nf);
    ...
    return TRUE;
}
...
или
...
case WM_CREATE:
{
    //здесь много чего создается вперемешку
    InitCommonControls(); 
    hToolBar = CreateWindowEx(...);
    hStatusBar = CreateStatusWindow(...);
    ...

    nf.cbSize = sizeof(NOTIFYICONDATA);
    nf.hWnd = hWnd;
    nf.uID = IDC_TRAYICON;
    nf.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
    nf.uCallbackMessage = WM_TRAYNOTIFY;
    nf.hIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_SMALL), IMAGE_ICON, 16, 16, 0);
    lstrcpyn(nf.szTip, szAppName, 128);
    Shell_NotifyIcon(NIM_ADD, &nf);
    ...
    
    break;
}
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.