我想做一个程序,将运行在任何(或至少大部分)基于X11的GUI系统,无论是KDE,Gnome,Xfce等,所以,我得出结论,我必须写它只使用X11函数。不幸的是,我发现X11不支持UTF-8编码。我现在想要的是,当我的程序崩溃并且无法使用任何更高级别的GUI系统时,以某种方式向最终用户显示一个消息框。我听说过一些控制台应用程序,比如“zenity”和“kdialog”,但是我不能使用它们,因为我不能保证它们中的任何一个都可用(我的发行版,例如,默认情况下没有安装这样的软件)
kpbwa7wx1#
你的问题有两种可能的解决方案。经由Xutf8DrawString(参见here或here)或者如果宏X_HAVE_UTF8_STRING不存在,那么你必须将多字节序列转换为两字节序列(例如here),并使用XDrawText16或XDrawString16绘制字符串。
Xutf8DrawString
X_HAVE_UTF8_STRING
**参见:**核心字体子系统
t0ybt7op2#
try https://github.com/Eleobert/MessageBox-X11这是一个轻量级的消息框项目,只使用X11进行渲染,如果你想避免项目的外部依赖,这是非常有用的。该函数旨在为你提供给予灵活性。你可以通过更改源代码轻松自定义输出。
2条答案
按热度按时间kpbwa7wx1#
你的问题有两种可能的解决方案。
经由
Xutf8DrawString
(参见here或here)或者如果宏
X_HAVE_UTF8_STRING
不存在,那么你必须将多字节序列转换为两字节序列(例如here),并使用XDrawText16或XDrawString16绘制字符串。**参见:**核心字体子系统
t0ybt7op2#
try https://github.com/Eleobert/MessageBox-X11这是一个轻量级的消息框项目,只使用X11进行渲染,如果你想避免项目的外部依赖,这是非常有用的。该函数旨在为你提供给予灵活性。你可以通过更改源代码轻松自定义输出。