Как вы подавляете окно консоли в Windows? - PullRequest
2 голосов
/ 19 сентября 2019

Возьмите базовый пример Gtk + app и позвоните ему main.vala:

using Gtk;

int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "First GTK+ Program";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size (350, 70);
    window.destroy.connect (Gtk.main_quit);

    var button = new Button.with_label ("Click me!");
    button.clicked.connect (() => {
        button.label = "Thank you";
    });

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}

Добавьте простой meson.build файл:

project('gui-test', 'vala', 'c')

dependencies = [
    dependency('glib-2.0'),
    dependency('gobject-2.0'),
    dependency('gtk+-3.0')
]

sources = files('main.vala')

executable('gui-test', sources, dependencies: dependencies)

С помощью toolchain из msys2 это может быть скомпилировано в приложение Windows с обычными шагами:

meson build
ninja -C build

Полученный исполняемый файл будет иметь консольную подсистему Windows (-mconsole).

При запуске из проводника Windows открывается окно консоли.

Screenshot of the running application

Как избежать использования окна консоли в этом графическом приложении?

1 Ответ

3 голосов
/ 19 сентября 2019

Установите gui_app: true в исполняемом файле:

project('gui-test', 'vala', 'c')

dependencies = [
    dependency('glib-2.0'),
    dependency('gobject-2.0'),
    dependency('gtk+-3.0')
]

sources = files('main.vala')

executable('gui-test', sources, dependencies: dependencies, gui_app: true)

Это документ в руководстве по мезону :

gui_app, если установлено значение true, этоцелевой как приложение с графическим интерфейсом на платформах, где это имеет значение (например, Windows)

Screenshot of the app

...