⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hello-gtk.c

📁 一个例子程序
💻 C
字号:
/* 示例开始helloworld helloworld.c */
#include <gtk/gtk.h>
/* 回调函数在本例中忽略了传递给程序的所有参数。下面是回调函数 */
void hello(GtkWidget *widget,gpointer data)
{
	g_print("Hello World\n");
}
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
    /* 如果在" d e l e t e _ e v e n t "处理程序中返回F A L S E,GTK 将引发一个"destroy"
     * 信号,返回T R U E意味着你不想关闭窗口。
     * 这些在弹出"你真的要退出? "对话框时很有作用 */
    g_print("delete event occurred\n");
    /* 将TRUE改为FALSE,主窗口就会用一个"delete_event"信号然后退出 */
    return(TRUE);
}
/* 另一个回调函数 */
void destroy( GtkWidget *widget,gpointer data)
{
	gtk_main_quit();
}
int main(int argc,char *argv[])
{
    /* GtkWidget是构件的存储类型*/
    GtkWidget *window;
    GtkWidget *button;
    /* 在所有的G t k应用程序中都应该调用。它的作用是解析由命令行传递
    * 进来的参数并将它返回给应用程序*/
    gtk_init(&argc,&argv);
    /* 创建一个主窗口*/
    window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /* 当给窗口一个"delete_event"信号时(这个信号是由窗口管
    * 理器发出的,通常是在点击窗口标题条右边的"×"按钮,或
    * 者在标题条的快捷菜单上选择"close"选项时发出的),我们
    * 要求调用上面定义的delete_event()函数传递给这个回调函数
    * 的数据是NULL,回调函数会忽略这个参数*/
    gtk_signal_connect (GTK_OBJECT(window),"delete_event",
    GTK_SIGNAL_FUNC(delete_event),NULL);
    /* 这里,我们给"destory"事件连接一个信号处理函数,
    * 当我们在窗口上调用gtk_widget_destroy()函数
    * 或者在"delete_event"事件的回调函数中返回FALSE
    * 时会发生这个事件*/
    gtk_signal_connect(GTK_OBJECT(window),"destroy",
    GTK_SIGNAL_FUNC(destroy),NULL);
    /* 设置窗口的边框宽度*/
    gtk_container_set_border_width(GTK_CONTAINER(window),10);
    /* 创建一个标题为"Hello World"的按钮*/
    button=gtk_button_new_with_label("Hello World");
    /* 当按钮接收到"clicked"时,它会调用hello()函数,
    * 传递的参数为NULL。函数hello()是在上面定义的*/
    gtk_signal_connect(GTK_OBJECT(button),"clicked",
    GTK_SIGNAL_FUNC(hello),NULL);
    /* 当点击按钮时,通过调用gtk_widget_destroy(window)函数销毁窗口。
    * 另外,"destory"信号可以从这里发出,也可以来自于窗口管理器*/
    gtk_signal_connect_object(GTK_OBJECT (button),"clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT(window));
    
    /* 将按钮组装到窗口中(一个gtk容器中)*/
    gtk_container_add(GTK_CONTAINER(window),button);
    /* 最后一步就是显示新创建的构件*/
    gtk_widget_show(button);
    /*显示窗口*/
    gtk_widget_show(window);
    /* 所有的GTK应用程序都应该有一个gtk_main()函数。
    * 程序的控制权停在这里并等着事件的发生(比如一次按键或鼠标事件)*/
    gtk_main();
    return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -