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在设计界面
的时候默认让窗体不可绘图,只要把窗体绘图设置为可以绘图就可以了。
VC2005使用GTK+(4)
最新推荐文章于 2021-08-29 11:01:33 发布