您的位置:首页 > 其它

VC2005使用GTK+(4)

2009-10-23 15:54 225 查看
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在设计界面

的时候默认让窗体不可绘图,只要把窗体绘图设置为可以绘图就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: