Board.KolibriOS.org
http://board.kolibrios.org/

Функция 34 - узнать владельца точки на экране
http://board.kolibrios.org/viewtopic.php?f=36&t=2042
Страница 1 из 1

Автор:  Mario [ Вт мар 27, 2012 4:34 pm ]
Заголовок сообщения:  Функция 34 - узнать владельца точки на экране

SVN r. 2511
Собственно позволяет вынуть данные запрошенной точки из области по адресу [_WinMapAddress].
Описание читать в документационной части исходников ядра.

В настоящее нужно для @RB - вместо кучи запросов ф.9, равное количеству запущенных в системе потоков, производится всего один запрос ф.34. Быстро, эффективно, красиво.
Также будет использоваться в новом Icon.

Автор:  art_zh [ Вт мар 27, 2012 7:48 pm ]
Заголовок сообщения:  Re: Функция 34 - узнать владельца точки на экране

Полезная функция. Даже странно, что ее до сих пор не было.
Только я бы ее расширил еще одной нужной подфункцией -
п/ф 0 = узнать владельца точки,
п/ф 1 = перемаппить всю экранную карту на адресное пространство пользователя.
А то если про каждую точку спрашивать у ядра - так и уснуть можно.

Автор:  Mario [ Вт мар 27, 2012 8:24 pm ]
Заголовок сообщения:  Re: Функция 34 - узнать владельца точки на экране

Для @RB и Icon ее вполне хватает.

Насчет получения куском - я могу сделать только как функцию 36. Но она всегда показывает только прошлое состояние. Которое при активной перерисовке может сильно отстать и вообще сделать мгновенный срез без CLI не получится, а CLI вообще-то не желательно на длительный срок.

Как сделать по аналогии с именованной памятью я не знаю. Из известных мне вариантов реализации есть только 15.6, но там уж больно топорно реализовано и работает только в монопольном доступе.

З.Ы.
art_zh писал(а):
Полезная функция. Даже странно, что ее до сих пор не было.

Вообще то умные люди давно советовали.

Автор:  lev [ Вт мар 27, 2012 8:45 pm ]
Заголовок сообщения:  Re: Функция 34 - узнать владельца точки на экране

Влезет ли туда тип точки? Шапка-левая-правая-нижняя граница, углы, просто форма, ещё чего-то. Ориентируясь на эту инфу можно было бы менять вид курсора.

Автор:  Mario [ Вт мар 27, 2012 8:49 pm ]
Заголовок сообщения:  Re: Функция 34 - узнать владельца точки на экране

Вид курсора по позиции - будет менять ядро. Приложению делать что ли больше нечего? Такие вещи централизованно решать надо.

Автор:  Стас [ Ср мар 28, 2012 5:33 am ]
Заголовок сообщения:  Re: Функция 34 - узнать владельца точки на экране

Это система быстрых 256 объектов, которую я уже давно придумал и реализовал, для неё заводится массив 256*4 байт, там адреса на однотипные записи объектов, объекты могут быть и иконки и формы и кнопки и т.д. . В начале идут данные общие для всех: тип объекта, затем адрес курсора, затем адрес функции сообщений, затем адрес картинки, ... , потом данные специфичные для объекта, которые использует только он. По нажатию мышки на экран сразу получаешь пиксель с номером объекта, берешь его из массива и вызываешь его функцию (без переборов). Я кидаю туда же и сообщения от клавы и таймера сохраняя последний активный объект.
По движению мыши по экрану постоянно берётся адрес курсора и рисуется новый при его перерисовки, только так можно рисовать руку при наведении на ссылку или карандаш при наведении на поле ввода.
Я использую 4 байт пикселя для номера объекта, для прозрачности, для Z растояния в 3д
Учитесь.

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/