GTK+学习笔记1

17 篇文章 0 订阅

1.将使用控制台建立的GTK+工程项目中的控制台窗口去掉

      a.)将工程设置中[C/C++]/[Preprocessor definitions]中的“_CONSOLE”改为

                  “_WINDOWS”

      b).将工程设置中[Link]/[Project Option]中的 "/subsystem:console" 改为

               “/subsystem:windows”

      c).将main函数改为

#if defined(G_OS_WIN32) && defined(_WINDOWS)
//Windows平台没有windows控制台窗口
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                    LPSTR     lpCmdLine,
                     int       nCmdShow)
#else 
//windows平台控制台或Linux 平台
int main(int argc, char* argv[])
#endif
{

#if defined(G_OS_WIN32) && defined(_WINDOWS)

//去掉控制台输出
       gtk_init(&__argc, &__argv);
 
       /* We don't want a console window.. */
       /*
       *  Any calls to the glib logging functions, result in a call to AllocConsole().
       *  ME and 98 will in such cases produce a console window(2000 not), despite
       *  being built as a windows app rather than a console app.  So we should either
       *  ignore messages by setting dummy log handlers, or redirect messages.
       *  This requires setting handlers for all domains(any lib which uses g_logging).
       */

 
       g_log_set_handler(NULL,(GLogLevelFlags) (G_LOG_LEVEL_MASK  | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), DrCOM_dummy_log_handler, NULL); 
    g_log_set_handler("Gdk",(GLogLevelFlags)(G_LOG_LEVEL_MASK| G_LOG_FLAG_FATAL  | G_LOG_FLAG_RECURSION), DrCOM_dummy_log_handler, NULL);
 g_log_set_handler("Gtk",(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
  DrCOM_dummy_log_handler, NULL);
 g_log_set_handler("GLib",(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
  DrCOM_dummy_log_handler, NULL);
 g_log_set_handler("GModule",(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
  DrCOM_dummy_log_handler, NULL);
 g_log_set_handler("GLib-GObject",(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
  DrCOM_dummy_log_handler, NULL);
 g_log_set_handler("GThread",(GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION),
  DrCOM_dummy_log_handler, NULL);
 
  /* g_print also makes a call to AllocConsole(), therefore a handler needs to be
    set here aswell */

    g_set_print_handler( DrCOM_dummy_print );
 
#else
 gtk_init(&argc, &argv);
#endif

       gtk_main();
       return 0;

}

#ifdef G_OS_WIN32
static void DrCOM_dummy_print( const gchar* string )
{
 return;
}

static void DrCOM_dummy_log_handler (const gchar    *domain,
            GLogLevelFlags  flags,
            const gchar    *msg,
            gpointer        user_data)
{
 return;
}
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值