|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Victor Wagner 2:5020/400 16 Feb 2002 13:04:58 To : Zahar Kiselev Subject : Re: Языковые оболочки... -------------------------------------------------------------------------------- Zahar Kiselev <Zahar.Kiselev@p1.f382.n5030.z2.fidonet.org> wrote: ZK> Hello Dmitry! ZK> Feb 15 18:43 02, Dmitry Kochkin wrote to All: >>> В том, что не моя программа вызывает функции библиотеки, а >>> сама библиотека решает как и когда передать управление >>> функциям моей программы. DK>> Hу и что? Тебя беспокоит, что твоя функция вызывается не DK>> сообщением от ОС, а библиотечной оберткой над этим DK>> сообщением? А какая существенная разница? ZK> Мы похоже не понимаем друг друга. Вот что я имею в виду. ZK> Моя программа вызывает функцию получения кода клавиши(или ZK> события мыши). Функция возвращает некоторое значение, Захар, ты не задумыввался о том, что в многооконных системах жизнь бывает несколько сложнее, чем описанная тобой модель. Тебе действительно хочется самому обрабатывать все эти Expose, MappingNotify, SubstructureNotify, Resize, Configure, Circulate, ICCCM запросы от других программ, и прочие события определенные в X-протоколе. А если немного подумать, то дисплей является далеко не единственным источником событий. Есть еще пайпы в дочерние процессы, и, если ты не будешь обрабатывать их в том же цикле, то на время запуска дочернего процесса у тебя интерфейс "замерезнет", есть сокет, ведущий к audio-серверу, на котором время от времени возникает событие "а кинь-ка мне еще кусок wav-а", есть другие сокеты, которые постоянно становятся то readable, то writable. Система с callback-ами позволяет легко разнести логику обработки этих событий как по видгетам, так и по функциональным блокам программы. Более того, примерно для трех четвертей событий библиотеки предоставляют обработчики по умолчанию, и если ты создал, скажем поле ввода текста, то нажатие алфавитно-цифровых клавиш на нем - уже не твоя забота (если ты конечно, не хочешь туда валидатор повесить. Если хочешь, то ты работаешь в терминах валидации вводимой строки, а не в терминах событий протокола) ZK> так. А во иксовых интерфейсных библиотеках этот цикл и ZK> функция получения события(клавиши или мыши) - упрятаны ZK> внутрь библиотеки и соответственно я лишен возможности ZK> контроля над этим. Вообще говоря, есть pure Xlib, которая устроена точно так, как ты описал. Почему-то большинство программистов предпочитает пользоваться высокоуровневыми обертками. А те, кто этого не делает, редко пишут программы, имеющие приемлемый look & feel. Постоянно, то WM_DELETE_WINDOW забывают обработать, то еще что. -- ... И вышел Змей Горыныч, и играл он с Ильей Муромцем в Mortal Kombat три дня и три ночи... Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/64889c1d3251.html, оценка из 5, голосов 10
|