C ++ MFC как отправить заявку в трей

я написал небольшое приложение, которое делает некоторые операции в фоновом режиме.

потому что это не требует внимания пользователя, я хочу отправить приложение в системный трей, и когда кто-то нажимает на него, окно должно снова всплыть.

проблема в том, что я написал MFC-программу (диалог), которая делает все, что я хочу. И теперь мне нужно найти способ отправить его в трей.

тип: MFC (диалоговое окно)
Язык: C ++
IDE: Visual Studio 2012

у тебя есть идеи как я могу это сделать? или вы знаете хороший учебник или функцию / классы, которые мне нужны?

Я уже искал на codeprojects.com и Google, но, кажется, не так много об этом.
Благодарю.

РЕДАКТИРОВАТЬ 1:

Я попробовал что-то вроде этого:

HWND hMainWindow = this->GetSafeHwnd();
HICON hProgramIcon = this->GetIcon(false);
char szTip[16] = "Tracker";
nidTrayIcon.cbSize = sizeof(nidTrayIcon);
nidTrayIcon.hIcon = hProgramIcon;
nidTrayIcon.hWnd = hMainWindow;
nidTrayIcon.uCallbackMessage = (WM_USER + 1);
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nidTrayIcon.uID = 0x0200;
strcpy_s((char*)nidTrayIcon.szTip,16, szTip2);
nidTrayIcon.szTip[strlen(szTip)] = '\0';
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon);

Если я запускаю этот код, мое приложение закрывается с кодом «0x03» (путь не найден …)

РЕДАКТИРОВАТЬ 2:

this->ShowWindow(SW_HIDE);

тоже не работает. та же проблема.

2

Решение

Вы ищете класс NotifyIcon:
http://msdn.microsoft.com/en-gb/library/system.windows.forms.notifyicon.aspx

и вот учебник:
http://alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/

Тем не менее, просто добавление вашего приложения в системный трей — действительно плохая идея пользовательского интерфейса. Раньше он был очень популярен в течение 95/98 дней, и Microsoft любезно предоставила пример рабочего кода, который все копировали и вставляли. Вскоре в наших системных лотках плавали рыба и глаза. И лоток становился все более полным и, следовательно, совершенно бесполезным.

Если ваше приложение делает что-то, что не требует внимания пользователя, сделайте это сервисом или просто позвольте пользователю свернуть диалоговое окно на панель задач и отобразить в нем индикатор выполнения. Таким образом, наведя курсор на значок панели задач, пользователь сможет проверить прогресс.

Используйте систему, старайтесь показывать полезные уведомления. Добавляйте значок только в том случае, если значок будет отображать действия системного уровня, которые могут повлиять на текущую работу пользователей (например, подключение к сети). В противном случае, не загромождайте мой системный трей. Я не хочу отводить взгляд от работы, которая требует моего внимания (вы сказали, что ваш нет), чтобы посмотреть на прыгающего кролика в моем системном трее.

1

Другие решения

Прочитайте это тоже: http://www.codeproject.com/Articles/810/System-Tray-Icons-Minimize-Your-Application-to-the

Попробуйте сами ..

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector