Привет. У меня работают 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;
}
...