[转载]GTK+ 编程[1]

您所在的位置:网站首页 gdk编程 [转载]GTK+ 编程[1]

[转载]GTK+ 编程[1]

2023-10-16 16:17| 来源: 网络整理| 查看: 265

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:论坛中有人说 GTK+ 并不支持中文,是这样吗?问:为什么在控件上的汉字无法显示,并伴有如下错误警告?问:为什么在屏幕上输出的汉字变成了乱码?问:在修改控件字体的第一步就发生了错误,为什么 gdk_font_load() 总是失败?问:我不想使用宋体,怎样获得其它字体的代号?问:你为什么没有说到 gettext() 及相关国际化标准?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:论坛中有人说 GTK+ 并不支持中文,是这样吗?-----------------------------------------------------------答:GTK+ 采用 UTF-8 编码就是为了支持多字节文字,所以GTK+肯定支持中文,而且非常出色,你可以看到网上使用 GTK+ 编写的中文软件数不胜数,所以没必要理会那种说法。( 我真的看过这类的帖子,误人子弟...呵呵... )>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:为什么在控件上的汉字无法显示,并伴有如下错误警告:"** (:1864): WARNING **: Invalid UTF8 string passed topango_layout_set_text()"-----------------------------------------------------------答:GTK+ 中的字符串均采用 UTF-8 格式编码,这个提示就是告诉您,程序中的字符串编码格式不是 UTF-8,通常这是由编辑器造成的,例如在我的 VC7 中,默认的存档编码格式为 GB2312。但是,除了将文件以 UTF-8编码格式存档外,你还可以使用glib 的转换函数在程序的运行过程中将字符串转换为 UTF-8。例如: 将button = gtk_button_new_with_label( "确定" );改成button = gtk_button_new_with_label(g_locale_to_utf8("确定",4,NULL,NULL,NULL));>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:为什么在屏幕上输出的汉字变成了乱码?-----------------------------------------------------------答:既然可以显示乱码,就表明与编码格式无关。您可能已经想到了 --- 对,问题就出在字体上。一般情况下,系统会用"Sans"作为默认字体,但这种字体中只包含了 ASCII 码,所以汉字是无法显示的。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:在修改控件字体的第一步就发生了错误,gdk_font_load()总是失败,为什么?-----------------------------------------------------------答:首先向您提供一些建议:1.不要用 GDK 的一些函数更改字体,因为那是 GTK+的不稳定因素之一(至少在2.0以下版本中是这样的)。2.为了获得更多的字体,应该避免使用 GdkFont类型,及相关函数,取而代之的是 Pango 库,这是 GTK+ 的一部分。3.GdkFont 只能使用 XFont 字体,而且使用方法相对复杂,PangoFontDescription 可以使用 XFont,以及一些本地字体,包括 Win Font, XRender Font, TrueType Font,所以您没有必要再留恋 GdkFont 了。4.您不需要修改所有控件,更简便的方法是在主窗口创建后立即修改它的字体,将来创建的控件会继承它的这项属性。例如:window = gtk_window_new( GTK_WINDOW_TOPLEVEL );{GtkStyle *style = gtk_rc_get_style( window );pango_font_description_set_family(style->font_desc, "Stsong" );gtk_widget_set_style( window, style );}( 这三句代码是将程序的字体设置为 "华文宋体" )>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:我不想使用宋体,怎样获得其它字体的代号?-----------------------------------------------------------答:部分字体的代号和它的文件名是相同的,例如黑体的代码为"Simhei",华文宋体为"Stsong"。您还可以通过一些 Linux/Unix 下的编辑软件的字体选择框来查找字体对应的代码。但标准的方法是调用 Pango库中的相应函数来查找机器上已安装的字体。如果想了解更多关于 Pango的高级使用方法,请参考它自带的 API 开发手册。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>问:你为什么没有说到 gettext() 及相关国际化标准?-----------------------------------------------------------答:目前国内多数程序员采用这个办法汉化程序,所以我没有必要再多说。但它不一定对每个人都合适,我通常采用自己管理语言模块的方法实现国际化,这在很多情况下要比 gettext()更方便。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 作 者:付强> 兴 趣:ASM/C/C++/Java/Perl/GTK+/CGI/ISAPI/Linux ...> Email:[email protected]> OICQ:775341>--------------------------------------------------------->



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3