C++程序设计:原理与实践(进阶篇)17.4 使用GUI库

简介:

17.4 使用GUI库


在本书中,我们不直接采用操作系统的图形和GUI(图形用户界面)工具,否则会将程序限制在一种特定的操作系统上,而且需要处理很多复杂的细节问题。与处理文本I/O一样,我们将使用一个函数库来消除操作系统间的差异、I/O设备的变化等问题,并简化程序代码。不幸的是,C++并没有提供一个像标准流I/O库一样的标准GUI库,于是我们从很多可用的C++ GUI库选择了一个。为了不局限于这种GUI库,并且避免一开始就接触其复杂功能,我们只使用一组在任何GUI库中都只需几百行程序就能实现的接口类。

我们使用的(目前还只是间接使用)GUI工具包名为FLTK(Fast Light Tool Kit,读作“full tick”),该工具包源自www.f?ltk.org。我们的代码可以移植到任何使用FLTK的平台(Windows、Unix、Mac、Linux等)。我们的接口类也可以使用其他的图形工具包重新实现,因此基于它的代码的移植性实际上还要更好一些。

接口类实现的编程模型比通常的工具包提供的更简单。例如,我们整个图形和GUI接口库的C++代码大约为600行,而最简单的FLTK文档也达370页。你可以从www.f?ltk.org下载,但我们并不推荐你阅读,目前还不需要那些细节。第17~21章给出的概念可用于任何一个流行的GUI工具包,当然我们也会解释接口类是如何映射到FLTK的,以便在必要的时候能够直接使用其他的工具包。

我们实现的“图形世界”的部分结构如下:

 

接口类为二维形状提供了简单、用户可扩展的基本框架,并支持简单的颜色。为了实现这些功能,我们给出了基于“回调函数”的GUI概念,这些函数由屏幕上的用户自定义按钮等组件触发(参见第21章)。

相关文章
|
2月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
74 6
|
2月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
108 10
|
2月前
|
编译器 C++ 开发者
【C++】深入解析C/C++内存管理:new与delete的使用及原理(三)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
2月前
|
存储 C++
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
27 2
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
|
2月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
74 5
|
2月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
67 1
|
2月前
|
存储 编译器 C语言
C++类与对象深度解析(一):从抽象到实践的全面入门指南
C++类与对象深度解析(一):从抽象到实践的全面入门指南
51 8
|
2月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
42 1
|
15天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
26 2
|
21天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
55 5