|
楼主 |
发表于 2005-9-6 09:29:44
|
显示全部楼层
谢谢楼上几位的解答。
[quote:9e7f6b31e0="Kan"]
第一问题,是你的PROJECT是选择终端程序,还是图形程序做成的!
[/quote]
我没有用IDE工具创建工程。我的代码和Makefile都是自已写的。以一个最简单的程序为例:
程序test.c代码如下:
[code:1]
#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit),
NULL);
gtk_window_set_title (GTK_WINDOW (window), "Test Program");
/* 此处省略部分代码 */
gtk_widget_show (window);
gtk_main ();
return 0;
}
[/code:1]
一个简单的Makefile如下:
[code:1]
CC=gcc
PROGRAM_NAME=test
SOURCES=$(wildcard *.c)
CFLAGS=-Wall -g
WIN32_FLAGS=-mms-bitfields
CYGWIN_FLAGS=-mno-cygwin
GLIB_CFLAGS=`pkg-config --cflags gtk+-2.0`
GLIB_LIBS= `pkg-config --libs gtk+-2.0`
FOOBAR_OBJS=$(SOURCES)
$(PROGRAM_NAME).exe : $(FOOBAR_OBJS)
$(CC) $(CFLAGS) -o $@ $(FOOBAR_OBJS) $(WIN32_FLAGS) $(GLIB_CFLAGS) $(GLIB_LIBS)
[/code:1]
(-mms-bitfields 参数仅在Win32下用, Linux 下不用)
对于这个程序来说,这段Makefile相当于下面这行:
gcc -mms-bitfields -Wall -g test.c -o test `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
结果在Linux下编译后运行正常,而Windows下编译后运行时就会出现上面所说的终端框。
(Window下在Mingw和Cygwin里编译都是如此,其中Cygwin里编译时加了参数 -mno-cygwin )
[quote:9e7f6b31e0="Kan"]
第二问题,你可以自己在程序中更改图标的![/quote]
更改图标的问题可能上面我没讲清楚。
在GTK程序未设图标时,Linux的窗口管理器上不会出现图标,而Windows的窗口管理器右上角会有一个默认的GTK图标。
我的意思是:对所有未设图标的GTK程序,能否在Windows的窗口管理器上出现的图标都改用我自己定义的图标,而不是现在默认的那个。 |
|