Есть древнее приложение в нем rtf окно и вот обнаружилось что если делать SetWindowTextW в этот контрол большого текста(где-то 2мб в ascii соотверствено это где-то 4мб в wide char) то оно зависает — обрабатывает на довольно большой срок секунд 15-50. Причем это только если использовать Borland С++. Если же делать MSVC то работает быстро как и раньше.
Куда копать?
Здравствуйте, m11, Вы писали:
m11>Есть древнее приложение в нем rtf окно и вот обнаружилось что если делать SetWindowTextW в этот контрол большого текста(где-то 2мб в ascii соотверствено это где-то 4мб в wide char) то оно зависает — обрабатывает на довольно большой срок секунд 15-50. Причем это только если использовать Borland С++. Если же делать MSVC то работает быстро как и раньше. m11>Куда копать?
Попробовать заслать этот текст минуя борландовские классы, то есть чисто через WinAPI. Получить HWND и по нему.
Здравствуйте, m11, Вы писали:
m11>Причем это только если использовать Borland С++. Если же делать MSVC то работает быстро как и раньше.
В смысле, если скомпилить из сырцов на Борланде и MSVC? Я бы тогда смотрел на то, какой контрол фактически создаётся в приложении, какие опции его создания. Подозреваю, что Borland создаёт старую версию контрола, что-то типа 2.x, где нет поддержки виртуализации контента (поэтому по факту строится полная DOM-модель, делается её offscreen-рендеринг и т.п., что и занимает лишнее время и память).
Куда смотреть:
* window spy — для изучения контрола
* Dependency walker — для определения списка используемых DLL
Здравствуйте, Pavel Dvorkin, Вы писали:
m11>>Есть древнее приложение в нем rtf окно и вот обнаружилось что если делать SetWindowTextW в этот контрол большого текста(где-то 2мб в ascii соотверствено это где-то 4мб в wide char) то оно зависает — обрабатывает на довольно большой срок секунд 15-50. Причем это только если использовать Borland С++. Если же делать MSVC то работает быстро как и раньше. m11>>Куда копать?
PD>Попробовать заслать этот текст минуя борландовские классы, то есть чисто через WinAPI. Получить HWND и по нему.
Как бы там от борланда компилятор а так чисто WinAPI SetWindowTextW.
Здравствуйте, Mr.Delphist, Вы писали:
m11>>Причем это только если использовать Borland С++. Если же делать MSVC то работает быстро как и раньше.
MD>В смысле, если скомпилить из сырцов на Борланде и MSVC? Я бы тогда смотрел на то, какой контрол фактически создаётся в приложении, какие опции его создания. Подозреваю, что Borland создаёт старую версию контрола, что-то типа 2.x, где нет поддержки виртуализации контента (поэтому по факту строится полная DOM-модель, делается её offscreen-рендеринг и т.п., что и занимает лишнее время и память).
там можна собрать как в Borland С++ так и в MSVC(немного глючно). обычный котнрол CreateWindow("RichEdit50W" LoadLibrary("msftedit.dll"); Еше там версии детектятся LoadLibrary("riched20.dll"); LoadLibrary("RICHED32.DLL"); Оно и под Win95 запустится наверно лол.
MD>Куда смотреть: MD>* window spy — для изучения контрола MD>* Dependency walker — для определения списка используемых DLL
Думаю там нада что-то сделать с манифестом ибо с MSVC его нету.
MD>>Куда смотреть: MD>>* window spy — для изучения контрола MD>>* Dependency walker — для определения списка используемых DLL
m11>Думаю там нада что-то сделать с манифестом ибо с MSVC его нету.
Ну да манифест отключаеш и все работает...
А теперь вопрос что прописать в манифесте-то? Чтобы последнию версию использовало под Win10/11.
Там код для XP а для win11 что прописывать?