代码: 全选
//foo.cpp 一个gtk窗口的包装类
#include <stdio.h>
#include "myclass.h"
#include <gtk/gtk.h>
#include <glib.h>
class foo : public myclass {
private:
GtkWidget* window;
GtkWidget* button;
public:
virtual ~foo() {
printf("destruction of foo!\n");
}
static gint destroyapp (GtkWidget *widget, gpointer gdata){
g_print ("Quitting...\n");
gtk_main_quit();
return (FALSE);
}
static void button_clicked(GtkWidget *widget, gpointer gdata){
g_print("Button was clicked.\n");
}
foo(int argc,char* argv[]){
gtk_init(&argc,&argv);
}
virtual void fun1() {
printf("fun1 in the foo!\n");
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button=gtk_button_new_with_label("hello");
gtk_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(&foo::destroyapp),NULL);
gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(&foo::button_clicked),NULL);
gtk_container_add(GTK_CONTAINER(window),button);
gtk_container_border_width (GTK_CONTAINER (window), 15);
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main();
}
};
extern "C" {
foo* maker(){
return new foo(NULL,NULL);
}
}
代码: 全选
g++ -Wall -fPIC -g -c foo.cpp `gtk-config --cflags` `gtk-config --libs`
ld -shared foo.o -o libsoso.so