1

Windows バックエンドで GtkWindow を透明にしようとしていますが、プログラムは失敗しました。私は gtk+ 3.6.1 を使用していますが、gdk_window_set_opacity() 関数が機能していないようです。別の解決策はありますか? ここに私のコードがあります:

#include <stdio.h>
#include <stdlib.h>
#include "gtk/gtk.h"

int main( int argc, char *argv[] )
{
    gboolean user_func( GtkWidget *wid,
                        cairo_t *cr,
                        gpointer user_data );
    gtk_init( &argc, &argv );
    GtkWidget *win = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_title( GTK_WINDOW( win ), "Translucent window");
    g_signal_connect( G_OBJECT( win ), "draw", G_CALLBACK( user_func ), NULL );
    gtk_widget_show( win );
    gtk_main();
    return 0;
}

gboolean user_func( GtkWidget *wid,
                    cairo_t *cr,
                    gpointer user_data )
{
    GdkWindow *window = gtk_widget_get_window( wid );
    printf("bbbb\n");                                // for debuging purpose
       gdk_window_set_opacity( window, 0.5 );
    printf("bonjour\n");                             // for debuging purpose
    cairo_set_source_rgba( cr, 0.0, 0.0, 1.0, 0.5 );
    cairo_paint( cr );
    GTK_WIDGET_GET_CLASS( wid )->draw( wid, cr );
    return TRUE;
}

よろしくお願いします。

4

0 に答える 0