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;
}
よろしくお願いします。