免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5988 | 回复: 15
打印 上一主题 下一主题

用glade在对话框做了个绘图区后,画线时提示出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-08 15:33 |只看该作者 |倒序浏览
代码:
gdk_draw_line((GtkWidget *) lookup_widget (hisdialog, "hispic"), ((GtkWidget *)  lookup_widget (hisdialog, "hispic"))->style->black_gc,0,0,10,10);

提示 gdk_draw_line: assertion `gc != NULL' failed
我知道是第一个或是第二个参数错误   但不知道怎么改

论坛徽章:
0
2 [报告]
发表于 2006-12-08 23:58 |只看该作者
要切实区分和了解 GtkWindow 和 GdkWindow。

gdk_draw_line() 函数的第一个参数类型是 GdkDrawable *,它可以接受一个 GdkWindow* 或 GdkPixmap*。

对于 GtkWindow 结构,它里面有一个叫 window 的成员指向 GtkWidget 包含的 GdkWindow。如果 hispic 是一个指向 GtkWidget 对象的指针,那么它的 GdkWindow 可以用 hispic->window 表示。

希望能明白应该怎样修改上面函数的第一个参数了。

论坛徽章:
0
3 [报告]
发表于 2006-12-11 08:40 |只看该作者
改成这样以后还是不行
gdk_draw_line((GtkWidget *) lookup_widget (hisdialog,"hispic")->window,
                             ((GtkWidget *) lookup_widget (hisdialog, "hispic"))->style-> black_gc,0,0,10,10);

错误信息:
gdk_draw_line: assertion `drawable != NULL' failed

论坛徽章:
0
4 [报告]
发表于 2006-12-12 00:08 |只看该作者
在划线的时候,hisdialog 是否已经被显示出来了?

论坛徽章:
0
5 [报告]
发表于 2006-12-12 08:14 |只看该作者
有对话框   但没线啊

论坛徽章:
0
6 [报告]
发表于 2006-12-12 12:53 |只看该作者
在用 gtk_widget_show() 来显示 hisdialog 之前,hisdialog->window 为 NULL;显示之后,hisdialog->window 才指向有效的 GdkWindow 对象。因此,在显示 hisdialog 之后才能进行画线操作,之前则不行。这应该就是你上面错误的原因吧。

论坛徽章:
0
7 [报告]
发表于 2006-12-12 16:35 |只看该作者
不是  不管在前显示还是在后显示都不行

论坛徽章:
0
8 [报告]
发表于 2006-12-12 17:39 |只看该作者
名字为 "hispic" 的 widget 具体是什么类型?是否是一个 TOPLEVEL 的 GtkWindow?

论坛徽章:
0
9 [报告]
发表于 2006-12-12 18:06 |只看该作者
hispic是用glade建立的一块绘图区

论坛徽章:
0
10 [报告]
发表于 2006-12-12 20:22 |只看该作者
画线操作是在什么地方进行的?是在 main() 函数中的 gtk_main() 被调用之前进行的(如果是这样,即使画了线也看不见)?还是在某一事件处理处理函数中进行的(一般不会有什么问题)?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP