Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс окт 22, 2017 6:45 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 100 сообщений ]  На страницу 1 2 3 4 57 След.
Автор Сообщение
 Заголовок сообщения: @notify
СообщениеДобавлено: Чт апр 29, 2010 1:04 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Набросал маленькую программку, выводящую текст, переданный ей, в маленькое окошко в правом верхнем углу экрана.
Окно закрывается само через 5 секунд.
Синтаксис примитивен:
@notify [строка для вывода]

Зачем? С ее помощью можно уведомлять пользователя о включении/выключении эмулятора мыши, переключении песни в ac97 и о многих других событиях.

В планах: расширение синтаксиса. Вывод в несколько строк с использованием управляющих префиксов (например \n), передача времени отображения окна через командную строку. Заготовки иконок для различных событий (например, если событие связано со звуком - рисовать динамик, с мышью - рисовать мышку и так далее). Возможно - ini-файл с настройками (угол экрана, где окно должно появиться; цвет окна и другие параметры).

Подскажите, пожалуйста, как убрать этот мерзкий синий контур вокруг окна? //каюсь, мало курил мануалы :)//


Вложения:
Комментарий к файлу: @notify 0.1
@notify.7z [1.41 КБ]
138 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт апр 29, 2010 1:33 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Ср янв 27, 2010 10:59 am
Сообщения: 269
Отличная идея :) . Нечто подобное и я хочу сделать, только для отображения отчетов об ошибках в программе, сохранения отчетов и т.п, потому что Board'ом не очень удобно пользоваться из-за отсутствия скроллинга, копирования и т.д. Мое мнение - продолжай в том же духе =)
Sorcerer писал(а):
Подскажите, пожалуйста, как убрать этот мерзкий синий контур вокруг окна? //каюсь, мало курил мануалы :)//

Как вариант сделай цвет рамки такой же как и у фона, то есть:
Код:
mov EAX, 0
...
mov EDI, 0 ; черный цвет рамки
int 0x40

Только, на черном рабочем столе (например, в ночных сборках) без рамки будет смотреться не очень :)

_________________
ушёл...


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт апр 29, 2010 3:14 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн ноя 28, 2005 8:00 pm
Сообщения: 1601
Sorcerer писал(а):
Подскажите, пожалуйста, как убрать этот мерзкий синий контур вокруг окна?

Использовать окно стиля 1, где система самостоятельно не рисует вообще ничего?

_________________
Ушёл к умным, знающим и культурным людям.


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Вт май 25, 2010 11:52 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Делаю многопоточную версию notify (ведь может же одновременно или почти одновременно произойти несколько событий)
Вопрос - как лучше передавать параметры?
Через IPC, dll, или доску отладки?
Довольно логично сделать какой-нибудь префикс для отладочных сообщений пользователю... Тогда эти сообщения можно будет увидеть и через уведомлялку, и на доске отладки.

Буфер доски отладки очищается при чтении, правильно?


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Вт май 25, 2010 2:52 pm 
Можно еще использовать общую память, как я сделал для OpenDialog, но готовых процедур с событиями и прочим в этом случае нету.


Вернуться к началу
   
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 12:14 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Увидел в ночной сборке @notify, и стало мне стыдно за то, что такой крокодил присутствует в образе.
В связи с этим переписал его с нуля, и стал он заметно легче (раза в 4), и вдобавок выводит текст не на черном фоне, а на сетке (что позволяет видеть рабочий стол под окном уведомления).

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


Вложения:
notify.7z [1.82 КБ]
110 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 1:09 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Более корректная версия, перерисовывающая окно и отлавливающая события.

Вопрос такой: у notify окно, в котором система ничего не рисует. Когда вызывается команда рисования окна, notify рисует сетку и выводит текст. Если под окном notify есть другое окно, то его будет видно насквозь.

Теперь я убираю окно, которое было под окном notify. Notify получает сообщение о необходимости перерисовать окно, и заново ставит точки. Но рисуются эти точки поверх прошлого состояния окна notify (т.е. когда сквозь него видно другое окно), а не с нуля. Это баг в ядре, связанный с рисованием окон? Или это фича? Как с этим бороться?


Вложения:
notify.7z [1.95 КБ]
111 скачиваний
Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 5:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт мар 01, 2007 7:57 pm
Сообщения: 834
Так вроде Колибри пока не поддерживает полноценную прозрачность.

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 6:09 pm 
Sorcerer
А как ты себе представляешь объективную отрисовку? Первичный захват точек для микширования происходит еще до вывода окна, а вторичный уже при наличии окна. На самом деле физически все, что под окном не существует, потому что ядро отрисовывает только ту информацию, которая в данный момент видна для пользователя. Слоев для восстановления информации по сути нет. Если бы они были это все отжирало бы память на хранение. В текущем виде простого решения для проблемы которую ты обозначил нет.


Вернуться к началу
   
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 8:33 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
вероятный workaround: при просьбе ядра перерисовать окно, изменить размер окна в ноль, затем обратно, и рисовать.

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 9:56 pm 
Gluk
Я хотел предложить такой метод, но он дюже неправильный - моргать будет. К тому же массовое использование несколькими приложениями такого метода будет "кошмарить" систему. В общем как и утверждалось ранее - прозрачность в Колибри это не самая перспективная и нужная вещь, особенно при отсутствующем аппаратном ускорении.


Вернуться к началу
   
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 9:58 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Только что проверил, не работает. Не моргает, а просто все выглядит точно так же. Что с изменением размера 67й функцией, что с изменением формы 50й.


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 10:39 pm 
Sorcerer
Скорее всего ты неправильно выводишь. Мало изменить 67 функцией - надо еще отрисовать после этого все той-же комбинацией функций 12+0+12, затем поменять обратно на исходные 67 функцией и снова отрисовать 12+0+12. А вообще выводить так как сделал ты не самый лучший вариант, на некоторых мониторах такой сетчатый вывод вызывает муар и режет глаза. Лучше комбинировать с захватом куска изображения после минимизации в 0 окна, через функцию 36, а затем затемнив и\или размыв захваченную картинку вывести ее, а поверх нее текст. Конечно это медленней, но это будет ближе к тому что ты хочешь получить.


Вернуться к началу
   
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Чт янв 20, 2011 10:50 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Именно так и делал, 67я, потом 12, потом 0, потом 12, потом 67, потом 12, 0 и 12. Эффект нулевой (или руки кривые).

Да, я думал о том, чтобы сделать через 36ю функцию, но натерпелся глюков с программой transp, и решил попробовать сделать так, как было сделано в игрушке Seiken Densetsu 2 для SNES. Там результаты очень хорошие получались


Вернуться к началу
 Заголовок сообщения: Re: @notify
СообщениеДобавлено: Сб апр 02, 2011 6:42 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Sorcerer, где-то на форуме валяется прога для отображения заряда батареи by me, там сделано сворачивание в точку, вроде работает =)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 100 сообщений ]  На страницу 1 2 3 4 57 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB