Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 退出时如何设置GTK应用程序的状态代码?_C_User Interface_Gtk - Fatal编程技术网

C 退出时如何设置GTK应用程序的状态代码?

C 退出时如何设置GTK应用程序的状态代码?,c,user-interface,gtk,C,User Interface,Gtk,我正在编写一个利用GTK创建GUI的应用程序 在下面的示例代码中,函数run\u gui启动GTK应用程序 当其中一个事件处理程序出现问题时,我希望GTK应用程序关闭,并且我希望运行_gui知道应用程序由于故障而关闭。一种自然的方法似乎是让g\u应用程序运行在返回时返回特定的状态代码 我了解到关闭应用程序的一个合适方法是从事件处理程序调用g\u quit\u应用程序(如果不是,请更正)。但是,我想知道如何设置从g\u应用程序运行返回的状态代码,以便run\u gui可以检查它并相应地执行操作 用

我正在编写一个利用GTK创建GUI的应用程序

在下面的示例代码中,函数
run\u gui
启动GTK应用程序

当其中一个事件处理程序出现问题时,我希望GTK应用程序关闭,并且我希望
运行_gui
知道应用程序由于故障而关闭。一种自然的方法似乎是让
g\u应用程序运行
在返回时返回特定的状态代码

我了解到关闭应用程序的一个合适方法是从事件处理程序调用
g\u quit\u应用程序
(如果不是,请更正)。但是,我想知道如何设置从
g\u应用程序运行
返回的状态代码,以便
run\u gui
可以检查它并相应地执行操作

用于说明我想做什么的代码:

#include <gtk/gtk.h>

static void activate(GtkApplication* app, gpointer user_data) {
    GtkWidget* window = gtk_application_window_new (app);
    gtk_window_set_title(GTK_WINDOW(window), "Window");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
    gtk_widget_show_all(window);

    bool success = do_something();

    if (!success) {
        /* How do I set the exit status of the GTK app? */
        g_application_quit(G_APPLICATION(app));
    }
}

void run_gui(void) {
    GtkApplication* app = gtk_application_new("my.app", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);

    int status = g_application_run(G_APPLICATION(app), 0, NULL);
    g_object_unref(app);

    if (status == 0) {
        /* Do something about success */
    } else {
        /* Do something about failure */
    }
}
#包括
静态无效激活(GTK应用程序*应用程序、gpointer用户数据){
GtkWidget*窗口=gtk_应用程序_窗口_新(应用程序);
gtk_窗口设置标题(gtk_窗口(窗口),“窗口”);
gtk_窗口设置默认大小(gtk_窗口(窗口),200200);
gtk_小部件_全部显示(窗口);
bool success=做某事;
如果(!成功){
/*如何设置GTK应用程序的退出状态*/
g_应用程序_退出(g_应用程序(app));
}
}
void run_gui(void){
GtkApplication*app=gtk_application_new(“my.app”,G_application_FLAGS_NONE);
g_信号连接(应用程序,“激活”,g_回调(激活),空);
int status=g_应用程序运行(g_应用程序(应用程序),0,空);
g_object_unref(应用程序);
如果(状态==0){
/*为成功做点什么*/
}否则{
/*对失败做些什么*/
}
}

GAApplication中唯一允许您返回退出代码的部分是;否则,对于任何内部故障,GAApplication将返回1,对于成功,将返回0

如果激活后您有退出状态,您需要自己处理


记住:激活是在当前运行的实例上执行的。只有当前运行的进程才会发出激活,任何其他实例都会立即终止。

GAApplication中允许您返回退出代码的唯一部分是;否则,对于任何内部故障,GAApplication将返回1,对于成功,将返回0

如果激活后您有退出状态,您需要自己处理

记住:激活是在当前运行的实例上执行的。只有当前正在运行的进程才会发出激活,任何其他实例都会立即终止