|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Zahar Kiselev 2:5030/382.1 14 Feb 2002 03:55:02 To : Dmitry Kochkin Subject : Re: =?KOI8-R?B?8drZy8/X2cUgz8LPzM/ey8kuLi4=?= -------------------------------------------------------------------------------- Feb 13 16:34 02, Dmitry Kochkin wrote to All: DK> Если говорить только о библиотеках (хотя это уже не очень-то DK> удобно) DK> то назывались пока FLTK, QT. Я вчера сюда ссылку на огромный список закинул. > Да, по условию задачи это С++ обязательно. С библиотеками есть как минимум одна неприятность - они большинство из них сделаны по принципу "обратного вызова". То есть основной цикл обработки поступающих с клавиатуры(или от мыши) событий находится не в моей программе, а внутри библиотеки. А уже она "дергает" написанные мной функции. Для языков, более строгих чем Си, это вызывает проблему - потому что "просто указателя на непонятно что" там не бывает. Hужно всегда точно задать тип передаваемых параметров, иначе не будет работать автоматическая проверка типов. Да и вообще сама идея слишком активного использования "указателей на void" как для передачи управления, так и для передачи параметров - слишком часто приводит к тому, что эти указатели указывают не туда куда надо и появляются трудноуловимые ошибки. Особенно если программа, использующая библиотеку, написана не на Си, а на другом языке. Мне больше нравится "классический" подход - с главным циклом в своей программе, вызывающим описанные в ней же функции либо функции из библиотеки. Для текстового режима я такие библиотеки знаю, а вот есть ли для графического? Допустим хочется мне предложить пользователю меню - я вызываю функцию, рисующую на экране меню, причем описание пунктов этого меню желательно иметь подгружаемым из файла(повторю, что для текстового режима такое есть, да и в FLTK можно хранить экраны в файле). После того, как пользователь что-то выбрал, функция возвращает мне номер выбранного пункта меню и я делаю в программе то что запрошено пользователем. В большинстве же существующих реализаций мне предлагается "подвесить" к каждому из пунктов меню указатели на свои функции, затем вызвать функцию активизации меню. При этом библиотека _сама_ будет вызывать мои функции при выборе соответствующего пункта меню. Мне активно не нравится подобная бесконтрольность поведения библиотеки. Zahar(@spbdept.rbc.ru) --- Msged/LNX 6.1.0 * Origin: undefined location (2:5030/382.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/32883c6b020f.html, оценка из 5, голосов 10
|