Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193305
  • 博文数量: 52
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 570
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-09 22:20
文章分类

全部博文(52)

文章存档

2009年(9)

2008年(27)

2007年(16)

我的朋友

分类: C/C++

2007-10-02 09:27:51

环境:Ubuntu, NetBeans, gcc, gtk+, JAVA

搭建环境:
1.NetBeans从SUN公司的官方网站上注册下载,免费的。
2.Gtk+可以直接安装libgtk2.0-dev软件包,也可以从下载源码,编译安装。可能需要其他依赖的软件包如下:
  • pkg-config
  • GNU make
  • JPEG, PNG and TIFF image libraries
  • FreeType
  • fontconfig
  • GNU libiconv library
  • GNU gettext
  • GLib
  • Pango
  • ATK
  • GTK+
3.至于gcc和java,可以到Ubuntu服务器上找到。

在启动NetBeans前先配置一下其配置文件,打开~/netbeans-5.5.1/etc/netbeans.conf,
将文件中的这一行
netbeans_jdkhome="null"
改掉
netbeans_jdkhome="/usr/lib/jvm/java-6-sun-1.6.0.00/"

启动~/netbeans-5.5.1/bin/netbeans,建一个C工程,代码可以这样:
#include 

/* This is a callback function. The data arguments are ignored
* in this example. More on callbacks below. */
static void hello( GtkWidget *widget,
gpointer data )
{
g_print ("Hello World\n");
}

static gboolean delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
/* If you return FALSE in the "delete_event" signal handler,
* GTK will emit the "destroy" signal. Returning TRUE means
* you don't want the window to be destroyed.
* This is useful for popping up 'are you sure you want to quit?'
* type dialogs. */

g_print ("delete event occurred\n");

/* Change TRUE to FALSE and the main window will be destroyed with
* a "delete_event". */

return TRUE;
}

/* Another callback */
static void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit ();
}

int main( int argc,
char *argv[] )
{
/* GtkWidget is the storage type for widgets */
GtkWidget *window;
GtkWidget *button;

/* This is called in all GTK applications. Arguments are parsed
* from the command line and are returned to the application. */
gtk_init (&argc, &argv);

/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

/* When the window is given the "delete_event" signal (this is given
* by the window manager, usually by the "close" option, or on the
* titlebar), we ask it to call the delete_event () function
* as defined above. The data passed to the callback
* function is NULL and is ignored in the callback function. */
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);

/* Here we connect the "destroy" event to a signal handler.
* This event occurs when we call gtk_widget_destroy() on the window,
* or if we return FALSE in the "delete_event" callback. */
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (destroy), NULL);

/* Sets the border width of the window. */
gtk_container_set_border_width (GTK_CONTAINER (window), 10);

/* Creates a new button with the label "Hello World". */
button = gtk_button_new_with_label ("Hello World");

/* When the button receives the "clicked" signal, it will call the
* function hello() passing it NULL as its argument. The hello()
* function is defined above. */
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (hello), NULL);

/* This will cause the window to be destroyed by calling
* gtk_widget_destroy(window) when "clicked". Again, the destroy
* signal could come from here, or the window manager. */
g_signal_connect_swapped (G_OBJECT (button), "clicked",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (window));

/* This packs the button into the window (a gtk container). */
gtk_container_add (GTK_CONTAINER (window), button);

/* The final step is to display this newly created widget. */
gtk_widget_show (button);

/* and the window */
gtk_widget_show (window);

/* All GTK applications must have a gtk_main(). Control ends here
* and waits for an event to occur (like a key press or
* mouse event). */
gtk_main ();

return 0;
}
编译前需要更改编译器参数
File->"xxx"Properties->C/C++->C Compiler->General->tool
把gcc后改成gcc `pkg-config gtk+-2.0 --cflags --libs`

编译运行,ok。能在linux下用上这样的IDE,确实很爽的。界面也很漂亮(JAVA的界面),支持图形化界面调试。

阅读(1993) | 评论(1) | 转发(0) |
0

上一篇:Hello world - NASM

下一篇:建一个samba服务

给主人留下些什么吧!~~

chinaunix网友2008-10-19 10:34:51

太感谢您了!解决了我的燃眉之急阿!