1. GTK+编译平台的安装
代码: 全选
从Dubuntu的CD2安装Gnome开发环境, 或通过下边的命令安装:
sudo apt-get install gnome-devel build-essential
从下边的链接可以下载到Code::Blocks-1.0 的最新开发板, 我使用的是 2006.09.14 编译的版本
http://forums.codeblocks.org/index.php?board=20.0
3. 在Code::Blocks中创建工程时, 选择"Console Application", 在出现的向导中, 第三步时选择使用 C 语言, 如下图1所示!
现在已经创建完一个简单的控制台应用程序, 可以编译运行看看能不能成功!
4. 头文件搜索路径的设置:这一步最关键, 即让 CodeBlocks在编译/链接程序时能够找到GTK+的头文件和库文件, 方法如下:
*在任一控制台运行如下命令, 得到编译GTK+程序所需要的头文件和库文件列表:
代码: 全选
pkg-config --cflags gtk+-2.0
5. 链接所需库文件的设置: 如图3所示, 加入如下的语句即可:
代码: 全选
`pkg-config --libs gtk+-2.0`
注意:上边上( ` )不是普通的单引号( ' )
注意: 如果你在编译GTK+程序时要使用到其它的库, 即在第 4 和第 5 步要改变相应的库名(即 gtk+-2.0 , 祝成功, 最后附上一个小的测试程序:
代码: 全选
#include<gtk/gtk.h>
gint
close_application(GtkWidget *widget, GdkEvent *event, gpointer data)
{
g_print("Quit!\n");
gtk_main_quit();
return FALSE;
}
void
radio_radio_callback(GtkWidget *widget, gpointer data)
{
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
g_print("Clicked radio button.\n");
else
g_print("Release radio button.\n");
}
int
main(int argc, char *argv[])
{
GtkWidget *window, *box1, *box2, *button, *separator;
GSList *group;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"test radio button");
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(close_application), NULL);
gtk_container_set_border_width(GTK_CONTAINER(window), 20);
box1 = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), box1);
box2 = gtk_vbox_new(FALSE,10);
gtk_container_set_border_width(GTK_CONTAINER(box2), 10);
gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);
button = gtk_radio_button_new_with_label(NULL, "button1");
gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
button = gtk_radio_button_new_with_label(group, "button2");
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(radio_radio_callback),NULL);
gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
button = gtk_radio_button_new_with_label(group, "button3");
gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);
button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button),"button4");
gtk_box_pack_start(GTK_BOX(box2), button ,TRUE, TRUE, 0);
separator = gtk_hseparator_new();
gtk_box_pack_start(GTK_BOX(box1), separator, FALSE, TRUE, 0);
gtk_widget_show(separator);
////
box2 = gtk_vbox_new(FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER(box2),10);
gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, TRUE, 0);
button = gtk_button_new_with_label("close");
//g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(close_application), window);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(close_application),NULL);
gtk_box_pack_start(GTK_BOX(box2), button , FALSE, FALSE, 0);
GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
gtk_widget_grab_default(button);
gtk_widget_show_all(window);
gtk_main();
return 0;
}