Посмотрел я HTMLayout — понравилось. Вещь, безусловно, нужная и полезная, но существует для меня одна проблема, а именно — проблема быстрого старта, что очень важно в наше время. Помнится, я под себя писал обертку к HtmEngine — не хочется проделывать еще раз подобное (я под деБилдером в основном пишу) только для того, чтобы сработаться с HTMLayout.
Посему появились несколько очень простых вопросов, буду признателен, если ты (или кто из имеющих дело с HTMLayout) осветишь их. Заранее благодарен. Собственно вопросы ниже.
*
Допустим, создал я окно энджины, загрузил туда html. В самом html описаны всякие css-menu, кнопочки и пр. Все отображается, все чудесно.
1. Как узнать, что кликнули на кнопу? Какой-то notification придет?
2. Как поменять caption кнопы? Подозреваю, что получением ссылки на элемент, и потом отсылом какого-то сообщения. Но только подозреваю
Пока, в общем, все. Я пока знакомлюсь с SDK, просто сейчас не хватает именно quick start guide. Оно очень нужно, потому как FAQ на сайте не совсем то, что требуется для начала.
Здравствуйте, Flamer, Вы писали:
F>2. Как поменять caption кнопы? Подозреваю, что получением ссылки на элемент, и потом отсылом какого-то сообщения. Но только подозреваю
Если есть хендл (HELEMENT) кнопочки — запросто.
В составе SDK есть изящная и качественная C++ обертка над HELEMENT — класс dom::element. ( у него см. метод void set_text(const wchar_t* t) )
F>Я пока знакомлюсь с SDK, просто сейчас не хватает именно quick start guide. Оно очень нужно, потому как FAQ на сайте не совсем то, что требуется для начала.
+1
Здравствуйте, Flamer, Вы писали:
F>Пока, в общем, все. Я пока знакомлюсь с SDK, просто сейчас не хватает именно quick start guide. Оно очень нужно, потому как FAQ на сайте не совсем то, что требуется для начала.
Если ты набросаешь примерно вопросы-темы для quick start, то я здесь (в форуме) напишу по-русски ночью.
[]
ЗХ>Если ты набросаешь примерно вопросы-темы для quick start, то я здесь (в форуме) напишу по-русски ночью.
Да запросто. Вопрос, собственно, такой: есть htmlayout.dll и набор заголовочников. Все, мне больше ничего не нужно (lib, классы и пр.).
Пока интересует следующая минимальная вещь с этим набором: загрузить html с кнопкой, получить событие по клику на кнопке, поменять заголовок на кнопке из этого события.
А с созданием окна, GetProcAddress и пр. — я уж разберусь. Меня интересует именно "выкусанный из центра" пример. Чтобы без оберток пока, что поможет лучшему пониманию принципов работы с энджиной.
Я для чего все это — просто, если я еще сильнее впечатлюсь behavior'ами в HTMLayout — то чувствую, что мне придется писать компонент для деБилдера (как было в свое время с HTMEngine). А для этого надо набор функциональных вещей, одна из которых — события из UI (клики на кнопах, событие смены выделения в select и пр., вроде динамического добавления html после выбранного элемента. К слову — а такое можно сделать?).
Потому как уже давно руки чешутся перетащить нафик весь UI на WEB-alike движок. Чтобы внутри проги была только логика, а не тонны кода по отработке интерфейса.
И тут Остапа понесло (понятные вещи помечены +, непонятные — ?):
1. Загрузить dll энджины (+)
2. Создать ее окно (+)
3. Загрузить в энджину html (+)
4. Подписаться/отписаться на события от всех элементов (?)
5. Подписаться/отписаться на события от одного элемента (?)
6. Создать/описать/отказаться от/изменить behavior в уже загруженном html (?)
7. Добавить элемент в нужное место (?)
8. Удалить элемент (?)
9. Поменять рисунок — <img.src='....'> (?)
10. Сделать disable/enable элементу (?)
11. Поменять выбор у <select> (?)
12. Чекнуть/дечекнуть чекбокс (?)
13. Развернуть/свернуть/удалить/добавить узел/все узлы у treeview (?)
14. Пробежаться во всем элементам формы и получить/установить их значения (?)
15. Реализовать поведение как у заголовка окна для элемента — т.е. при зажатой на элементе мыши чтобы перетаскивание всего окна работало (для скинования) (?)
16. Простейший behavior для кнопок: 4 своих рисунка для отображения всех состояний (enabled, disabled, mouse over, normal) (?)
Пока вроде все
В случае вопросов 11 и 13 понятно, что общего решения нет, т.к. могут использоваться и стандартные контролы, и behavior, однако интересует именно вопрос отдачи нужного поведения на откуп энджине — т.е. прописан css, а из проги уже запрашиваются какие-либо действия.
Еще раз обращу внимание, что интересует именно механизм без оберток, т.е. простой вызов функций из dll. Кода я не требую, достаточно просто указания цепочки вызовов.
Думаю, такая справочная информация будет полезна не только мне.
[]
Tom>Ребята, обьясните, чесно не понимаю зачем оно надо, когда есть WebBrowser Control?
А ты когда-нибудь пробовал на этом чудовище строить полноценный интерфейс? Этож ужоснафик.
В отличие от WebBrowser Control HTMLayout предоставляет кучу разных вкусностей, вроде css-behaviors. Советую просто зайти на terrainformatica.com, скачать его и посмотреть примеры. Так будет сильно проще, чем объяснять, почему бензопила лучше, чем кремниевый топор
А Андрею aka c-smile — огромнейший респект за проделанную работу
Вообще, многие вопросы снимаются, если прочитать все заголовочные файлы из \include.
Там хорошие комментарии и многое становиться понятно.
F>4. Подписаться/отписаться на события от всех элементов (?)
см http://www.terrainformatica.com/htmlayout/behaviors.whtm
и функцию HTMLayoutWindowAttachEventHandler из htmlayout_dom.h
F>5. Подписаться/отписаться на события от одного элемента (?) F>6. Создать/описать/отказаться от/изменить behavior в уже загруженном html (?)
htmlayout_dom.h:
/** Attach/Detach ElementEventProc to the element
See htmlayout::event_handler.
**/
EXTERN_C HLDOM_RESULT HLAPI HTMLayoutAttachEventHandler( HELEMENT he, LPELEMENT_EVENT_PROC pep, LPVOID tag );
EXTERN_C HLDOM_RESULT HLAPI HTMLayoutDetachEventHandler( HELEMENT he, LPELEMENT_EVENT_PROC pep, LPVOID tag );
или определяешь у элемента стиль <div style="behavior:myTest"> и в обработчике HLN_ATTACH_BEHAVIOR
подключаешь свой BEHAVIOR — фактически это специальная callback функция которая будет обрабатывать события :
/**Element callback function for all types of events. Similar to WndProc
* \param tag \b LPVOID, tag assigned by HTMLayoutAttachElementProc function (like GWL_USERDATA)
* \param he \b HELEMENT, this element handle (like HWND)
* \param evtg \b UINT, group identifier of the event, value is one of EVENT_GROUPS
* \param prms \b LPVOID, pointer to group specific parameters structure.
* \return TRUE if event was handled, FALSE otherwise.
**/typedef BOOL CALLBACK ElementEventProc(LPVOID tag, HELEMENT he, UINT evtg, LPVOID prms );
F>7. Добавить элемент в нужное место (?)
HTMLayoutInsertElement F>8. Удалить элемент (?)
/**Delete element.
* \param[in] he \b #HELEMENT
* \return \b #HLDOM_RESULT
*
* This function removes element from the DOM tree and then deletes it.
*
* \warning After call to this function \c he will become invalid.
**/
EXTERN_C HLDOM_RESULT HLAPI HTMLayoutDeleteElement(HELEMENT he);
F>9. Поменять рисунок — <img.src='....'> (?)
Поменять рисунок — это изменить заначение аттрибута (HTMLayoutSetAttributeByName)
Можно еще описать несколько разных стилей с рисунками и менять стили. F>11. Поменять выбор у <select> (?)
HTMLayoutControlSetValue. F>12. Чекнуть/дечекнуть чекбокс (?) F>10. Сделать disable/enable элементу (?)
HTMLayoutSetElementState STATE_CHECKED и
EXTERN_C HLDOM_RESULT HLAPI HTMLayoutSetElementState( HELEMENT he, UINT stateBitsToSet, UINT stateBitsToClear, BOOL updateView);
enum ELEMENT_STATE_BITS
{
STATE_LINK = 0x0001, // selector :link, any element having href attribute
STATE_HOVER = 0x0002, // selector :hover, element is under the cursor, mouse hover
STATE_ACTIVE = 0x0004, // selector :active, element is activated, e.g. pressed
STATE_FOCUS = 0x0008, // selector :focus, element is in focus
STATE_VISITED = 0x0010, // selector :visited, aux flag - not used internally now.
STATE_CURRENT = 0x0020, // selector :current, current item in collection, e.g. current <option> in <select> STATE_CHECKED = 0x0040, // selector :checked, element is checked (or selected), e.g. check box or itme in multiselect
STATE_DISABLED = 0x0080, // selector :disabled, element is disabled, behavior related flag.
STATE_READONLY = 0x0100, // selector :read-only, element is read-only, behavior related flag.
STATE_EXPANDED = 0x0200, // selector :expanded, element is in expanded state - nodes in tree view e.g. <options> in <select>
STATE_COLLAPSED= 0x0400, // selector :collapsed, mutually exclusive with EXPANDED
STATE_INCOMPLETE = 0x0800, // selector :incomplete, element has images (back/fore/bullet) requested but not delivered.
STATE_ANIMATING = 0x00001000, // selector :animating, is currently animating
STATE_FOCUSABLE = 0x00002000, // selector :focusable, shall accept focus
STATE_ANCHOR = 0x00004000, // selector :anchor, first element in selection (<select miltiple>), STATE_CURRENT is the current.
STATE_SYNTHETIC = 0x00008000, // selector :synthetic, synthesized DOM elements - e.g. all missed cells in tables (<td>) are getting this flag
STATE_OWNS_POPUP = 0x00010000, // selector :owns-popup, anchor(owner) element of visible popup.
STATE_TABFOCUS = 0x00020000, // selector :tab-focus, element got focus by tab traversal. engine set it together with :focus.
STATE_EMPTY = 0x00040000, // selector :empty - element is empty.
STATE_BUSY = 0x00080000, // selector :busy, element is busy. HTMLayoutRequestElementData will set this flag if
// external data was requested for the element. When data will be delivered engine will reset this flag on the element.
STATE_POPUP = 0x40000000, // this element is in popup state and presented to the user - out of flow now
STATE_PRESSED = 0x04000000, // pressed - close to active but has wider life span - e.g. in MOUSE_UP it
// is still on, so behavior can check it in MOUSE_UP to discover CLICK condition.
};
F>14. Пробежаться во всем элементам формы и получить/установить их значения (?)
Сначала в HTMLayoutSelectElements передаешь callback который будет срабатывать на каждый элемент.
Затем HTMLayoutControlGetValue\HTMLayoutControlSetValue для нужных тегов.
/**Call specified function for every element in a DOM that meets specified
* CSS selectors.
* See list of supported selectors: http://terrainformatica.com/htmlayout/selectors.whtm
* \param[in] he \b #HELEMENT
* \param[in] selector \b LPCSTR, comma separated list of CSS selectors, e.g.: div, #id, div[align="right"].
* \param[in] callback \b #HTMLayoutElementCallback*, address of callback
* function being called on each element found.
* \param[in] param \b LPVOID, additional parameter to be passed to callback
* function.
* \return \b #HLDOM_RESULT
*
**/
EXTERN_C HLDOM_RESULT HLAPI HTMLayoutSelectElements(
HELEMENT he,
LPCSTR CSS_selectors,
HTMLayoutElementCallback*
callback,
LPVOID param);
F>16. Простейший behavior для кнопок: 4 своих рисунка для отображения всех состояний (enabled, disabled, mouse over, normal) (?)
Это скорее через CSS. behavior опрделяет поведение, а за отображение отвечают стили.
Вообще, для всех этих функций есть удобные обертки ввиде классов — и тебе на билдере их использовать не проблема.
Другое дело мне — для Delphi приходится заново все обертки писать
Советую також глянтуь на Sciter. Конкретно на xsciter.dll — как встраиваемый движок.
Пример: sciter-sdk\api\samples\win32\basic это простой win32 проект — как его встраивать.
xsciter.dll в принципе позволяет все то что может htmlayout но за счет наличия
встроенного скрипта может делать больше.
Например логика обработки событий в UI может быть исполнена в скриптах выдавая наружу только главные события или методы.
Скажем есть sciter окно (HWND) в который загружен документ
<html>
<script type="text/tiscript">
var sandbox = self.select("#sandbox"); // get element by CSS selector.
// this function will be called from code of application and will
// return value to the application
function showSomething(message)
{
sandbox.html = message;
sandbox.update();
return "yep!";
}
</script>
<body>
<div id="sandbox"></div>
</body>
</html>
Методы описанные в этом документе вызываемы снаружи c помощью простой функции SciterCall:
С++:
json::value argv(L"Hello <b>Sciter</b>!"); // вектор аргументов (один элемент здесь)
json::value ret; // возвращаемое значение.
SciterCall(hWndOfTheSciter,"showSomething",1,&arg,&ret);
В данном случае после возврата из SciterCall в ret будет лежать строка "yep!";
В принципе достаточно легко.
Приложение также может добавлять свои native классы в namespace скрипта (уже есть в TIScript и будет в след. билде Sciter) и также получать события сгенерированные в скриптовом коде — view.raiseEvent(...params..) (тоже в следующем билде).
Sciter имеет смысл использовать в приложениях где например требуется "кастомизация" UI и логики обработки включительно.
[]
CS>Советую також глянтуь на Sciter. Конкретно на xsciter.dll — как встраиваемый движок.
Спасибо, интересно. А лицензия на него какая? Что-то сходу не нашел. Потому как вещь очень интересная, т.к. я уже давно юзаю скриптинг на JavaScript в прилагах, но, сам понимаешь, что наличие такой вещи, как HTMLayout, обязывает переползать на нее, особенно в свете Sciter.
CS>Sciter имеет смысл использовать в приложениях где например требуется "кастомизация" UI
Почему кастомизация в кавычках? Давай поясняй, т.к. этот вопрос тоже интересен.
З.Ы. Слушай, ты монстр. Нет, правда — столько рульных вещей сделал. Видимо, это тот редкий случай, когда для всех в сутках 24 часа, а у тебя — как минимум 48. Я про талант, в общем Принимай проявление искреннего уважения
Здравствуйте, Tom, Вы писали:
F>>Еще раз спасибо.
Tom>Ребята, обьясните, чесно не понимаю зачем оно надо, когда есть WebBrowser Control?
WebBrowser — это internet browser завернутый в компонент. Его использование
оправдано в том случае если в программе нужно сделать окно для просмотра интернет.
Что достаточно редкий случай — смотреть(читать) интернет пользователю надо давать его любимым броузером.
htmlayout это в принципе иная вещь — это встраиваемое средство исполнения UI описанного как HTML/CSS.
Встраиваемость это принципиальное отличие. Приложение должно иметь возможность как сформировать
свои данные скажем картинку для <img src="myapp:diagram.bmp"> так например влезть внутрь DOM и сказать
вот этот элемент будет теперь рисоваться моей функцией Foo.
В принципе htmlayout для приложения это конструктор UI элементов (DOM elements)
1) задаваемых в основном декларативно (HTML/CSS)
2) упраляемых приложением напрямую.
Я уже приводил пример Symantec. Norton AV 2007 и Norton NIS 2007 сделаны на HTMLayout.
WebBrowser даже и не рассматривался как опция по очевидным соображениям security и пр.
Далее — вчера WebBrowser это одно (IE6) а сегодня это уже IE7 — некоторые функции перестали работать вообще.
Про встраиваемость еще:
Главная задача разработчиков WebBrowser (броузера общего назначения) это безопасность процесса просмотра Интернет.
В случае же UI твоего приложения такая модель security просто не нужна — только мешает.
Задача HTMLayout как встраиваемой сущности обеспечить возможность приложению взаимодействовать с деревом UI объектов фактически напрямую. Здесь же наличие возможности приложению определять поведение DOM объектов (вплоть до рисования оных) в своем коде.
Здравствуйте, Flamer, Вы писали:
F>Здравствуйте, c-smile, Вы писали:
F>[]
CS>>Советую також глянтуь на Sciter. Конкретно на xsciter.dll — как встраиваемый движок.
F>Спасибо, интересно. А лицензия на него какая? Что-то сходу не нашел. Потому как вещь очень интересная, т.к. я уже давно юзаю скриптинг на JavaScript в прилагах, но, сам понимаешь, что наличие такой вещи, как HTMLayout, обязывает переползать на нее, особенно в свете Sciter.
CS>>Sciter имеет смысл использовать в приложениях где например требуется "кастомизация" UI
F>Почему кастомизация в кавычках? Давай поясняй, т.к. этот вопрос тоже интересен.
кастомизация в кавычках это что-бы Влад не цеплялся. Нет такого слова в языке программирования RL.
F>З.Ы. Слушай, ты монстр. Нет, правда — столько рульных вещей сделал. Видимо, это тот редкий случай, когда для всех в сутках 24 часа, а у тебя — как минимум 48. Я про талант, в общем Принимай проявление искреннего уважения
Да ну фигня это (про монстра). Не сказал бы что я уж особенно как-то производителен. В общем наверное как все.
За уважение спасибо.
В дополнение к тому что правильно изложил Денис:
F>1. Загрузить dll энджины (+) F>2. Создать ее окно (+) F>3. Загрузить в энджину html (+) F>4. Подписаться/отписаться на события от всех элементов (?)
Узнать enabled ли элемент — т.е. он сам enabled и все его контейнеры enabled —
element.enabled()
F>11. Поменять выбор у <select> (?)
element.set_value(const json::value& v)
+ все <option> это тоже DOM elements.
Выбранный элемент — option.get_state(STATE_CHECKED);
Текущий элемент — option.get_state(STATE_CURRENT);
F>12. Чекнуть/дечекнуть чекбокс (?)
element.set_value(const json::value& v)
F>13. Развернуть/свернуть/удалить/добавить узел/все узлы у treeview (?)
И вот фрагмент из sciter SDK создания деревянной структуры ( sciter-sdk/sdk/lib/behaviors/tree.tis )
function Tree.append(val, caption, parentNode)
{
var node = null;
switch( typeof val )
{
case #object:
node = new Element(#options ); node.setState(Element.STATE_EXPANDED);
parentNode.insert(node);
node.html = String.printf("<caption><var>%s</var>:{}</caption>", caption);
for( var k in val)
this.append(val[k], k, node);
break;
case #array:
node = new Element(#options); node.setState(Element.STATE_EXPANDED);
parentNode.insert(node);
node.html = String.printf("<caption><var>%s</var>:[]</caption>", caption);
for( var i = 0; i < val.length; ++i )
this.append(val[i], i.toString() , node);
break;
default:
node = new Element(#option);
parentNode.insert(node);
node.html = String.printf("<caption><var>%s</var>:%v</caption>", caption, val);
break;
}
}
это используется для показа структуры JSON ответа пришедешего от yahoo
(sciter-sdk\samples\communications\jahoo-rpc\)
В С++ это будет выглядить примерно так же.
F>14. Пробежаться во всем элементам формы и получить/установить их значения (?)
См. файл sdk\include\behaviors\behavior_form.cpp — это оно.
F>15. Реализовать поведение как у заголовка окна для элемента — т.е. при зажатой на элементе мыши чтобы перетаскивание всего окна работало (для скинования) (?)
См пример sdk\skin\ файл window.cpp
int window::hit_test( int x, int y )
{
POINT pt; pt.x = x; pt.y = y;
::MapWindowPoints(HWND_DESKTOP,hwnd,&pt,1);
if( caption.is_valid() && caption.is_inside(pt) )
returnHTCAPTION;
...
}
F>16. Простейший behavior для кнопок: 4 своих рисунка для отображения всех состояний (enabled, disabled, mouse over, normal) (?)
Превратит все ячейки таблицы <table id="mytable"> в кнопки.
Тебе останется лишь ловить события BUTTON_CLICK.
F>Пока вроде все
Обрати еще внимание что
1) к одному DOM элементу может быть прицеплен не один behavior а несколько.
Например htmlayoutsdk\include\behaviors\behavior_select_checkmark.cpp будучи сцеплен на одном элементе с
behavior:select образует дерево с чекбоксами
2) также обрати внимание на то что event_handler может быть использован для привязки твоей собсвенной структуры
данных к конкретному элементу. Например behavior_form.cpp создает для каждого instance отдельную структуру данных.
3) стандартные controls это такие же DOM элементы c соотв. behaviors.
Связка например <input type="text"> с behavior:edit выполняется в CSS в т.н. master style sheet :
На самом деле это мега интересно, спа сибо за пояснения, но в них пока видны аргументы:
1. При изменении IE могут отвалиться некоторые функции
2. IE конечно немного монстрообразен
3. Секурити, частично согласен
4. Возможности отображения, а что они у IE меньше? Можно чуть чуть по подробее
Ещё встаёт вопрос о поддержке HTML/CSS насколько она полная в HTMLLayout, ибо идея делать один и тот же HTML для Desktop и WEB приложений — очень заманчива...
[]
CS>Да ну фигня это (про монстра). Не сказал бы что я уж особенно как-то производителен. В общем наверное как все. CS>За уважение спасибо.
Знаешь, видимо, формализовалось наконец: HTMLayout — это по всем прикидкам именно та вещь, с которой строить UI в майкрософтовской студии мне будет не противно, а даже наоборот.
А ведь именно геморрой с UI отвращал меня от студии так долго (нет, я на ней пишу, не подумайте чего, просто удовольствия от возни с UI там нету ).
Так что появление HTMLayout прошу считать поворотной точкой для многих девелоперов ( (мечтательно) вот бы еще дельфистов отучить каку юзать ).
Я к чему это все: не буду я писать компонент под деБилдер, ибо нефик. При тех бенефитах, что дает твой движок, это будет грех
Здравствуйте, Tom, Вы писали:
Tom>На самом деле это мега интересно, спа сибо за пояснения, но в них пока видны аргументы: Tom>1. При изменении IE могут отвалиться некоторые функции Tom>2. IE конечно немного монстрообразен Tom>3. Секурити, частично согласен Tom>4. Возможности отображения, а что они у IE меньше? Можно чуть чуть по подробее
Набор foreground-*** атрибутов
— эквиваленты background-*** атрибутов. т.е один элемент может иметь два image.
— упрощает структуру DOM, часто значительно.
animations в CSS
— не супер конечно, но базовые эффекты типа blend и slide
задаются простым объявлением и без лишней головной боли и тонн кода на JS.
(Попрут меня отсюда чую, и правильно сделают)
Tom>Ещё встаёт вопрос о поддержке HTML/CSS насколько она полная в HTMLLayout, ибо идея делать один и тот же HTML для Desktop и WEB приложений — очень заманчива...
Есть баго-фичи в основном с замороченными правилами float атрибута. Из-за float я ACID2 тест не пройду и не хочу.
HTML один и тот же использовать можно но на десктопе можно гораздо больше сделать.
Во всяком случае существующий инструментарий и навыки HTML/CSS разработки пригодятся точно.
Tom>Статью бы!
А статью про что? Какие темы там имеет смысл осветить?
Здравствуйте, CSS, Вы писали:
CSS>Здравствуйте, Denis_TST, Вы писали:
D_T>>Другое дело мне — для Delphi приходится заново все обертки писать
CSS>А не мог бы ты их выложить?
Конечно.Здесь (Настрой otput для exe в каталог с HTMLLayout.dll из SDK)
Только там далко не полный перевод, я сделал только заголовочные файлы, и частичные
аналоги врапперов, фактически только то что мне нужно на момент. Остальное переношу по необходимости,
например у Behaviour реализовал только HANDLE_MOUSE и HANDLE_BEHAVIOR_EVENT:
function TElementBehaviour.ElementEventProc(he: HElement; evtg: UINT; prms: pointer): boolean;
var
MouseData: PMouseParams;
EventParams: PBEHAVIOR_EVENT_PARAMS;
begin
case evtg of
HANDLE_INITIALIZATION: ;
HANDLE_MOUSE:
begin
MouseData := PMouseParams(prms);
Result := OnMouse(he, MouseData);
end;
HANDLE_KEY: ;
HANDLE_FOCUS:
begin
end;
HANDLE_SCROLL: ;
HANDLE_TIMER: ;
HANDLE_SIZE: ;
HANDLE_BEHAVIOR_EVENT:
begin
EventParams := PBEHAVIOR_EVENT_PARAMS(prms);
Result := OnHandleEvent(he, EventParams);
end;
HANDLE_DRAW: ;
HANDLE_DATA_ARRIVED: ;
HANDLE_METHOD_CALL: ;
end;
end;
Вообще, обертку нужно было делать для Sciter — тк изза поддержки можно уменьшь объем кода котрый нужно переносить из С.
Здравствуйте, Denis_TST, Вы писали:
D_T>Здравствуйте, CSS, Вы писали:
CSS>>Здравствуйте, Denis_TST, Вы писали:
D_T>>>Другое дело мне — для Delphi приходится заново все обертки писать D_T>Вообще, обертку нужно было делать для Sciter — тк изза поддержки можно уменьшь объем кода котрый нужно переносить из С.
Вообще, обертку нужно было делать для Sciter — тк из за поддержки скриптов, можно уменьшь объем кода, котрый нужно переносить из С.
Здравствуйте, Denis_TST, Вы писали: D_T>Конечно.Здесь (Настрой otput для exe в каталог с HTMLLayout.dll из SDK) D_T>Вообще, обертку нужно было делать для Sciter — тк изза поддержки можно уменьшь объем кода котрый нужно переносить из С.