Здравствуйте, algol, Вы писали:
A>Здравствуйте, cls, Вы писали:
cls>>Как реализовать вэббраузер на чистом апи с нуля и отловить событие DocumentComplete без MFC/ATL?
A>Если вообще с нуля, то: A>Embed an HTML control in your own window using plain C
A>Реально гораздо проще заюзать ATL-овский ActiveX контейнер CAxWindow. Это можно сделать и в чисто WinAPI приложении.
А если ATL использовать, то можно пример посмотреть?
Здравствуйте, cls, Вы писали:
cls>Как реализовать вэббраузер на чистом апи с нуля и отловить событие DocumentComplete без MFC/ATL?
у миранды есть модуль, который заменяет RichEdit чата на InternetExplorer_Server (или как там его). вот там как раз напрямую к WinAPI (правда код омг). называется IEView
Вдобавок хотелось бы знать, как после того, как я отловлю события, поменять ширину/высоту контрола(в коде put_width/height не работают) и проскроллить экран на заданное значение. Также хочу узнать, как убрать полосы прокрутки.
Здравствуйте, cls, Вы писали:
cls>Вдобавок хотелось бы знать, как после того, как я отловлю события, поменять ширину/высоту контрола(в коде put_width/height не работают) и проскроллить экран на заданное значение. Также хочу узнать, как убрать полосы прокрутки.
Как проскроллить на заданную подицию вертикально (сори, но код из реального проекта, но доточить до чистого WinAPI можно без особого труда)
Здравствуйте, cls, Вы писали:
cls>Также хочу узнать, как убрать полосы прокрутки.
В контейнере должен быть реализован IDocHostUIHandler. В его методе GetHostInfo(DOCHOSTUIINFO* pInfo) нужно вернуть флаг pInfo->dwFlags = DOCHOSTUIFLAG_SCROLL_NO
Здравствуйте, algol, Вы писали:
A>Здравствуйте, cls, Вы писали:
cls>>Также хочу узнать, как убрать полосы прокрутки.
A>В контейнере должен быть реализован IDocHostUIHandler. В его методе GetHostInfo(DOCHOSTUIINFO* pInfo) нужно вернуть флаг pInfo->dwFlags = DOCHOSTUIFLAG_SCROLL_NO
И всё таки, может кто скажет, как прикрутить к моему контейнеру отлавливание событий. Я вообще слабо представляю какие интерфейсы нужно в него добавить и какими функциями назначить приёменики для событий.
Здравствуйте, cls, Вы писали:
cls>Здравствуйте, algol, Вы писали:
A>>Здравствуйте, cls, Вы писали:
cls>>>Также хочу узнать, как убрать полосы прокрутки.
A>>В контейнере должен быть реализован IDocHostUIHandler. В его методе GetHostInfo(DOCHOSTUIINFO* pInfo) нужно вернуть флаг pInfo->dwFlags = DOCHOSTUIFLAG_SCROLL_NO
кстати, этот метод откючит скролл для всех случаев.
Альтернативный вариант — добавить в body scroll = 'auto'. Тогда скролл не появится, пока он не будет нужен.
cls>И всё таки, может кто скажет, как прикрутить к моему контейнеру отлавливание событий. Я вообще слабо представляю какие интерфейсы нужно в него добавить и какими функциями назначить приёменики для событий.
вот эти?
Как и все события..
Посмотри в ATL класс IDispEventImpl методы DispEventAdvise/DispEventUnadvise
Здравствуйте, sidorov18, Вы писали:
S>Здравствуйте, Carc, Вы писали:
C>>(сори, но код из реального проекта, но доточить до чистого WinAPI можно без особого труда)
S>Пробежался по коду.. S>А умными указателями нарочно не пользуетесь?
Код старый достаточно древний, там какая-то уж не помню заморочка была насчет smart pointers... "Сынок, солнце всходит и ничего не трогай". Да и вообще переписать на smart pointers две строки по моему не так уж и сложно.
Здравствуйте, cls, Вы писали:
S>>вот эти? S>>Как и все события.. S>>Посмотри в ATL класс IDispEventImpl методы DispEventAdvise/DispEventUnadvise
cls>Без ATL.
Ну посмотри, как там, и перенеси этот код))) внутри там все те же вызовы.
вообще технология называется Connection Point.
Здравствуйте, sidorov18, Вы писали:
S>Здравствуйте, cls, Вы писали:
S>>>вот эти? S>>>Как и все события.. S>>>Посмотри в ATL класс IDispEventImpl методы DispEventAdvise/DispEventUnadvise
cls>>Без ATL.
S>Ну посмотри, как там, и перенеси этот код))) внутри там все те же вызовы. S>вообще технология называется Connection Point.
А где именно внутри? Я ATL не пользовался раньше.
Здравствуйте, cls, Вы писали:
cls>Здравствуйте, sidorov18, Вы писали:
S>>Здравствуйте, cls, Вы писали:
S>>>>вот эти? S>>>>Как и все события.. S>>>>Посмотри в ATL класс IDispEventImpl методы DispEventAdvise/DispEventUnadvise
cls>>>Без ATL.
S>>Ну посмотри, как там, и перенеси этот код))) внутри там все те же вызовы. S>>вообще технология называется Connection Point. cls>А где именно внутри? Я ATL не пользовался раньше.
Здравствуйте, cls, Вы писали:
cls>А куда именно этот код переносить и, главное, где будет обработчик событий?
КО подсказывает — в свой код.
обработчик событий — это pUnk. он должен реализовать IDispatch.
pUnkCP — сама точка подключения.
iid — соответственно iid точки подключения.
pdw — это куки. используется при отключении.
Если непонятно рекомендую разобрать пример с IDispEventImpl на ATL.
Там все понятно.
Здравствуйте, cls, Вы писали:
cls>На пример бы взглянуть. Я вообще без понятия, куда в мой код и что вставлять. Ни разу толком не работал с этой технологией.