Библиотеки: Notify Icon

 

Notify Icon:

Библиотека для создания значков на панели задач Windows и отправки им текстовых уведомлений. Использование данной библиотеки поможет сделать ваши MQL программы более информативными.


Благодаря использованию этой библиотеки каждая MQL программа сможет иметь значок в области уведомления на панели задач Windows. Вы сможете отображать текстовые сообщения, отсылая их из ваших программ, либо использовать значок для индикации определенного состояния программы. Работа библиотеки основана на функции Shell_NotifyIcon. Для удобства создан класс CNotifyIcon, который скрывает детали работы с функциями Windows API и предоставляет простой набор методов для работы с тремя функциональными элементами: значком, окном уведомления и всплывающей подсказкой.

Внешний вид значка и окна уведомления показан на рисунке 1.

Пример значка и окна уведомления

Рис.1. Пример значка и окна уведомления

При наведении курсора мыши на значок всплывает подсказка, пример которой показан на рисунке 2.

Пример всплывающей подсказки

Рис.2. Пример всплывающей подсказки

Библиотека стабильно работает на системах, начиная с Windows 7/Windows Server 2008 R2.

Автор: Andrey Voytenko

 
Сам не смог догадаться, поэтому прошу подсказать, какие сценарии применения видятся полезными?
 
fxsaber:
Сам не смог догадаться, поэтому прошу подсказать, какие сценарии применения видятся полезными?

Альтернатива Алерту и графическим объектам. Любое информирование пользователя.

@Andrey Voytenko, было бы супер добавить обратную связь — открытие источника сообщения по дабл-клику на иконке.

 
Andrey Khatimlianskii:

@Andrey Voytenko, было бы супер добавить обратную связь — открытие источника сообщения по дабл-клику на иконке.

Да, Андрей, было бы хорошо, но MQL не позволяет. Нам нужно реализовать обработчик сообщений в каком нибудь окне. Из MQL создать окно через CreateWindow не получится, там нужна ссылка на коллбэк функцию (недавно придуманный в MQL указатель на функцию не подходит) так что тупик. У нас есть окно графика, но там все зафильтровано, принимать сообщения извне нельзя, пресловутая безопасность. На данный момент это можно сделать через самописную DLL которая будет создавать своё окно, свой обработчик. А это, как ты понимаешь, уже не интересно.

 
Andrey Voytenko:

Да, Андрей, было бы хорошо, но MQL не позволяет. Нам нужно реализовать обработчик сообщений в каком нибудь окне. Из MQL создать окно через CreateWindow не получится, там нужна ссылка на коллбэк функцию (недавно придуманный в MQL указатель на функцию не подходит) так что тупик. У нас есть окно графика, но там все зафильтровано, принимать сообщения извне нельзя, пресловутая безопасность. На данный момент это можно сделать через самописную DLL которая будет создавать своё окно, свой обработчик. А это, как ты понимаешь, уже не интересно.

Или через проверку чего-либо по таймеру.

 
Спасибо Андрей, ваши разработки радуют!