X11 上的编辑框

Edit box on X11

有没有什么方法可以在纯 X11 C 或 C++ 代码中创建一个简单的编辑框?

"plain X11 C or C++ code" 我的意思是在 XCreateSimpleWindow 上创建控件,创建 window 作为 Win32 API 中的 CreateWindow("edit"..) 等价物 API。

如果没有,我有什么选择可以为简单的编辑框输入对话框提供一个具有最少依赖性的简单编辑框(即,请不要使用 Qt)?

X11 是一个非常低级的协议。它提供了创建个人 windows、利用他们并接收个人输入事件的能力,仅此而已。就是这样。

提供高级用户界面(如编辑框)的工作是针对更高级别的工具包,如 Qt 或 Gtk。这些是最常见的工具包。还有一些不太受欢迎的。

但最重要的是,没有 "edit controls" 任何类型的 Xlib,您用来讨论 X11 协议的库。如果您唯一需要的依赖项是 Xlib,那么您可以使用自己的代码实际实现编辑控件。如果您不想使用任何常见的字体处理库,如 fontconfig 和 freetype,您将不得不编写代码来枚举 X 服务器的内置字体、处理键盘输入和绘制您的编辑控件。只是将 X11 中使用的有点晦涩的键盘编码转换成可用的东西,比如 UTF-8 或 unicode,就需要几百行代码。

所以这里的答案是:使用Qt或者Gtk。

Plain X11 没有这样的功能 - 它是一个低级 windowing 工具包(打开和维护 windows,接收输入事件, 绘制到 windows)。

如果您准备从可用的原语中编写这样的编辑 window,那没问题。如果没有,您需要使用一些工具包来为您完成。提供此类功能的最简单和最轻量级的可能是 Athena 小部件(以防您对外观和感觉不是特别挑剔)。

作为 X 小部件的低级替代品,您可以使用 Xaw 库、Motif 库或 Xforms 库。