Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по WinAPI Tray / 2 сообщений из 2, страница 1 из 1
06.01.2007, 12:48
    #34239245
XYLIGAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WinAPI Tray
Куда помещать определение и создание иконки трея, если главное окно загружается как диалог из ресурсов (то есть не используется CreateWindow и не происходит события WM_CREATE).

Пробовал засунуть в WM_INITDIALOG. Все бы хорошо, НО при завершении работы процесса Explorer.exe и при его запуске иконка не появляется, т.е.
1. иконка в трее есть
2. вызываем Диспетчер задач -> Завершить процесс Explorer.exe
3. там же Файл\Новая задача (Выполнить...) Explorer.exe
4. в трее иконка моей проги не появляется.
Как это решить? Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
NOTIFYICONDATA nid;
HICON hIcon;

INT_PTR APIENTRY MainProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{ //Создаём окно расписанное в Res.rc
  int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(ID_MAINDIALOG),NULL,(DLGPROC)MainProc) ;
  return ret;
}
//---------------------------------------------------------------------------
INT_PTR APIENTRY MainProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch (msg){
    case WM_INITDIALOG:
            hIcon = LoadIcon(GetModuleHandle(NULL), "MYICON");
            nid.cbSize = sizeof(nid);
            nid.hWnd = hwnd;            
            nid.hIcon = hIcon;
            lstrcpyn(nid.szTip, "Пример трея", sizeof(nid.szTip)/sizeof(nid.szTip[ 0 ]));
            nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
            Shell_NotifyIcon(NIM_ADD, &nid);
            break ;
    case WM_CLOSE:
            Shell_NotifyIcon(NIM_DELETE, &nid);
            EndDialog(hwnd,  0 );
            break;
  }
  return FALSE ;
}
...
Рейтинг: 0 / 0
09.01.2007, 11:21
    #34242236
XYLIGAN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WinAPI Tray
Разобрался. Вот так работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
case WM_INITDIALOG:
  UINT s_uTaskbarRestart = RegisterWindowMessage("TaskbarCreated");
  //.........
  break;

default: 
  if(msg == s_uTaskbarRestart)  
     AddTaskbarIcon(hTrayIcon);
}
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопрос по WinAPI Tray / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]