Я пробовал делать GUI приложения с помощью MFC (показался очень сложным и громоздким) и QT (приложения работали медленно). Очень недоставало удобного инструмента для создания GUI приложений. В Хакере прочел о Скайтере. Возникли следующие вопросы:
— можно ли Sciter использовать для создания GUI приложений на C/C++?
— есть ли не очень сложные примеры приложений на C/C++, у которых интерфейс создан на Скайтере (радиокнопки, выпадающие списки, текстбоксы и др.)?
— насколько сложно освоить Скайтер применительно к созданию GUI приложений на C/C++?
Здравствуйте, tumanovalex, Вы писали:
T>Я пробовал делать GUI приложения с помощью MFC (показался очень сложным и громоздким) и QT (приложения работали медленно). Очень недоставало удобного инструмента для создания GUI приложений. В Хакере прочел о Скайтере. Возникли следующие вопросы:
T>- можно ли Sciter использовать для создания GUI приложений на C/C++?
Да, для этого оно и делалось. C++ может как управлять отдельными DOM элементами (micro-management), так и вызывать функции скрипта (macro-management), а тот уже упрравляет UI.
T>- есть ли не очень сложные примеры приложений на C/C++, у которых интерфейс создан на Скайтере (радиокнопки, выпадающие списки, текстбоксы и др.)?
| Пример не самого сложного Sciter UI |
|
Это inspector.exe — DOM/Style/Script explorer для отладки Sciter UI. inspector.exe это сугубо Sciter UI и есть. |
| |
SDK качаем отсюда
http://www.terrainformatica.com/sciter/main.whtm
В SDK как примеры приложений так и примеры UI. Запустить {sdk}/bin/sciter.exe, а в нем открывать примеры {sdk}/samples/forms/
T>- насколько сложно освоить Скайтер применительно к созданию GUI приложений на C/C++?
Прочитай статью
http://www.codeproject.com/Articles/859098/Sciter-multiplatform-embeddable-HTML-CSS-scripting
И
Sciter integration in 21 minutes и
Sciter UI, application architecture
Свисти если вопросы будут.
Здравствуйте, tumanovalex, Вы писали:
T>- насколько сложно освоить Скайтер применительно к созданию GUI приложений на C/C++?
Sciter "Hello World" пример.
В {sdk}/demos/uminimal/
| Весь код этого примера |
| #include "sciter-x-window.hpp"
#include <functional>
// native API demo
// native functions exposed to script
//static int native_sum(int a, int b) { return a + b; }
//static int native_sub(int a, int b) { return a - b; }
static sciter::value native_api() {
sciter::value api_map;
sciter::value api_math_map;
std::function<int(int,int)> native_sum = [](int a, int b) { return a + b; };
std::function<int(int,int)> native_sub = [](int a, int b) { return a - b; };
api_math_map.set_item(sciter::value("sum"), sciter::vfunc( native_sum ));
api_math_map.set_item(sciter::value("sub"), sciter::vfunc( native_sub ));
api_map.set_item(sciter::value("math"), api_math_map);
/*
return {
math: {
sum: {native_sum},
sub: {native_sub},
}
}
*/
return api_map;
}
class frame: public sciter::window {
public:
frame() : window(SW_TITLEBAR | SW_RESIZEABLE | SW_CONTROLS | SW_MAIN | SW_ENABLE_DEBUG) {}
BEGIN_FUNCTION_MAP
FUNCTION_0("helloWorld", helloWorld);
FUNCTION_0("nativeApi", native_api);
END_FUNCTION_MAP
sciter::string helloWorld() { return WSTR("Hello u-minimal World"); }
};
#include "resources.cpp" // ресурсы из папки /res/ упакованные packfolder.exe
int uimain(std::function<int()> run ) {
sciter::archive::instance().open(aux::elements_of(resources)); // bind resources[] (defined in "resources.cpp") with the archive
frame *pwin = new frame(); // создаем окно
// note: this:://app URL is dedicated to the sciter::archive content associated with the application
pwin->load( WSTR("this://app/main.htm") ); // загружаем "морду лица" в него из ресурсов
//pwin->load( WSTR("file:///home/andrew/Desktop/test.htm") ); // или с диска
pwin->expand(); // показываем окно
return run(); // основной цикл выборки сообщений.
}
|
| |
Картинка
Здравствуйте, tumanovalex, Вы писали:
T>- есть ли не очень сложные примеры приложений на C/C++, у которых интерфейс создан на Скайтере (радиокнопки, выпадающие списки, текстбоксы и др.)?
По старой доброй (и полезной) традиции у Андрея в SDK лежит куча примеров.
Из sciter.exe/sciter64.exe позагружай примеры ($sciter)\samples. Это будет интересно. Правда за один раз переварить всё сложно
.
Здравствуйте, ShaggyOwl, Вы писали:
SO>Из sciter.exe/sciter64.exe позагружай примеры ($sciter)\samples. Это будет интересно. Правда за один раз переварить всё сложно .
И за два тоже
Пришлось делать скрины всех примеров, чтобы потом быстро находить интересующее.