Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180066
  • 博文数量: 40
  • 博客积分: 2036
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-12 22:39
文章分类

全部博文(40)

文章存档

2013年(3)

2012年(1)

2011年(18)

2010年(18)

分类: C/C++

2011-01-19 22:08:25

1.  需要加GDK_EXPOSURE_MASK和GDK_BUTTON_PRESS_MASK
2. 把GtkDrawingArea设为可接受焦点
    gtk_widget_set_can_focus(videowidget, TRUE);
   下面是为videowidget设置grab-focus事件并做相关动作
    g_signal_connect(G_OBJECT(videowidget), "grab-focus" ,
              G_CALLBACK(videoarea_grab_focus_cb) , NULL);
3.在button-press-event事件中grab focus
static gint 
cb_videoarea_button_event_handler (GtkWidget *widget, GdkEventButton *event, gpointer data)
{
    gtk_widget_grab_focus (widget);
}
4.在videowidget的expose-event中画焦点边框
static gboolean
videoarea_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
{
    if (gtk_widget_has_focus(widget) == TRUE)
    {
        GtkStyle *style;
        gtk_paint_focus(widget->style, widget->window,
                        GTK_STATE_SELECTED,
                        NULL, NULL, NULL, 0, 0,
                        widget->allocation.width-1,
                        widget->allocation.height-1);
    }
阅读(2064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~