![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Вот только вместе с этим указателем придется передавать еще и указатель на экземпляр этого класса. Сам по себе он невызываем.
Предлагаешь писать делегаты самому? Нет, для данной задачи Boost, быть может, и overkill, но вообще не вижу ничего криминального. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| ST1 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 20.7.2005 Где: Уфа Репутация: нет Всего: 1 |
@Kurt
Возможно вас заинтересует эта информация: 1) http://is.ifmo.ru/projects/loderunner/ -- реализация Lode Runner (Java) 2) http://www.softcraft.ru/forum/viewtopic.php?t=216 -- реализация активных объектов на C++ |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Хех, опять прихожу к событиям. (отдельный проджект)
Народ, кто-нибудь реализовывал систему событий на основе GLib? Может, примерчик какой подкинете? А то у меня только reference по функциям. .. Просто сам проект на GTK - не хочется тянуть ничего лишнего. Тем более, в манах по GTK рекомендуют именно GLib... -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| Neitron |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Батенька а ты когда-нибудь на АПИ программировал и ловил сообщения? Я не понимаю, чем вам не нравится создания события на основе сообщений Винды. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
||||
|
|||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 3 Всего: 73 |
Не далее как вчера Добавлено @ 13:50 Кстати, а на каком именно АПИ? Или кроме ВыньАПИ других не существует? -------------------- Теперь при чем :P |
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Ignat
Это типо тест на сообразительность? На моём АПИ моей программы Это сообщение отредактировал(а) Neitron - 10.11.2005, 14:27 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 3 Всего: 73 |
Просто нигде не сказано, что прогрмма для винды. Она может быть и для юникса. -------------------- Теперь при чем :P |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Можно использавать Qt.
Сейчас пишу змейку - использую SDL, там есть возможность отлавливать клавиши:
Всё это гоняется в цикле. Правда, я пока только изучаю С++. а из Qt знаю только "Hello, Qt!" |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
У меня GTK-приложение.
Определены два пользовательских класса. Задача - при изменении состояния объекта первого класса определенным образом должно среагировать некоторое множество объектов второго класса. Все. Больше ничего. Мне нужно то же самое, что происходит в любой GTK/QT/WxWindows-программе! Есть класс, есть событие (определенное в этом класса), нужно повесить на него обработчик. Программа фактически кроссплатформенная - компилится и под Linux и под Windows. И вообще под все, где есть С++ и GTK. Поэтому очень не хочется заморачиваться с этими всеми системными сообщениями и т.п. Тянуть дополнительные либы тоже жаба душит - и так уже от GTK неплохо зависим. А под зависимостью от GTK я понимаю зависимость еще и от glib, atk, pango и т.п. и т.д. Господа, я в растерянности. Работа стоит, а время идет. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| Дмитрий Т |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 16.3.2005 Где: Самара Репутация: 4 Всего: 4 |
Всё правильно сказали про указатель на функцию. Вот пример: Класс порождающий событие
У реагирующего на событие:
теперь связываем:
Этот код - неопробованные вырезки из рабочей программы. Этот вариант хорош для одного реагирующего на событие, но прост и очень часто встречается. Для нескольких реагирующих надо менять SetShowResult и хранить массив указателей или лучше воспользоваться другой схемой. Кратко почитать о разных схемах работы с событиями в С++ можно на http://www.fox-toolkit.org/faq.html в вопросе "Why did FOX choose the message-map based callback paradigm" (нашёл когда выбирал библиотеку). |
||||||||
|
|||||||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Благодарю за ответ.
С твоим примером все стало намного проще. Правда, у меня несколько реагирующих объектов, но это я уже решу... надеюсь. З.Ы. Ну, не спец я в С++, что тут поделаешь? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| S.A.P. |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Вот мой небольшой велосипед с несколькими реагирующими объектами.
Юзать можно так.
вывод:
Добавлено @ 21:43 Помидоров не жду |
||||||
|
|||||||
| libricon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.10.2005 Где: estonia, tallinn Репутация: нет Всего: нет |
хорошая мысть qt
тама реализована система signal - slot т.е появился сигнал, вызвался слот . пример connect ( что ,SIGNAL(событие),кому,SLOT(че сделать)); или чтото похожее |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Perchilla
Благодарю. Сейчас попробую применить. libricon Не спорю, в QT все классно сделали, но, увы, я работаю с GTK. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
To Perchilla:
Не могли бы Вы дать пояснения к коду? |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |