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

📄 module.c

📁 gtk插件程序例子说明
💻 C
字号:
//module.c
#include <gtk/gtk.h>
#include <gmodule.h>

typedef void (*About) (void);
typedef void (*Dialog) (gchar* message);

GModule *module;
void	on_open(GtkWidget *button, gpointer data){	module = g_module_open("./libhello.so", 0); // G_MODULE_BIND_LAZY);	if(module == NULL)		g_error("ERROR:%s", g_module_error());	gtk_widget_set_sensitive(button, FALSE);}
void	on_dialog(GtkWidget *button, gpointer data)
{	Dialog dialog;
	if(g_module_symbol(module,"create_message_dialog",(gpointer*)&dialog))	{		dialog("这是一个测试用的消息对话框。");	}	else	{		g_error("ERROR:%s", g_module_error());	}	
}

void	on_about(GtkWidget *button, gpointer data)
{	About about;
	if(g_module_symbol(module,"about",(gpointer*)&about))	{		about();	}
	else	{		g_error("ERROR:%s", g_module_error());	}
}
void	on_delete_event(GtkWidget *widget, GdkEvent *event, gpointer data){	g_module_close(module);	gtk_main_quit();}
int	main(int argc, char* argv[])
{
	GtkWidget *window, *vbox, *button;
	gtk_init(&argc, &argv);

	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(window),"插件功能 -- 动态链接库调用");
	g_signal_connect(G_OBJECT(window),"delete_event",
			G_CALLBACK(on_delete_event),NULL);
	gtk_container_set_border_width(GTK_CONTAINER(window),10);

	vbox = gtk_vbox_new(FALSE,0);
	gtk_container_add(GTK_CONTAINER(window),vbox);	button = gtk_button_new_with_label("调用插件");	gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);	g_signal_connect(G_OBJECT(button), "clicked",			G_CALLBACK(on_open), NULL);	button = gtk_button_new_with_label("显示信息对话框");
	gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,0);
	g_signal_connect(G_OBJECT(button),"clicked",
			G_CALLBACK(on_dialog),NULL);
	button = gtk_button_new_with_label("显示关于对话框");
	gtk_box_pack_start(GTK_BOX(vbox),button,FALSE,FALSE,0);
	g_signal_connect(G_OBJECT(button),"clicked",
			G_CALLBACK(on_about),NULL);

	gtk_widget_show_all(window);
	gtk_main();
	return FALSE;
}

⌨️ 快捷键说明

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