3

基本示例 Gtk+ 应用程序为例并调用它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)

使用msys2的工具链,可以通过以下步骤将其编译为 Windows 应用程序:

meson build
ninja -C build

生成的可执行文件将具有 Windows 控制台子系统 ( -mconsole)。

从 Windows 资源管理器启动时,它会打开一个控制台窗口。

正在运行的应用程序的屏幕截图

如何避免在此 gui 应用程序中出现控制台窗口?

4

1 回答 1

4

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 时将此目标标记为 GUI 应用程序,这会有所不同(例如 Windows)

应用截图

于 2019-09-19T10:12:17.963 回答