Windows平台下GTK 窗口在任务栏的隐藏问题以及解决办法

本文探讨了在Windows平台上,使用GTK库创建的窗口如何避免在任务栏显示的问题。通过`gtk_window_set_skip_taskbar_hint`函数尝试隐藏窗口在任务栏的图标,但在Windows环境下无效。解决方案是利用`gtk_window_set_transient_for`将窗口设为另一个非根窗口的transient窗口,从而实现任务栏隐藏。同时,文章也提到了GTK源码中`gdk_window_set_skip_taskbar_hint`函数的未实现问题。
摘要由CSDN通过智能技术生成

一口气写上了这么长的一个标题,估计吓到不少人。这个问题并不常见,也不是一个很大很严重的问题。但是确实存在,并且gtk的文档里没有说清楚。这导致了我走了一些弯路。好了,进入正题。

我们通过gtk_window_new新建一个GtkWindow后,一般情况下(不经过我们的特殊处理),当把这个窗口显示出来时,就会在任务栏中显示窗口的图标。但是有些时候我们不想要这个图标,比如,菜单窗口,是不应该有这个图标的。

GtkWindow中提供了gtk_window_set_skip_taskbar这个函数,并且有这样的说明:"Windows may set a hint asking the desktop environment not to display the window in the task bar. This function sets this hint.”这不正是我们要的吗?!很遗憾,在Linux上是可以的,但是在Windows上就不行了。

可以通过下面的代码进行验证:

#include

static gboolean flag = TRUE;
gboolean destroy(GtkWidget *widget, gpointer data)
{
    gtk_main_quit();
}

gboolean clicked(GtkButton *button, gpointer data)
{
    GtkWidget *window = (GtkWidget *)data;

    g_print("skip taskbar:%d./n",
            gtk_window_get_skip_taskbar_hint(GTK_WINDOW(window)));

    if(flag)
        gtk_widget_hide_all(window);
    else
        gtk_widget_show_all(window);

    flag = !flag;
    return FALSE;

}
int main(int argc,char ** argv )
{
    gtk_init(&argc,&argv);
    GtkWidget *windo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值