简单的例子

在开始介绍 gtkmm 之前,我们将以一个尽可能简单的程序开始。这个程序创建一个 200 x 200 像素大小的空窗口。

源代码

File: base.cc (For use with gtkmm 3, not gtkmm 2)

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);

  Gtk::Window window;

  Gtk::Main::run(window);

  return EXIT_SUCCESS;
}

我们会逐行讲解这个例子

#include <gtkmm.h>

所有的 gtkmm 程序都需要包含一些特定的 gtkmm 头文件;gtkmm.h 包含了所有 gtkmm 的内容。通常来说,这并不是一个好主意,因为它包括了一兆左右的头文件。当然,对于这个简单的程序,这就够了。

下面一行:

Gtk::Main kit(argc, argv);
创建了一个 Gtk::Main 对象。这是所有的 gtkmm 程序中所必须的。这个对象的构造函数初始化了 gtkmm,并且检查传递给你的程序的命令行参数,从中寻找像 -display 这样的标准选项。然后它会将这些可以识别的参数从参数列表中删除,留下那些它不能识别的选项,交由你的程序处理或者忽略。这样就保证了 gtkmm 应用程序能和其它程序一样接受所有的标准参数。

接下来的两行代码创建并显示了一个窗口:

Gtk::Window window;

最后一行显示窗口,并且进入 gtkmm 的主处理循环,它将一直运行到窗口被关闭。

Gtk::Main::run(window);

将源代码保存到 simple.cc 后,你可以使用 gcc 编译上面的程序:

g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`
注意,你必须将 pkg-config 的调用包含在一对反单引号中。反单引号会导致其内的命令由 shell 执行,并且将命令的输出做为该命令行的一部分来使用。