Здравствуйте, dr.Benzin, Вы писали:
DB>Не получается вызвать из плюса, tiscript'овую функцию. Для простоты, в качестве плюсового кода использовал исходники сэмпла 'minimal' из Sciter SDK. Модифицировал их следующим образом:
...
Дело в том что global namespace (tiscript::get_global_ns(vm))
это не то место где живут объекты загруженного документа.
При загрузке документа для него создается свой namespace (что есть обычный объект — "вешалка")
В этом ns живут такие объекты как self и view.
Проблема в том что я забыл выставить наружу метод:
SCDOM_RESULT SCAPI SciterGetElementNamespace( HELEMENT he, tiscript_value* pval);
Завтра буду делать билд — появится.
Последовательность такая:
SciterLoadFile(hwnd, L"sample.htm");
HELEMENT root = dom::element::root_element(hwnd);
std::string functionName("foo");
tiscript::VM* vm = SciterGetVM(hwnd);
tiscript::pinned func(vm);
tiscript::value ns; SciterGetElementNamespace(root,&ns);
....
func = tiscript::get_prop(vm, ns, functionName.c_str());