Здравствуйте, MOREBOBAH, Вы писали:
Можно сделать и так как ты хочешь:
class CMainFrame :
...
public htmlayout::event_handler
{
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
DefWindowProc(); //
HWND hwndLayoutView = ...;
HTMLayoutWindowAttachEventHandler(hwndLayoutView, htmlayout::event_handler::element_proc, this, this->subscribed_to);
}
}
В этом случае htmlayout::event_handler это твой CMainFrame, и вызов HTMLayoutWindowAttachEventHandler зарегистрирует его как DOM event handler для hwndLayoutView.
Добрый день.
В wtl проекте есть необходимость получать в CMainFrame уведомления о событиях из CHTMLView.
CHTMLView взят из примера browse.
Я так понимаю CMainFrame должен быть унаследован от CHTMLayoutHost и event_handler
class CMainFrame :
public CFrameWindowImpl<CMainFrame>,
public CHTMLayoutHost<CMainFrame>,
public CUpdateUI<CMainFrame>,
public CMessageFilter,
public CIdleHandler,
public htmlayout::event_handler
...
Вопрос в том, как подписаться на события?
К сожалению поиском ничего найти не смог.
Заранее благодарен за ответ.
Здравствуйте, MOREBOBAH, Вы писали:
MOR>Добрый день.
MOR>В wtl проекте есть необходимость получать в CMainFrame уведомления о событиях из CHTMLView.
MOR>CHTMLView взят из примера browse.
MOR>Я так понимаю CMainFrame должен быть унаследован от CHTMLayoutHost и event_handler
MOR>MOR>class CMainFrame :
MOR> public CFrameWindowImpl<CMainFrame>,
MOR> public CHTMLayoutHost<CMainFrame>,
MOR> public CUpdateUI<CMainFrame>,
MOR> public CMessageFilter,
MOR> public CIdleHandler,
MOR> public htmlayout::event_handler
MOR>...
MOR>
MOR>Вопрос в том, как подписаться на события?
MOR>К сожалению поиском ничего найти не смог.
MOR>Заранее благодарен за ответ.
http://www.terrainformatica.com/wiki/htmlayout/tutorial-basics-r#обработка-событий
И присмотритесь к классу htmlayout::event_handler. Вам сразу все станет понятно
Здравствуйте, tpuctah, Вы писали:
T>http://www.terrainformatica.com/wiki/htmlayout/tutorial-basics-r#обработка-событий
Спасибо за ссылку.
T>И присмотритесь к классу htmlayout::event_handler. Вам сразу все станет понятно 
Ну, наверное не сразу, но рано или поздно станет.
Здравствуйте, c-smile, Вы писали:
CS>А что такое "события" здесь? DOM events?
Ну да. Например, onsubmit, если бы это был mshtml.dll Или я в чём-то неправ?
Я хотел, что бы
virtual BOOL handle_event (HELEMENT he, BEHAVIOR_EVENT_PARAMS& params )
{...}
был в CMainFrame и туда приходили бы события из вида.
Сейчас сделал как в browse, события ловятся в виде, а при необходимости в CMainFrame отправляются уведомления
::SendMessage( GetParent(),WM_USERNOTIFY,0, 0 );
При условии, что все элементы DOM оттуда доступны мне этого более чем достаточно.
Такой подход верный?
Здравствуйте, c-smile, Вы писали:
CS>В этом случае htmlayout::event_handler это твой CMainFrame, и вызов HTMLayoutWindowAttachEventHandler зарегистрирует его как DOM event handler для hwndLayoutView.
Спасибо.