在glade中想用线程函数
void *thread_fun(void* pParm)
{
while(1){
GtkWidget* entry=(GtkWidget*)pParm;
static GtkTextBuffer *recv_show;
recv_show=gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
GtkTextIter iter_end;
gtk_text_buffer_get_end_iter(recv_show,&iter_end);
gtk_text_buffer_insert(recv_show,&iter_end,"nihao",-1);
}
return (void*)0;
}
gboolean
on_dialog_map_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
GtkWidget* entry=lookup_widget(GTK_WIDGET(widget),"textview_show");
pthread_t thread_id;
pthread_create(&thread_id,NULL,thread_fun,&entry);
return FALSE;
}
on_dialog_map_event()函数响应窗口dialog 的map_event信号,textview_show是dialog窗口中的一个textview,
该线程函数主要就是想在dialog窗口被map的时候开启一个线程,在其上面的一个textview中不断插入字符串“你好”
,编译没有错误,但是运行的时候,textview中不能显示字符串“你好”,终端有错误提示:
(chat:5769): GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' in cast to `GtkTextView'
(chat:5769): Gtk-CRITICAL **: gtk_text_view_get_buffer: assertion `GTK_IS_TEXT_VIEW (text_view)' failed
(chat:5769): Gtk-CRITICAL **: gtk_text_buffer_get_end_iter: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed
(chat:5769): Gtk-CRITICAL **: gtk_text_buffer_insert: assertion `GTK_IS_TEXT_BUFFER (buffer)' failed
哪位高手给指点一下,谢谢!
glade编程中指针传递
软件和网站开发以及相关技术探讨
-
- 帖子: 448
- 注册时间: 2008-07-10 15:08
前往
- 公告/注意事项
- ↳ 新闻和通知
- ↳ 软件推荐
- 系统安装
- ↳ 教学和常见问答
- ↳ 系统安装和升级
- ↳ 启动和引导
- ↳ 网卡无线拨号
- ↳ 硬件与内核
- ↳ 笔记本及便携设备
- ↳ Ubuntu衍生版
- ↳ 其他类Unix OS发行版
- ↳ Debian发行版
- 配置美化
- ↳ 中文显示和输入法
- ↳ 个人配置文件存放点
- ↳ 软件文档翻译
- ↳ 窗口管理器及美化
- ↳ 桌面展示
- 软件使用
- ↳ 办公、图像、机械电子设计等
- ↳ Vim和Emacs
- ↳ 开源模板库
- ↳ 互联网相关软件
- ↳ 影音多媒体
- ↳ 游戏和模拟器
- ↳ 虚拟机和虚拟化
- ↳ Wine及其分支
- ↳ 其它类软件
- 服务器管理
- ↳ 服务器运维
- ↳ 云计算和容器(K8S/KVM/Docker/WSL等)
- ↳ Ubuntu VPS
- 程序设计与开发
- ↳ Shell脚本
- ↳ 软件/网站开发
- ↳ 内核及嵌入式开发
- ↳ Ubuntu编译和打包
- ↳ 开源小工具
- ↳ 挑战任务
- 感想与交流
- ↳ 深度PK版
- ↳ Ubuntu故事和感慨
- ↳ 同城交流
- ↳ 校园社团
- ↳ 港澳台校区
- ↳ 国外校区
- 站务区
- ↳ 论坛管理
- ↳ Ubuntu中文网上商店