-
Использую в приложении GRushControls. Приложение активно используется на ~20 компах. На всех работает нормально, кроме одного. Года 2 назад возникала аналогичная проблема, то же на одном, но тогда списали на одаренного юзера, который наставил всякой фигни на комп и забили.
Теперь в чем выражается проблема. Приложение состоит из главной формы, и нескольких модальных, вызываемых из главной. Запускается программа нормально, кнопочки реагируют на мышку, все контролы отрисовываются, короче все в порядке. При нажатии на кнопку, вызывается модальная форма. И все, дальше начинается фигня. Тут несколько вариантов. Окно (модальное) может просто не отрисоваться сразу (просто черный квадрат), может показаться нармально, но кнопки не нажимаются, или нажимаются через раз, а через некоторое время приложение повисает. Если главное окно не трогать после запуска проги, то через какое-то время (небольшое) происходит тоже самое уже с ним.
Что делал. После плясок с бубном (включение\отключение различных опций компилятора, удаление манифеста и т.д.), которые никак не помогли, утащил к себе комп, поставил делфи. из под среды делфи все работает нормально. Просто так - нифига! Скачал последнюю версию GRushControls для KOL 3.00+, немного подрихтовал, скомпилил - эффект нулевой. Проект рализован так, что GRush можно отключить. Отключил - все работает.
Мысли. Возникает ощущение что это проблемы с обработкой сообщений Windows, т.е. они не доходят до окна, а если доходят то не все. Только куда они деваются и почему только GRushControls так реагирует.
В общем я в напонятках. Может у кого какие мысли есть?
P.S. OS: WinXP, Delphi7, KOL 2.90 PP.S. KOL 3.x не ставлю пока т.к. там вроде проблемы со списками\сортировкой и.т.д. были. Мне это критично, а сидеть тестировать сейчас времени нет. Это я к тому что не нужно говорить: "используй KOL 3, и будет тебе счастье!".
-
Никто не заставляет ставить навсегда новую версию. Но можно положить в отдельную директорию, в проекте указывать, где брать исходники KOL. 2 раза прописать, потом только из комбо выбирать. И смотреть на разницу.
Если пробема с сообщениями, то их можно в лог посбрасывать, и посмотреть что происходит. Если что, это можно сделать даже не меняя код в KOL.pas: DEBUG_MONITOR_MESSAGES, и назначить обработчик OnMonitorMessage. Правда, это только в последних версиях. Можно и прямо в WndFunc прописать запись в журнал всех (нужных) сообщений по определенным условиям (например, при включенном Caps Lock, чтобы не гигабайты потом изучать).
А то, что из-за установленного на компе софта такое может быть - в принципе, возможно. Типа заменителя десктопа Aston или еще какого.
-
> А то, что из-за установленного на компе софта такое может > быть - в принципе, возможно. Типа заменителя десктопа Aston > или еще какого.
Возможно, то возможно. Вот только почему только на GRushControls проявляется?! Та же самая программа скомпиленная без GRushControls работает на ура...
-
Там иногда используются api-функции, которые могут работать не всегда. Какой-нибудь патчер для поддержки расширенных тем может заменять системне библиотеки своими. В опции посмотрите, где-то отрисовку можно заменить на самописанную, изменением опций компиляции.
Вообще, я не очень понял, что именно не работает: только рисование, или нарушается функциональность, или юзабилити из-за некачественной отрисовки падает, или вообще вешается и падает. Это поддается отладке, хотя бы в режиме удаленного отладчика (и даже лучше именно в этом режиме)? Можно как-нибудь отследить проблемный участок, если не в отладчике, то, например, отрезая часть функций рисования (заменяя градиент "плоской заливкой", удаляя "живую реакцию на мышь" и т.д.
А автор не отвечает на е-мейл? Вроде как с год назад он форум заходил.
-
Вешается, но не всегда сразу, иногда работает несколько секунд.:) Но не падает, просто виснет и только уже снимать задачу.
Буду ковырять. Примерно по этому пути и шел...
-
> У меня на сайте лежит старый достаточно уже Zoomer, он сделан с Grush > (режим dual). Можете его запстить - упадет или нет, на той же машине? > Просто интересно. Вдруг дело все-таки в версии KOL, и тогда что-то было > устойчивее.
Нашел c GRushControls Zoomer501C. Виснет практически сразу при запуске установки (SetupZoomer501C.exe). Потом еще пару своих программ c GRushControls запустил - тоже самое. Потом залогинился под другим именем (своим), и все сразу заработало! Короче, как всегда виноват оказался не в меру одаренный пользователь, чего то там настроил...:) Желание разбираться дальше что-то пропало. Хотя зарубочку в памяти нужно сделать, что GRushControls могут подвешивать приложение при каких-то условиях.
Всем спасибо за помощь. Тему можно закрывать.
-
Предыдущий пост - фигня. Проблема была в другом. Там всё валилось, в смысле все программы.
Но все же вычислил условия возникновения проблем, описанных в первом посте. Возникает если AlphaBlend <> 255, т.е. форма полупрозрачная. Причем на любой машине, просто никто не использовал полупрозрачность, поэтому и не заметили раньше. Правда тестовый пример сделать толком не получилось - возникает редко, если разгрузить форму... В общем убрал полупрозрачность (зачем вообще делал?) - проблемы исчезли. Причины понять не удалось.
|