directfb + gtk的鼠标隐藏问题

这段时间实现基于directfbGTK项目,遇到一些问题,其中一个问题是由于基于directfbgtk没有实现相应的接口造成。本来想通过移动鼠标或禁止鼠标的方式来实现鼠标的隐藏,但是因为gdk_display_warp_pointer()gdk_display_freeze_pointer()接口没有实现无法实现鼠标的隐藏。

为了能够隐藏鼠标我找了gdk_display_warp_pointer()gdk_display_freeze_pointer()实现。为了以后回来温习,同时让其他人不为此烦恼,我将实现贴出。

 

 

/* 移动鼠标 */

void gdk_display_warp_pointer (GdkDisplay *display,

                                                      GdkScreen  *screen,

                                                                    gint            x,

                                                                    gint            y)

{

    GdkDisplayDFB * gdkdisplay = _gdk_display;

    gdkdisplay->layer->SetCooperativeLevel(gdkdisplay->layer, DLSCL_ADMINISTRATIVE);

    DFBResult returnvalue = gdkdisplay->layer->WarpCursor(gdkdisplay->layer, x, y);

    gdkdisplay->layer->SetCooperativeLevel(gdkdisplay->layer, DLSCL_SHARED);

}

 

/* 使能或不使能鼠标 */

void gdk_display_freeze_pointer (const gboolean flag)

{

    GdkDisplayDFB * gdkdisplay = _gdk_display;

    gdkdisplay->layer->SetCooperativeLevel(gdkdisplay->layer, DLSCL_ADMINISTRATIVE);

    DFBResult returnvalue = gdkdisplay->layer->EnableCursor(gdkdisplay->layer, flag);

    gdkdisplay->layer->SetCooperativeLevel(gdkdisplay->layer, DLSCL_SHARED);

 

}

 

/* 用一个透明图片覆盖鼠标 */

 void gdk_window_set_invisible_cursor (GdkWindow *window)
{
 GdkBitmap *empty_bitmap;
 GdkCursor *cursor;
 GdkColor useless;
 char invisible_cursor_bits[] = { 0x0 }; 
 useless.red = useless.green = useless.blue = 0;
 useless.pixel = 0;
 empty_bitmap = gdk_bitmap_create_from_data (window,
          invisible_cursor_bits,
          1, 1);
  cursor = gdk_cursor_new_from_pixmap (empty_bitmap,
          empty_bitmap,
          &useless,
          &useless, 0, 0);
 gdk_window_set_cursor (window, cursor);
 gdk_cursor_unref (cursor);
 g_object_unref (G_OBJECT (empty_bitmap));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值