免费注册 查看新帖 |

Chinaunix

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

请高手解决这个 “段错误”问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-31 21:48 |只看该作者 |倒序浏览
写一个聊天的简易窗口,编译通过,运行文件的时候提示“段错误”!!!
以下是代码
#include<gtk/gtk.h>
void on_close(GtkButton *CloseButton,GtkWidget *textview )
{
gtk_main_quit();
}
int main(int argc,char *argv[])
{
   GtkWidget *window;
   GtkWidget *Send_scrolled_win;
   GtkWidget *SendButton;
   GtkWidget *CloseButton;
   GtkWidget *box;
   GtkWidget *Button_Box;
   GtkWidget *text_view;
   GtkWidget *frame;
   GtkTextBuffer *buffer;
   gtk_init(&argc,&argv);
/*---------------------------创建主窗口---------------------------------------*/
   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"时时聊天_罡罡出品");
     gtk_widget_set_size_request(window,250,250);
      gtk_container_set_border_width(GTK_CONTAINER(window),10);
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
   g_signal_connect(GTK_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
/*---------------------输入文本的滚动窗口------------------------------------*/
    Send_scrolled_win = gtk_scrolled_window_new(NULL,NULL);/*生成滚动条的窗口*/
    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(Send_scrolled_win),text_view);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(Send_scrolled_win),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);/*滚动条属性*/
/*-----------------------------------创建盒子--------------------------------*/
     frame = gtk_frame_new("聊天窗口");
     gtk_container_add(GTK_CONTAINER(window),frame);
     box = gtk_vbox_new(FALSE,0);
    gtk_container_add(GTK_CONTAINER(frame),box);
/*------------------------------设置发送按钮------------------------------*/
    SendButton = gtk_button_new_with_label("发送");/*生成发送按钮*/
   // g_signal_connect(G_OBJECT(SaveButton),"clicked",G_CALLBACK(on_send),(gpointer)Send_textview);/*给按钮加上回调函数*/
    /*------------------------------设置关闭按钮------------------------------*/
    CloseButton = gtk_button_new_with_label("关闭");/*生成关闭按钮*/
    g_signal_connect(G_OBJECT(CloseButton),"clicked",G_CALLBACK(on_close),(gpointer)text_view);
/*------------------------------设置按钮盒子------------------------------*/     
    Button_Box = gtk_hbutton_box_new();/*生成按钮盒*/
    gtk_box_set_spacing(GTK_BOX(Button_Box),1);/*按钮之间的间隔*/
    gtk_button_box_set_layout(GTK_BUTTON_BOX(Button_Box),GTK_BUTTONBOX_END);/*按钮盒内部布局,风格是尾对齐*/
    gtk_container_set_border_width(GTK_CONTAINER(Button_Box),5);/*边框宽*/
/*------------------------------文本区域----------------------------------------*/
    text_view = gtk_text_view_new();
    gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_view),GTK_WRAP_WORD);/*处理多行显示的模式*/
    gtk_text_view_set_justification(GTK_TEXT_VIEW(text_view),GTK_JUSTIFY_LEFT);/*控制文字显示方向的,对齐方式*/
    gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view),TRUE);/*允许text view内容修改*/
    gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text_view),TRUE);/*设置光标可见*/
        gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(text_view),5);/*设置上行距*/
    gtk_text_view_set_pixels_below_lines(GTK_TEXT_VIEW(text_view),5);/*设置下行距*/
    gtk_text_view_set_pixels_inside_wrap(GTK_TEXT_VIEW(text_view),5);/*设置词距*/
        gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_view),10);/*设置左边距*/
    gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text_view),10);/*设置右边距*/
     buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
/*--------------------------------装盒------------------------------------------*/
    gtk_container_add(GTK_CONTAINER(box),Send_scrolled_win);/*包装滚动条窗口到主窗口*/   
    gtk_container_add(GTK_CONTAINER(box),Button_Box);/*把按钮盒包装到vbox中*/
    gtk_box_pack_start(GTK_BOX(Button_Box),CloseButton,TRUE,TRUE,5);/*把关闭按钮包装到按钮盒里面去*/
    gtk_box_pack_start(GTK_BOX(Button_Box),SendButton,TRUE,TRUE,5);/*把发送按钮包装到按钮盒里面去*/
   
   //gtk_widget_show(view);
   gtk_widget_show_all(window);
   gtk_main();
                     
      
return FALSE;



}
请高手解决!!!

论坛徽章:
0
2 [报告]
发表于 2009-11-01 16:09 |只看该作者
GtkTextBuffer *buffer;

buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
应该是指针未初始化吧。

论坛徽章:
0
3 [报告]
发表于 2009-11-01 20:28 |只看该作者
/*---------------------输入文本的滚动窗口------------------------------------*/
    Send_scrolled_win = gtk_scrolled_window_new(NULL,NULL);/*生成滚动条的窗口*/
    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(Send_scrolled_win),text_view);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(Send_scrolled_win),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);/*滚动条属性*/

出在这一句。你gtk_scrolled_window_add_with_viewport的时候,text_view还没有生成,它还是个野指针呢!

论坛徽章:
0
4 [报告]
发表于 2009-11-25 19:17 |只看该作者
谢谢大家!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP