При завершении мастера установки Гарант7 появляется финальный диалог. Там должен стоять checkbox слева от надписи "Запустить утилиту...". Checkbox прорисовывается только если попасть в него мышкой. При перекрытии этого окна другим окном checkbox опять пропадает Пока работает только локальная версия Гарант7. Установку следует запускать через winexp
В общем ошибку заценил.. Такое ощущение, что msi эту кнопку рисует под клиентским окном, т.к. spy его в wine не видит, а в WIndows без проблем. Стиль: 0x50032002
Проблема похоже в static-е ( SS_BITMAP ), он перерисовывает и закрывает собой этот checkbox, очень похоже на проблему с 1с 7.7 ( окно "О программе", когда там текст зарисовывался ).
Выложил патч. Как писал Толя, проблема заключалась в bitmap static'e, который при отрисовке закрывал ранее нарисованный checkbox. Решение состоит в том, чтобы после отрисовки bitmap static'a посылать WM_PAINT тем контролам, которые перекрываются этим static'ом. Думаю, что решение, не требующее перебора окон, вряд ли существует. Дело в том, что bitmap static может рисоваться по WM_PAINT, посланными из приложения, поэтому отслеживать порядок отрисовки всех контролов окна бесполезно.
С данным патчем ошибка не воспроизвелась.
У текущего решения есть проблема - перестал работать установщик FineReader. Происходит постоянная перерисовка и приложение виснет. Патч надо доработать.
Проблема текущего решения, заключается в том, что если static находится поверх како-нибудь контрола-родителя, то из-за посылки ему WM_PAINT по отрисовки static'a получается зацикливание.
Выложил дополнение к патчу - [2/2]. Добавлена проверка на класс контрола, который необходимо перерисовать. Класс должен быть Button. Протестировать установку FineReader можно в бутылке fr/install.
40/17 С установкой FR проблемы не наблюдал
При тестировании было замечено, что патчи на эту багу стали не нужны. Думаю имеет смысл их откатить, т.к. они приводят к лишней перерисовке контролов. Выложил 2 revert'а. Необходимо протестировать, что бага не воспроизводится на багфиксе 1.0.11.
WINE@Etersoft 1.0 SQL 1.0.11-eter8.3/4 Not working!
Выложил патч [TRY 2]. На самом деле, проблема в создании контролов msi диалога. Они перерисовываются в порядке обратном порядку создания. Т.е. если сначала создается Bitmap, а потом CheckBox, то они перерисовываются - CheckBox, затем Bitmap. Очевидно, что CheckBox в этом случае будет перекрываться Bitmap'ом. Порядок создания этих контролов определяется результатом SQL запроса к msi пакету в функции msi_dialog_fill_controls. Если в этот запрос добавить упорядочивание по типу, то тогда Bitmap'ы будут всегда создаваться в последнюю очередь (после контролов PushButton, CheckBox, Text). В этом случае они наверняка не будут ничего перекрывать. В windows порядок создания контролов отличается от wine'овского. Чтобы однозначно его установить надо написать тест.
Принято.