![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Александр Жуков |
|
|||
|
Unregistered |
Есть MDI приложение (достаточно разлапистое) работающее с USB-устройством - качает непрерывно из него по USB сигнали отображает на TImage (в силу необходимости использован именно TImage, а не TChart). Смена кадров где-то 1-3 Гц (требуется кроме всего ещё время в приборе на получение сигнала). На мощном компе (P4 2.8) все равботает медленно, но стабильно. На компах 1.8 и меньше - работает до перетаскивания (Drag) окошка с сигналом - после перетаскивания окошка (дочернее окно) курсор мышки остается "заперт" в клиентской области главного окна (то есть даже в меню/кнопки не может зайти) и за пределы этой области не выводится никак (кроме Alt-Tab и кнопки Windows). Также все открытые на данный момент окна перестают перетаскиваться (в том числе и с сигналом), а на некоторые даже перключиться нельзя. Один раз получилось вызвать модальное окошко (предусмотренное программой), но оно тоже не захотело закрываться.
Вот собственно и проблема. Вопрос: Кто/что может так забивать приложение, ну и как с этим бороться? Заранее спасибо! |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
просто по описанию вряд ли что-то сказать получится.
Могу посоветовать потоки использовать ( для получения сигнала и для отрисовки ) + ProcessMessages подобавляй... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Александр Жуков |
|
|||
|
Unregistered |
Сорри за куцее описание, но добавлять кусок кода - какой не знаю, а выкладывать весь проект - низзя
Попробую ProcessMessage или просто запретить отрисовку по событию OnDragStart. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
запрет вряд ли что-то даст: судя по описанию, программа в рекурсию уходит...
могу еще посоветовать счетчик вызовов функций прикрутить -- тогда понятно будет есть рекурсия или нет + можно будет попробовать эти функции переписать... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Александр Жуков |
|
|||
|
Unregistered |
Рекурсия вряд- ли. В проге нету ни одного рекурсивного вызова (необходимости такой нету).
Да и, ИМХО, рекурсия дала-бы полное подвисание - а не блок курсора и прочие чудеса. Счас пробую блок рисования при перемещении... |
|||
|
||||
| Александр Жуков |
|
|||
|
Unregistered |
Правда тут встает вопрос второй. Как отследить начало и ОКОНЧАНИЕ перетаскивания формы. Процедура WMNCHitTest не подхходит, так как в ней нет информации о том, нажата ли кнопка мыши или нет (ну или есть, но я не знаю как её получить). И эта процедура не ловит ОКОНЧАНИЕ перемещения формы. Мож есть какие-то события? (типа OnStartMove и т.д.)
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |