Chinaunix首页 | 论坛 | 博客
  • 博客访问: 472378
  • 博文数量: 88
  • 博客积分: 1677
  • 博客等级: 上尉
  • 技术积分: 667
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-03 22:17
文章分类

全部博文(88)

文章存档

2013年(1)

2012年(18)

2011年(69)

分类: 嵌入式

2011-11-25 17:33:23

1 X 窗口系统

1.1 X 服务器

    X 服务器,是一个运行在用户计算机上的程序,它负责图形化显示硬件设备的控制工作,完成具体的输入和输出操作。 X 服务器响应来自 X 客户程序的请求,在屏幕上“画画”或者读取键盘或鼠标的输入。它负责传递输入数据以及向客户程序报告鼠标移动和按扭动作等事件

1.2 X 协议

    X 客户程序和 X 服务器之间的一切交互操作都必须通过交换消息才能进行。消息的类型、用途和用法就构成 X 协议。

1.3 Xlib 库

    Xlib 库是一个 C 语言函数库,它为 X 协议里的信息交换提供了一个 API 。 Xlib 本身并没有增加太多的东西 --- 它只能在屏幕上画线条和对鼠标动作做出响应。如果你需要菜单、按扭、滚动条以及其它的东西,就必须自己编写它们。

1.4 X 客户

    X 客户即客户程序,它使用 X 协议消息与 X 服务器进行通信,让服务器完成图象的显示等工作,而这些消息是通过 Xlib 函数来收发的

1.5 X 工具包

    由于 Xlib 库只能在屏幕上画线条,程序员如果要使用菜单的话必须自己编写它们的实现代码。常用的操作界面元素如按扭、滚动条和菜单等早就被实现很多次了。把绘制按扭、菜单等操作界面元素的代码收集到一起就形成了人们所说的工具包。

1.6 X 窗口管理器

    窗口管理器是一个特殊的 X 客户,负责其它的客户(顾名思义,窗口管理器即管理窗口的程序)。它安排客户窗口在显示屏幕上的摆放位置,负责完成移动窗口和调整窗口尺寸等管理性工作。

2 基本概念

2.1 常见单词

    widget /wi 矩 / 构件
    emit:发出
    wrap:换行
    shrink:收缩

2.2 什么是 GNOME?

    GNOME 是一个包含了许多应用软件的桌面环境(并非桌面管理器),相当于 shell ,用户通过它来于系统进行交互。
    使用 GTK+ 编写的程序可以在 KDE 桌面环境中运行。使用 QT 编写的程序同样可以在 GNOME 桌面环境中运行。

2.3 什么是 GTK+?

    GTK+ ( GIMP Toolkit )是一个用于创建图形用户接口的图形库,它是建立在 GDK 库( GIMP 绘图工具包)的基础上的。 gdk 是对 Xlib 函数库的封装。我们可以在多种编程语言中使用 GTK+ ,要做到这一点首先必须进行绑定。
    在使用 GTK+ 开发 GNOME 的过程中,由于实际需要,在 GTK+ 原有构件的基础上,又开发了一些新的构件。一般把这些构件成为 GNOME 构件,它们是对 GTK+ 构件库的补充,提供了许多 GTK+ 构件没有的功能

2.4 什么是 GTKmm ?

    GTKmm 是 GTK+ 的 C++ 封装,它原来命名为 gtk--, 因为在 GTK+ 中已经含有一个 + 号。然而搜索引擎很难索引 -- 这个符号 , 所以最后定名为 gtkmm 。 gtkmm 允许你写代码时使用通常的 C++ 的技术 , 比如、封装、派生和多态。作为一个 C++ 程序员 , 你可能已经意识到这会导致更清晰的 , 更好组织过的代码。

2.5 开发工具

    Glade 是一个界面构建器(相当于 VC++ 中的资源编辑器),它可以图形化地构建应用程序界面,而不必手动从源代码开始构建。 glade 使用 XML 文件来描述其所创建的资源,而 libglade 函数库中的函数则通过读取 *.glade 文件来生成绘制应用程序界面的代码。

Devhelp 是一个文档浏览器,是为了阅读用 gtk-doc 生成的文档而设计的, gtk-doc 是构建 GTK+ 文档的标准工具,用来为用户自己定义的函数和宏等创建一个文档好让别人使用这些函数。在使用 gtk+ 来编程时,如果碰到了不懂的函数,则可以使用 Devhelp 来查询。当要查询信号的定义时,使用“the 事件名”来查询

补充:

    Python ( 派送 )是一种解释性语言,虽然它是一种解释型语言,但与 Perl 、 TCL 等其它解释型语言不同的是,它有自己的编译过程,首先将源文件编译成字节码文件,然后在 python 虚拟机上运行
   Ruby 是一种面向对象的脚本语言,所有的数据在 Ruby 里面全是对象,不像 Python 或 Perl 那样,是面向过程的语言

3 GTK+ 的开发环境架构

3.1 GTK+ 库的安装

   pkg-config 命令

  1. 在程序设计的过程中,如果使用了共享库,可以在编译选项中使用 pkg-config 命令来定位共享库的路径。 pkg-config 命令的输出为“ -I 头文件路径 –L 库文件路径”
  2. 当编译好的程序在其它主机上运行时,也是通过 pkg-config 程序来获得本地计算机上的共享库的位置而获得运行的
  3. pkg-config 命令通过它所维护的一些 *.pc 文件来获得要用到的共享库的命令,因此在安装其它库软件包时,首先必须安装 pkg-config ,这样在安装软件包的过程中才能自动将与该软件包相关的 *.pc 文件复制到 pkg-config 命令维护 *.pc 文件的目录中。
  4. 程序中用到的头文件只在编译预处理阶段使用,而库文件则在连接阶段使用
  5. 编译选项: gcc base.c -o base `pkg-config --cflags 用到的库 --libs 用到的库 ` 。例如:程序中用到了 gtk+-2.0` ,则使用 gcc base.c -o base `pkg-config --cflags gtk+-2.0--libs gtk+-2.0`

补充:

  1. /usr/share 目录用来存放系统中用来共享的文件
  2. /usr/local 目录为用户自己安装软件包时的默认目录,用来保存用户自己安装的软件
  3. 如果要将源代码软件包安装到指定的目录,则在软件包配置时给出安装路径。例如: ./configure –prefix=/usr/local/gtk
  4. 安装 gtk+ 软件包时,首先必须安全它所依赖的共享库
阅读(1876) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~