Здравствуйте, samodelkin, Вы писали:
S>Здравствуйте, c-smile, Вы писали:
CS>>Я сильно подозреваю что и имя моей функции тебе ничего не скажет.
CS>>Есть такая штука class htmlayout::dom::expando .
CS>>С её помощью можно отследить висящие DOM элементы.
CS>>Алгоритм примерно следующий:
CS>>1) момент X проходим по всем элементам и назначаем на каждый свое expando.
CS>>При этом добавляем эти expando в map<HELEMENT,expando*>.
CS>>2) Закрываем окно или грузим другой документ. В процессе выгрузки будет вызван
CS>>expando::finalize() для всех элементов с expando.
CS>>По finalize() удаляем DOM элемент из map<HELEMENT,expando*>.
CS>>По завершению данной операции в map<> останутся зависшие элементы.
CS>>В большинстве случаев достаточно просто вывести их tag name чтобы понять где оно и что оно.
S>Я на самом деле вызываю функцию, наподобие этой:
S>S>const char* pdoc = "<html><frame src='http://terrainformatica.com/' /></html>";
S>HTMLite::load(LPCBYTE(pdoc),strlen(pdoc));
S>
S>со своим собственно подготовленным html.
S>Поэтому даже не представляю, что мне потом делать с dom-элементами. Предполагаю, что не освобождается image, локальный путь на который указан в моем html.
Все images гарантированно освобождаются при загрузке нового документа во view.
Фактически коллекция images есть member variable в root node. Т.е. если никто root node не держит то и images удаляются.
S>А что мне делать с неосвобожденными dom-элементами после того, как я пойму, что они например не выгружаются ? Есть ли специальные функции для их выгрузки ?
Неосвобожденные DOM элементы означают что у тебя больше вызовов HTMLayout_UseElement() чем HTMLayout_UnUseElement()
что есть add_ref/release пара. И это само собой надо фиксить.