GTK:Invalid UTF8 string passed to pango_layout_set_text()问题(已解决)

发布于 2022-08-24 02:17:32 字数 8656 浏览 9 评论 1

  1. #include<gtk/gtk.h>
  2. #include <strings.h>
  3. #include<stdlib.h>
  4. #include<unistd.h>
  5.         GtkWidget *window;
  6.         GtkWidget *iptxt;
  7.         GtkWidget *porttxt;
  8.         GtkWidget *table;
  9.         GtkWidget *sendbutton;
  10.         GtkWidget *stopbutton;
  11.         GtkWidget *iplabel;
  12.         GtkWidget *portlabel;
  13.         char title[]="Oracle Monitor Platform";
  14.         char iptext[15],porttext[4];
  15.         void destroy( GtkWidget *widget, gpointer  data )
  16.         {
  17.                 gtk_main_quit();//退出程序
  18.         }
  19.        
  20.         void send_clicked(GtkWidget *widget,gpointer data)
  21.         {
  22.                 strcpy(iptext,gtk_entry_get_text(GTK_ENTRY(iptxt)));//get ip to iptext
  23.                 strcpy(porttext,gtk_entry_get_text(GTK_ENTRY(porttxt)));//get port to porttext
  24.         }
  25.         void stop_clicked(GtkWidget *widget,gpointer data)
  26.         {
  27.                 //system("/startoracle.sh start");
  28.                 //execl("/mytest.c",NULL);
  29.         }
  30.         void interface()//interface design
  31.         {
  32.                 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);       
  33.                 gtk_window_set_title((GtkWindow*)window,title);
  34.                 gtk_widget_set_usize(window,600,400);
  35.                 gtk_widget_set_uposition(window,200,150);
  36.        
  37.                 table=gtk_table_new(
  38. 4,4,FALSE);
  39.                 iplabel=gtk_label_new("IP Address:");//label:add IP address
  40.                 iptxt=gtk_entry_new_with_max_length(15);//add ip txt       
  41.                 portlabel=gtk_label_new("PORT:");//label:add PORT ID
  42.                 porttxt=gtk_entry_new_with_max_length(4);//add port txt
  43.        
  44.                 sendbutton=gtk_button_new_with_label("SEND");//button:send message
  45.                 stopbutton=gtk_button_new_with_label("STOP");//button:stop send message
  46.        
  47.                 gtk_container_add((GtkContainer*)window,table);//add container
  48.                 gtk_table_attach(GTK_TABLE(table),sendbutton,0,1,3,4,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  49.                 gtk_table_attach(GTK_TABLE(table),stopbutton,2,3,3,4,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  50.                 gtk_table_attach(GTK_TABLE(table),iplabel,0,1,0,1,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  51.                 gtk_table_attach(GTK_TABLE(table),portlabel,0,1,1,2,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  52.                 gtk_table_attach(GTK_TABLE(table),iptxt,2,3,0,1,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  53.                 gtk_table_attach(GTK_TABLE(table),porttxt,2,3,1,2,(GtkAttachOptions)(GTK_FILL),(GtkAttachOptions)(0),0,0);
  54.                 gtk_widget_show(window);
  55.                 gtk_widget_show(table);
  56.                 gtk_widget_show(iptxt);
  57.                 gtk_widget_show(porttxt);
  58.                 gtk_widget_show(sendbutton);
  59.                 gtk_widget_show(stopbutton);
  60.                 gtk_widget_show(iplabel);
  61.                 gtk_widget_show(portlabel);
  62.         }
  63.         void addsignal()//set signal
  64.         {                     
  65.                 //当使用窗口管理器关闭窗口时,将调用 delete_event() 函数
  66.                 //本例中所传递的参数是 NULL
  67.                 gtk_signal_connect (GTK_OBJECT (window), "delete_event",gtk_main_quit, NULL);
  68.      
  69.                 //把 "destroy" 事件和信号处理器联系起来
  70.                 //gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);  
  71.   
  72.                 //建立一个标签是"Hello World"的按钮
  73.                 //button = gtk_button_new_with_label ("Hello World");
  74.      
  75.                 //当按钮被单击时,调用 gtk_widget_destroy(window)关闭窗口。
  76.                 //这里将引发 "destroy" 信号
  77.                 //gtk_signal_connect_object (GTK_OBJECT (sendbutton), "clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),        GTK_OBJECT (window));
  78.      
  79.                 //当按钮被单击时,即接收到"clicked"信号,将调用destroy()函数
  80.                 //gtk_signal_connect (GTK_OBJECT (sendbutton), "clicked",GTK_SIGNAL_FUNC (destroy), NULL);
  81.                 //当按钮被单击时,即接收到"clicked"信号,将调用 hello()函数
  82.                 gtk_signal_connect (GTK_OBJECT (stopbutton), "clicked",GTK_SIGNAL_FUNC (stop_clicked), NULL);
  83.         }
  84.         int main(int argc,char *argv[])
  85.         {
  86.                 //gtk_set_locale();
  87.                 gtk_init(&argc,&argv);//gtk 初始化
  88.                 interface();
  89.                 addsignal();
  90.                 gtk_main();
  91.         return 0;
  92.         }

复制代码我运行上述程序时出现:
** (hello:843): WARNING **: Invalid UTF8 string passed to pango_layout_set_text()

** (hello:843): WARNING **: Invalid UTF8 string passed to pango_layout_set_text()
的警告,应该怎么解决阿?请高手指教!

[ 本帖最后由 pc521 于 2010-1-28 19:20 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陪你搞怪i 2022-08-30 20:35:52

使用g_locale_to_utf8()函数。
使用方法:
g_locale_to_utf8(“确定”,-1,0,0,0)
可以定义一个函数,以后调用这个函数比较方便。
char *_(char *c)
{
    return(g_locale_to_utf8(c,-1,0,0,0));
}
如果需要调用就用 _("确定")就可以了。

比如设置标题:
gtk_window_set_title (GTK_WINDOW (window), _("你好!"))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文