[Armadillo:05955] Re: 500FX のGTK小技メモ

Yasushi SHOJI email@hidden
2010年 10月 20日 (水) 16:37:51 JST


At Wed, 20 Oct 2010 11:37:49 +0900,
MasakiAoyama wrote:
> 
> ググってもすぐ出てくる情報ですが、ML検索したらすぐ出てくるようにメモ代わり
> に書いといてもいいんじゃなイカ?と思ったので書き残しておきます。

こういうの個人的には大好きです。:-)
# glib/gtk+ な開発ガイドを書いていない言い訳ではなく…。

> 500FXのGTK小技メモです。
> 
> 1.タッチパネルアプリなのでマウスカーソルいらない!消したい!

重要ですよね!
Gtk+ 2.16 からは GDK_BLANK_CURSORが定義されているので

	gdk_cursor_new(GDK_BLANK_CURSOR);

で作成できるのですが Debian Lenny に入っている 2.12 では
使えないんですよね。

> マウスカーソル(マウスポインタ)を透明にします。
> 
> gchar bits[32] = { 0};
> GdkBitmap *bitmap;
> GdkColor color = {0, 0, 0, 0};
> GdkCursor *cursor; 
> 
> ※gtk_widget_show_all(window)の後あたり

# window == top level window ですよね?
window->window が生成されないと gdk_window_*() が呼べないので
この点重要です。

> bitmap = gdk_bitmap_create_from_data( NULL, bits, 16, 16);
> cursor = gdk_cursor_new_from_pixmap( bitmap, bitmap, &color, &color, 8, 8);
> gdk_window_set_cursor( fixed->window, cursor); 
> 
> ※gdk_window_set_cursorで、gdk_window_set_cursor( window, cursor) とすると
>  実行時エラーになったので、windowの上に全面配置しているfixed->windowを指定
>  しています。

gdk_window_set_cursor(window->window, cursor); とできませんか?


2.16になるまでは

	static GdkCursor *create_blank_cursor(GdkWindow *w)
	{
	        const gchar bits[] = { 0x0 };
	        GdkColor c = {0, 0, 0, 0};
	        GdkPixmap *p;
		GdkCursor *ret;
	
	        p = gdk_bitmap_create_from_data(w, bits, 1, 1);
	        ret = gdk_cursor_new_from_pixmap(p, p, &c, &c, 0, 0);
		g_object_unref(p);

		return ret;
	}

としておくと、便利かもしれません。
# gdk_cursor_new_from_pixmap() も Gtk+ 3.0では使えないので
# cairo への移行が必要です。
# http://library.gnome.org/devel/gtk/unstable/ch25s02.html#id1132461
-- 
            yashi




armadillo メーリングリストの案内