![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
У меня в прорамме планируется быть осциллограф. Будет сниматься аудио сигнал и выводиться на маленький нарисованный мной экранчик. Вопрос:
Как наболее грамотно сделать поледовательную прорисовку элементов. 1) Запихать все функции выводящие графическую информацию в одну процедуру вызываемую при сообщении WM_PAINT или 2)У меня уже есть класс "оболочка" В нем можно ассоциировать какой-то член класса (например виртуальную функцию) с конкретным сообщением, так вот можно ли вызывав например такую виртуалную функцию унаследованного класса, вызвать еще и ее бызовую копию. Например:
Это надо для того чтобы можно было построить иерархию классов, и каждый из них добавил бы свою функцию обработки WM_PAINT, как следствие программа была бы логически построена и хорошо инкапсулирована. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Масяня |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
Конечно, можно! Для отключения виртуального механизма вызова вирт. функций используй оператор разрешения обасти видимости. Например, так Base::foo(). Это сообщение отредактировал(а) Масяня - 1.4.2004, 18:35 |
|||
|
||||
| Гость_Tinto |
|
|||
|
Unregistered |
Не знаю как вы делаете, а я сделал так. Данные приходят пакетами через СОМ-порт с периодом 120мс. Пакет обрабатывается и выводится на экран(TeeChart) и все. Единственно узкое место здесь, это лимит времени на обработку данных не более 120мс. Аналогично можно вводить данные и со звуковухи, только надо программный буфер предусмотреть, т.к данные со звуковухи идут непрерывно. А вообше-то зачем заморачиваться, если есть готовая программа, SpectraLab называется
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Модератор: Название темы должно отражать ее суть!
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
2Cardinal, раз модератор да еще такой умный, то и предложи, а то вишь замечания тут радзовать
2МасяняBase::foo() вызовет только foo() из Base, а мне надо так чтобы одним вызовом foo() где либо вызвались все foo в иерархии классов, подобно тому как вызываются конструторы. 2TintoПотому как здесь есть учебный проект и его надо сделать. Суть примерно такова: сделать из звуковухи модем, то есть модулировать входящий сигнал и превращать в цифры. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Royan
Так можно вызовы цепочкой организовать
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Это я понимаю
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| cardinal |
|
||||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
В правилах написано:
Моя задача, как и всех других модераторов, делать замечания участникам форума, если они не придерживаются правил.
И не надо наезжать на модераторов. Они следят за порядком на форуме.
Ну а если хочешь мое мнение услышать: для начала надо решить критический это момент или нет 1. если да, то тут, наверно, не до инкапсуляции. Тут речь пойдет (как я понял) об изображении сигналов, так что надо подзадуматься, как бы не напридумывать так, чтобы потом изображение дергалось. 2. если нет, то надо делать так, как удобней тебе (ничего лучшего чем то, что предложил srd предложить не могу). -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||||
|
|||||||||
| Royan |
|
||||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Не умничай
Кстати отличный вопрос, если кто сталкивался с этим, как решали эту проблему? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
||||
|
|||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Нашел в FAQ'е и через search:
http://forum.vingrad.ru/index.php?act=ST&f=31&t=19425 http://forum.vingrad.ru/index.php?act=Sear...%F6%E0%ED%E8%E5 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Royan, а можно упростить себе жизнь вот так
Использование макросов в данном случае даёт более унифицированный внешний вид кода, чем при явном указании имён базовых классов (никаких других выигрышей и проигрышей тут нету, т.к. функция Base() будет inline, т.е. подставляемая, и к тому же кроме cast-а ничего не содержит). Сравни с тем же примером, но без Base():
не надо загоняться на имена базовых классов, а достаточно вызвать Base( )... -------------------- ![]() |
||||
|
|||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Да ты прав, я думал предложить свой вариант, когда на этапе компиляции составляется карта в конструкторе каждого из унаследованных классов, а после ее в бызовом классе раскрутить в цикле, так как OnMyPaint базового класса вызывается по умолчанию, но потом до меня дошло, что это все равно то же самое, что предложил и ты, покуда пришлось бы прописывать в каждом конструкторе лишнюю строчку кода
Это сообщение отредактировал(а) Royan - 3.4.2004, 15:45 -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Угу, только в моём коде ни одной лишней строчки компилятор не генерит
-------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |