Re[3]: Подписаться на события в CMainFrame
От: c-smile Канада http://terrainformatica.com
Дата: 25.11.09 19:58
Оценка: 2 (1)
Здравствуйте, 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.
Подписаться на события в CMainFrame
От: MOREBOBAH  
Дата: 21.11.09 11:48
Оценка:
Добрый день.
В 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
...

Вопрос в том, как подписаться на события?
К сожалению поиском ничего найти не смог.
Заранее благодарен за ответ.
Re: Подписаться на события в CMainFrame
От: tpuctah  
Дата: 23.11.09 09:55
Оценка:
Здравствуйте, 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. Вам сразу все станет понятно
Re: Подписаться на события в CMainFrame
От: c-smile Канада http://terrainformatica.com
Дата: 23.11.09 23:23
Оценка:
Здравствуйте, MOREBOBAH, Вы писали:

MOR>Вопрос в том, как подписаться на события?


А что такое "события" здесь? DOM events?
Re[2]: Подписаться на события в CMainFrame
От: MOREBOBAH  
Дата: 25.11.09 19:12
Оценка:
Здравствуйте, tpuctah, Вы писали:

T>http://www.terrainformatica.com/wiki/htmlayout/tutorial-basics-r#обработка-событий

Спасибо за ссылку.

T>И присмотритесь к классу htmlayout::event_handler. Вам сразу все станет понятно

Ну, наверное не сразу, но рано или поздно станет.
Re[2]: Подписаться на события в CMainFrame
От: MOREBOBAH  
Дата: 25.11.09 19:32
Оценка:
Здравствуйте, 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 оттуда доступны мне этого более чем достаточно.
Такой подход верный?
Re[4]: Подписаться на события в CMainFrame
От: MOREBOBAH  
Дата: 27.11.09 18:26
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>В этом случае htmlayout::event_handler это твой CMainFrame, и вызов HTMLayoutWindowAttachEventHandler зарегистрирует его как DOM event handler для hwndLayoutView.

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