Re[4]: HTMLayout и многопоточность
От: AntiB  
Дата: 08.01.10 10:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, AntiB, Вы писали:


CS>Если соберешь минимальный пример где проблема воспроизводима — то фикс будет на следующий день.


полноценный пример долго собирать:

        class AsyncSetText: public gui_task {

        private:
            HELEMENT HElement;
            std::wstring str;

        public:
            AsyncSetText( HELEMENT he, std::wstring Str ) { AsyncSetText::HElement = he;
                                                            AsyncSetText::str = Str; }

            virtual void exec() { HTMLayoutSetElementInnerText16( AsyncSetText::HElement,
                                                                  AsyncSetText::str.c_str(),
                                                                  AsyncSetText::str.length() );
                                  HTMLayoutUpdateElement( AsyncSetText::HElement,
                                                          TRUE ); } // здесь TRUE или FALSE - нету разницы в результате

        };


Так создаю новый объект и добавляю в очередь (hWnd — это хендл окна (думаю и так понятно), he — HELEMENT нужного элемента):
        queue::push( new AsyncSetText( he, Str ),
                     hWnd );


Если так делать — не работает.
Пробовал в том же месте где этот код не работает вставить просто: HTMLayoutSetElementInnerText16, HTMLayoutUpdateElement — все норм, но проблема в том что это место вызывается с GUI потока (обработка нажатие на линк/кнопку (неважно)). Попробуйте написать/изменить пример с моим классом.

Если ничего не получиться, соберу полноценный проект.

Заранее Спасибо!
С Уважением, AntiB
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.