我的主要经验是C和C++,因此我更愿意继续使用它们。我不想使用类似QT、GTK或wxWidgets这样的工具包。我想学习本地编程,这有点违背了初衷。考虑到这一点,我也想避免使用Java。
我了解gnome、xfce以及KDE等都是Linux的桌面环境,通常安装的基础是X(Xorg)。在为Linux编程时,你是为X还是为桌面环境编码?是否有用于此的标准Linux头文件(就像win32有windows.h)?还是对于每个桌面环境都有不同的编程方法?
非常感谢任何帮助。
我的主要经验是C和C++,因此我更愿意继续使用它们。我不想使用类似QT、GTK或wxWidgets这样的工具包。我想学习本地编程,这有点违背了初衷。考虑到这一点,我也想避免使用Java。
我了解gnome、xfce以及KDE等都是Linux的桌面环境,通常安装的基础是X(Xorg)。在为Linux编程时,你是为X还是为桌面环境编码?是否有用于此的标准Linux头文件(就像win32有windows.h)?还是对于每个桌面环境都有不同的编程方法?
非常感谢任何帮助。
X是一种难以编程的层级,尽管你想避开Java、QT或任何其他优秀的UI抽象层,但如果你按照这个层级进行编码,你会自欺欺人。我曾经这样做过(在我们使用平台上Motif还处于起步阶段的很久以前),如果有更简单的方法,我绝不会再这样做。
你使用"native programming"这个短语有些令我困惑。如果你想学习本地编程,就要选择调用的API。同样的道理,你也不应该使用C编程,而是选择汇编语言(或直接使用机器语言),因为C提供了对硬件的抽象。
如果你想学习X编程,那也无可厚非。你将会拥有更多控制界面的能力,但几乎所有其他人都将在软件交付方面超过你。就我个人而言,我更喜欢使用可以在许多平台上使用的高级API进行编码——这既可以提高交付速度,还可以增加市场潜力。
建造房子不是用原子,而是用砖头。我的建议是使用工具,它们就是为此而存在的。
我不想使用类似QT、GTK或wxWidgets等工具包。我想学习本地编程,这样做有点违背初衷。
你不需要这样做。在早期的X11版本中,如R1或R2,我仅使用Xlib编写了完整的“Hello,world”程序。
大约700行C代码。
你不想走这条路。
我想你可以直接使用C代码针对Xlib,但是你最终会重新创建所有GTK+或QT提供的X本身无法提供的功能。
Unix(以及Linux)实际上并没有定义与GUI有关的任何内容。常用的X也不定义与小部件或样式等有关的任何内容,它主要涉及绘图和事件处理。基本上,如果你想要纯粹使用X编写程序,你需要定义屏幕上每个元素的形状和行为。如果你足够疯狂放弃X,那么你将会在图形帧缓冲区级别工作...
如果您要使用一些工具包,最好使用轻量级的工具包,为什么不尝试FLTK呢?
GTK、QT和wx是基于X构建的工具包,提供了更友好的API。
如果您不使用现有的工具包,您需要在非常低的级别上编写内容 - 直接处理鼠标和键盘事件。如果您想要一个按钮或文本框,您必须使用低级xlib原语自己编写它。
在尝试此操作之前,最好选择首选桌面环境的工具包并从那里开始。
在这种情况下,没有所谓的“本地语言”。Windows和OS X只是有一个官方选项,而X没有。
哦,是的,有这样的“本地”东西:
FBUI、svgalib、directfb、exa(kdrive)、SDL、Allegro..+Wayland,虽然不是主流。
http://home.comcast.net/~fbui/