HTMLayout и tabs
От: McGor Россия  
Дата: 28.11.07 15:36
Оценка:
Доброго времени суток !
Недавно попробавал возможности HTMLayout — библиотека классная!
Суть вопроса такая: пытаюсь создать на WTL приложение использующее HTMLayout (такое же как browse),
вроде работает со всеми примерами, но с закладками не работает (html_samples\forms\tabs.htm).
Знаю что где то что-то недоделал/недопонял, но не пойму что

html файл :
html_samples\forms\tabs.htm

код приложения:
.h файл
class CMainDlg : public CDialogImpl<CMainDlg>,
public CHTMLayoutHost<CMainDlg>,
htmlayout::event_handler
{
public:
CMainDlg() : event_handler(HANDLE_BEHAVIOR_EVENT){}

BEGIN_MSG_MAP(CMainDlg)
CHAIN_TO_HTMLAYOUT()
...
END_MSG_MAP()

CHTMLayoutCtrl m_htmlView;
virtual BOOL on_event (HELEMENT he, HELEMENT target, BEHAVIOR_EVENTS type, UINT_PTR reason);
...
}

.cpp файл
LRESULT CMainDlg::OnInitDialog(...)
{
m_htmlView.CreateLayout(*this, rcClient, NULL, WS_CHILD | ...);
SetCallback();
if(!m_htmlView.OpenFile(_T("test.htm")))
...
attach_event_handler(dom::element::root_element(m_htmlView.m_hWnd), this);
...
}

BOOL
CMainDlg::on_event(HELEMENT he, HELEMENT target, BEHAVIOR_EVENTS type, UINT_PTR reason)
{
// Если клацать по button, check-box и т.д. сюда все доходит нормально
// Если по закладкам (tabs) всё тихо
switch (type)
...
}

По нажатию на таб ничего не происходит(ни переключения, ни нотификации), содержимое таба не отоброжается.
Что не так ???
Спасибо.
McGor
Re: HTMLayout и tabs
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 28.11.07 15:52
Оценка:
Здравствуйте, McGor, Вы писали:

MG>По нажатию на таб ничего не происходит(ни переключения, ни нотификации), содержимое таба не отоброжается.


Наивный вопрос: behavior_tabs.cpp в проект добавил?
Хорошо там, где мы есть! :)
Re[2]: HTMLayout и tabs
От: McGor Россия  
Дата: 28.11.07 16:26
Оценка:
Здравствуйте, ShaggyOwl, Вы писали:

SO>Наивный вопрос: behavior_tabs.cpp в проект добавил?


Нет ... но его я также не обнаружил и в solution'e browse.
Подключить, а потом что ...
McGor
Re[3]: HTMLayout и tabs
От: ShaggyOwl Россия http://www.rsdn.org
Дата: 28.11.07 16:47
Оценка:
Здравствуйте, McGor, Вы писали:

SO>>Наивный вопрос: behavior_tabs.cpp в проект добавил?


MG>Нет ... но его я также не обнаружил и в solution'e browse.

Этот файл находится в HTMLayoutSDK\include\behaviors\
Добавь его в проект.

MG>Подключить, а потом что ...


По симптомам, есть предположение, что у тебя в программе не подключен behavior tabs (это поведение не встроено в HTMLayout, а подключается пользователем самостоятельно)
После включении файла, во время запуска программы будет создан экземпляр этого behavior и далее, при загрузке html подключен к соответствующему DOM-элементу.

Если интересны детали, посмотри Зверьковские статьи
http://www.terrainformatica.com/wiki/doku.php?id=htmlayout:tutorial-basics-r
http://www.rsdn.ru/forum/message/2240494.1.aspx
Автор: Зверёк Харьковский
Дата: 29.11.06
Хорошо там, где мы есть! :)
Re[4]: HTMLayout и tabs
От: McGor Россия  
Дата: 29.11.07 12:10
Оценка:
Здравствуйте, ShaggyOwl, Вы писали:

SO>По симптомам, есть предположение, что у тебя в программе не подключен behavior tabs (это поведение не встроено в HTMLayout, а подключается пользователем самостоятельно)

SO>После включении файла, во время запуска программы будет создан экземпляр этого behavior и далее, при загрузке html подключен к соответствующему DOM-элементу.

SO>Если интересны детали, посмотри Зверьковские статьи

SO>http://www.terrainformatica.com/wiki/doku.php?id=htmlayout:tutorial-basics-r
SO>http://www.rsdn.ru/forum/message/2240494.1.aspx
Автор: Зверёк Харьковский
Дата: 29.11.06


Спасибо , за направление на путь истинный
Подключил behaviors/behavior_tabs.cpp.
Но всё равно закладки не переключались и содержимое не отоброжаллось ... CHTMLayoutHost::callback -> CHTMLayoutHost::OnHtmlNotify никогда не вызывался, соответственно HLN_ATTACH_BEHAVIOR не обрабатывался.
Проблема была в том что я наследовался от CHTMLayoutHost и event_handler , НО ВМЕСТО public CDialogImpl<CMainDlg, CHTMLayoutCtrl>, было CDialogImpl<CMainDlg> , а CHTMLayoutCtrl был как член класса.

вот код который заработал
.h
class CMainDlg :public CDialogImpl<CMainDlg, CHTMLayoutCtrl>,
public CHTMLayoutHost<CMainDlg>,
public htmlayout::event_handler
{
...
//CHTMLayoutCtrl m_htmlView;
...
}

.cpp
#include <behaviors/behavior_tabs.cpp>
...
LRESULT CMainDlg::OnInitDialog(...)
{
//m_htmlView.CreateLayout(*this, rcClient, NULL, WS_CHILD | ...);
SetCallback();
if(!/*m_htmlView.*/OpenFile(_T("test.htm")))
...
attach_event_handler(dom::element::root_element(/*m_htmlView.*/m_hWnd), this);
...
}

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