VC2005使用GTK+(4)

11 篇文章 0 订阅
8 篇文章 0 订阅

1. 用glade-3制作的界面中,响应事件的时候,在运行时出现无法找到的问题:
    libglade-WARNING **: could not find signal handler*************
查找网上的解决方案,在linux下gcc编译选项的问题,解决方案如下:
    1, 在信号回调函数的前边加上G_MODULE_EXPORT
    2, 在gcc编译选项中增加-rdynamic
但是在VC环境下怎么做呢?一直没有找到合适的解决办法。因此决定之后不用自动连接回调

函数的功能了,因此就要取消glade_xml_signal_autoconnect的调用。改用

g_signal_connect人工对信号和回调函数进行连接。

2. 在界面中绘图,不显示的问题
    为了绘图,我给窗口增加了
g_signal_connect(G_OBJECT(window1),"configure-event",G_CALLBACK

(on_window1_configure_event),NULL);
    g_signal_connect(G_OBJECT(window1),"expose-event",G_CALLBACK

(on_window1_expose_event),NULL);两个信号,分别在回调函数中绘图和显示
static GdkPixmap *pixmap = NULL;
static gint on_window1_expose_event(GtkWidget *widget,GdkEventExpose 

*event,gpointer data)
{
    gdk_draw_pixmap(widget->window,
        widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
        pixmap,
        event->area.x, event->area.y,
        event->area.x, event->area.y,
        event->area.width, event->area.height);

    g_print("area.x=%d, area.y=%d/r/n",event->area.x,event->area.y);
    g_print("area.width=%d, area.height=%d/r/n",event->area.width,event-

>area.height);
    return FALSE;
}

static gint on_window1_configure_event(GtkWidget *widget,GdkEventConfigure

*event,gpointer data)
{
    if (pixmap)
        gdk_pixmap_unref(pixmap);
    pixmap = gdk_pixmap_new(widget->window,

            widget->allocation.width,
        widget->allocation.height,
        -1);
    gdk_draw_line (pixmap,
        widget->style->black_gc,
        0, 0,
        100,
        100);
    return TRUE;
}

不知道为什么,绘制的直线始终没能出来,好奇怪啊。终于找到原因了,是glade在设计界面

的时候默认让窗体不可绘图,只要把窗体绘图设置为可以绘图就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值