LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1174|回复: 6

windows 下 gtk 编程 怎么去掉 console

[复制链接]
发表于 2004-1-11 13:28:48 | 显示全部楼层 |阅读模式
我的开发环境是mingw gtk2

每次运行都会出一个大大的控制台,非常不爽,
在网上找不到解决方法!也试过如下方法:

哪位知道如何做?

[PHP]
#include <gtk/gtk.h>
#include <windows.h>

GtkWidget *window;

int APIENTRY WinMain (struct HINSTANCE__ *hInstance,
    struct HINSTANCE__ *hPrevInstance,
    char *lpszCmdLine,
    int nCmdShow)
{
  return main(__argc, __argv);
}

int main(int argc, char **argv)
{


    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);


    g_signal_connect(G_OBJECT(window), "destroy",
                     G_CALLBACK(gtk_main_quit), window);

    gtk_container_set_border_width(GTK_CONTAINER(window), 10);

    gtk_widget_show(window);
    gtk_main();
    return 0;
}
[/PHP]
发表于 2004-1-11 13:50:45 | 显示全部楼层
看一下这个:http://www.geocrawler.com/archives/3/488/2003/6/0/10526972/
主要是不用main,代码都写到WinMain里,WinMain里不要包含windows代码。
包含<stdlib.h>用__argc和__argv使用命令行。
 楼主| 发表于 2004-1-11 17:54:50 | 显示全部楼层

结果依旧!

这是我改过后的代码:
还是不行,不知是不是我的编译选项的问题
[PHP]
#include <gtk/gtk.h>
#include <windows.h>
#include <stdlib.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   PSTR szCmdLine, int iCmdShow)
{

    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), window);

    gtk_container_set_border_width(GTK_CONTAINER(window), 10);

    gtk_widget_show(window);
    gtk_main();
    return 0;
}

[/PHP]

下面是我的 Makefile 的内容:
[PHP]
CC=gcc

CFLAGS=-IC:/GTK/include/gtk-2.0 -IC:/GTK/lib/gtk-2.0/include -IC:/GTK/include/atk-1.0 -IC:/GTK/include/pango-1.0 -IC:/GTK/include/glib-2.0 -IC:/GTK/lib/glib-2.0/include -mms-bitfields
CLIBS=-LC:/GTK/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv  

BIN=gtkmine.exe
OBJECTS=gtkmine.o

all(BIN)

$(BIN): $(OBJECTS)
        $(CC) $(OBJECTS) -o $(BIN) $(CLIBS)
        strip $(BIN)

%.o: %.c
        $(CC) $(CFLAGS) -c $<

clean:
        rm -f $(OBJECTS) $(BIN)
[/PHP]
发表于 2004-1-11 18:04:48 | 显示全部楼层
缺少:-mno-cygwin
 楼主| 发表于 2004-1-11 18:25:29 | 显示全部楼层

找到解决方案了!

只要在链接时加上一个 -mwindows
在我的Makefile 里就是 CLIBS 后加一个 -mwindws
就可以了,也不用一定要使用
WinMain
用 main 也是可以的!
多谢 libinary 版主给我的提示!
 楼主| 发表于 2004-1-11 18:29:16 | 显示全部楼层

winix兄

你的方法我也试了一下,不行,你用的是不是cygwin?
我只是用mingw
发表于 2004-1-12 12:49:44 | 显示全部楼层
我没仔细看你的makefile。
以前只是参照gaim的源码写过一个小程序gPinyin,是利用cygwin作shell环境,采用mingw的gcc,时间久了,很多细节忘了
gtk在windows下问题会比较多,慢慢你会遇到的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表