Перейти к содержанию

Hello world

Возьмите examples/hello_world как основу приложения с темами, локалями, настройками и упаковкой ресурсов. Соберите цель hello_world по инструкции установки или откройте пример в браузере.

Минимальный пример C++

Пример ниже использует полный res/dark.json из одного из готовых примеров. Сохраните связанные ресурсы. Этот main() подходит для macOS, Linux и WASM; для GUI-подсистемы Windows используйте WinMain из комплектного примера.

#include <wui/framework/framework.hpp>
#include <wui/window/window.hpp>
#include <wui/control/text.hpp>
#include <wui/control/button.hpp>
#include <wui/theme/theme.hpp>
#include <memory>

int main()
{
    wui::framework::init();
    if (!wui::set_default_theme_from_file("dark", "res/dark.json")) return 1;
    auto window = std::make_shared<wui::window>();
    auto label = std::make_shared<wui::text>("Hello, WUI!",
        wui::hori_alignment::center, wui::vert_alignment::center);
    auto button = std::make_shared<wui::button>("Say hello",
        [label] { label->set_text("Hello from shared C++ controls!"); });
    window->add_control(label, {20, 50, 400, 110});
    window->add_control(button, {110, 130, 310, 170});
    if (!window->init("Hello WUI", {-1, -1, 420, 220}, wui::window_style::frame,
        [] { wui::framework::stop(); })) return 1;
    wui::framework::run();
}

Контролы принимают {left, top, right, bottom}. Вызов window::init() допускает специальный вариант {-1, -1, width, height} для центрирования окна.

Окна, диалоги и данные callback должны жить до завершения framework::run(). В callback закрытия вызывается framework::stop(). Создание окна не заменяет цикл событий. WASM сохраняет такой порядок жизни объектов благодаря Asyncify.

Полный пример добавляет переключение темы и языка, INI/реестр, Unicode-ввод имени и диалоги подтверждения. Исходники: hw.cpp, MainFrame/MainFrame.h, MainFrame/MainFrame.cpp, Resource.h.

На macOS ресурсы находятся в Contents/Resources/res, на Linux — рядом с бинарником, на Windows — в .rc, в WASM — в виртуальном /res. См. ресурсы.