Задача - создать баннерную систему / баннерный механизм (коротко: БС, БМ). дополнительный слой окон на рабочем столе.
Понажимай:
* Add regular notification
* Add sticky notification:
Состав БС |
- Можно чтобы при установке рантайма eCo Software в StartUp добавился
демон BannerMechanishm.exe (eCoSoftDaemon.exe = ..).
- banners.dll - API для приложений.
|
Кто отрисовыват содержимое баннеров? |
2011/04: e-co:
Отрисовывает БС. НО т.к. баннеры разные, то нужно
предусмотреть разные стили, передачу N картинок, M текстов.
Стили:
- Приложение передает БС'у 1 PNG или BMP
- НО!! очень тяжело сгенерировать битмап.
ПОЭТОМУ, предлагаю и такой вариант: 1 PNG (BMP) + текстовая строчка
- Ага! стиль "MsgBox": маленькая PIC слева, жирный заголовок сверху,
пояснение ниже. т.е. 1 картинка + 2 текста
- ..
2009:
как передавать описание внешнего вида баннера? xml файл в памяти? крута.. но дорого.
Лучше заполнять структуру.
|
Где будет открываться баннер? |
e-co, 2009:
программа *просит* вывести в области такой-то.
около себя.. или в углу.. А на самом деле где выводить?
Если 5 баннеров одновременно? a) они друг друга накроют.
b) Юзер не успеет прочитать.
Должна быть демон.exe, которая следит за баннерами и отдает
программе финальные координаты
Improver,
Имхо, нет смысла возвращать программе координаты, тут нужен другой подход:
должна быть некая программа, постоянно висящая в памяти и которая выводит
эти баннеры от начала и до конца, работающая по принципу
"сообщил и забыл". Т.е. сообщили ей необходимые сведения, а
дальше она сама должна нарисовать заданный баннер с нужным
стилем в нужном месте экрана и на нужное время. И при этом ещё учесть
все возможные коллизии.
|
Какая вообще роль БС? |
2009:
Как результат ^ - вопрос:
что это за dll? она рисует баннер? или советует программе,
где выводить баннер?!
|
Свойства баннера: |
- стиль: a) Стандартный (т.е. 1 картинка на весь баннер), b) стиль "MsgBox",
- Рамка: a) нет, b) 1 пиксель, c) серая, ..
- когда прятаться: a) через N секунд, b) никогда, ждать клика
- прячется ли, если кликаешь его. по умолчанию включено.
- всплывать ли на поверхность: a), float on top, b) popup 1 time
-
Прозрачность, бррр.. альфа-канал? или задается % прозрачности фона?
как рисовать фон? Схватить изображение рабочего стола, считать это фоном.
- в принципе она нужна. Но в первый момент можно без нее.
Сразу же надо заложить a) % прозрачности. b) Закругленные углы.
- Где хочется вывести баннер? БЫЛО:
*прошу* вывести в координатах x,y,w,h --
программа может рекомендовать БС вывести баннер в x,y,w,h.
ЛИБО: вывести баннер по центру. либо ниже центра. либо около eCenter.
Содержимое:
- Картинка (картинки)
путь к PNG? Хэндл картинки?
- Фон: путь к обоям PNG? Или цвет
- text (тексты)
|
Функции в dll |
- Создать баннер, CreateBanner()
- показать баннер (или отдельно не нужно. создали - сразу в очередь на показ)
- свойства сменить, ChangeProperties()
- убрать баннер, forceClose()
- UpdateBanner (ID, ..) - т.е. для уже созданного обновить
его содержимое и свойства.
|
Сложности |
- Совместимость с ePager. Sticky (липкие окна)..
если ничего не делать, то юзер переходит на другой вирт.стол и все баннеры
остались на предыдущем столе. А нужно чтобы они были на всех столах.
|
Где разворачивать баннеры? |
- (по умолчанию) квадратные маленькие - сверху, около eCenter
- (по умолчанию) длинные баннеры по правому краю экрана
- плюс это все можно настраивать
Одна программа выталкивает баннеры 200x200, другая 240x120, ..
Другая 468x64, .. Хрен их компактно нарисуешь.
|
Обратная связь |
Программисту хочется не только баннер вытолкнуть, но и получить
в ответ какую-то инфо:
Каким-то образом программа получает результат:
- сразу же: что баннер вывешен в x,y,w,h
- позже, что по баннеру кликнули или он сам испарился.
- еще?
- Как организовать все эти call_back функции?
|
Взаимодействие? |
- e-co: Через пайпы? через shared memory? через DDE?
- Capricorn: всё это неправильно ^ , есть WinSendMsg, есть Dos* SendMsg
- e-co: ну хорошо.. а как передать описание баннера?
и как создать баннер из REXX?
|
REXX |
как из REXX это юзать?
как из Паскаля? - Если есть из СИ, то остальное можно реализовать.
Конечно нужно думать и о REXX.. Может быть описать баннер в виде текстового
файла и его подавать?
|
| |
| |
MsgBox |
Виджеты eCenter
|
Стандартный (1 картинка на весь баннер) |
Системные процессы
Интернет-радио
|
Сложный |
WiFi
|
Сложный раскрашенный |
Skype
|
| |
| |
SysTray |
* There were plans in 2007 (?) add SysTray widget to eComStation:
http://www.eros2.info/systray_widget_en.shtml
=> this can change UserInterface significantly.
Let's include to eCS 2.01 ?!
|
IBM Peers |
Sometimes it's necessary popup banners (notifications), not MsgBoxes.
* LOGON: One or more of your connections failed - OK
=> MsgBox: http://ecomstation.ru/temp/200904/share-fail.png
|
WiFi widget |
* Message from WiFi widget .. MsgBox.. don't remember details.
|
eCenter widgets |
USB Widget, etc
|
| |