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章)。

时间: 2024-07-29 09:34:09

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

c++-关于《C++程序设计原理与实践》第3章例子的一个问题

问题描述 关于<C++程序设计原理与实践>第3章例子的一个问题 本人菜鸟,现正在学习C++.<C++程序设计原理与实践>第3章有一个例子,代码如下: #include #include #include #include #include using namespace std; inline void keep_window_open(){ char ch; cin >> ch; } int main() //C++ Programs start by executi

源代码-C++程序设计原理与实践

问题描述 C++程序设计原理与实践 #include "std_lib_facilities.h" int main() { cout<<"Hello,world!n"; return 0; } 我下了源代码,放到那里才能猜VC98编译时不出错?最好详细点,带有图解 解决方案 ...大哥,都什么年代了还用98

C++程序设计:原理与实践(进阶篇)17.8 让图形程序运行起来

17.8 让图形程序运行起来 我们已经看到了如何创建窗口以及如何在窗口中绘制各种各样的形状.在后续章节中,我们将会看到这些Shape类是如何定义的,以及它们更多的使用方法. 为了使这个图形程序运行起来,还需要其他程序的帮助.除了主函数中已有的代码外,我们还需要编译接口库代码,安装FLTK库(或者所使用的任何GUI系统),并将它与我们的代码正确地链接在一起,才能让这个图形程序运行起来. 我们可以将这个程序看作由4个不同的部分构成: 我们编写的代码(main()函数等): 接口库(Window.Sh

C++程序设计:原理与实践(进阶篇)17.1 为什么要使用图形

摘要 Programming: Principles and Practice Using C++, Second Edition 一个显示模型 直到20世纪30年代,世界才从黑白变成彩色的. --Calvin's dad 本章描述了一个显示模型(GUI的输出部分),并给出了使用方法和一些基本概念,如屏幕坐标.线和颜色等.Line.Lines.Polygon.Axis和Text都是Shape的实例.Shape是内存中的一个对象,我们可以将其显示在屏幕上并进行适当的操作.后面两章将进一步探讨这些类

C++程序设计:原理与实践(进阶篇)17.2 一个基本显示模型

17.2 一个基本显示模型 iostream库是面向字符的输入输出流,用于处理数值序列或者书籍文本最为适合.其中,直接支持图形位置概念的仅有newline和tab控制字符.版面设计(排版."标注")语言,如Troff.TeX.Word.HTTP.XML(及其配套的图形包),允许在一维字符流中嵌入颜色和二维位置等概念.例如:   这段HTML代码指定了一个文档头(<h2>-</h2>).一个包含若干列表项(<il>-</il>)的列表(&l

《 C++程序设计:原理与实践(进阶篇.》导读

本节书摘来自华章出版社< C++程序设计:原理与实践(进阶篇)>一书中作者[美] 本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup) 著 刘晓光 李忠伟 王刚 译     前 言 Programming: Principles and Practice Using C++, Second Edition 该死的鱼雷!全速前进. --Admiral Farragut 程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式.程序设计中很多工作都花费在寻找求解方案以及对其求精上

100分求java语言程序设计进阶篇pdf

问题描述 求java语言程序设计进阶篇pdf 解决方案 解决方案二:同求啊!!!解决方案三:这个网上是没有的,我也在网上找过,我建议你去网上找java核心技术<上下卷>pdf这本书写的也是不错的,,这个网上有电子书的,,这两本书配合着java编程思想,相当的不错的解决方案四:真正的进阶是需要项目练习的,纸上得来终觉浅解决方案五:引用2楼xinzailiulei的回复: 这个网上是没有的,我也在网上找过,我建议你去网上找java核心技术<上下卷>pdf这本书写的也是不错的,,这个网上

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一点Git--20分钟git快速上手 里的踊跃发言.这里再次分享干货, 简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一 致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上

Node.js Stream - 进阶篇

上篇(基础篇)主要介绍了Stream的基本概念和用法,本篇将深入剖析背后工作原理,重点是如何实现流式数据处理和 back pressure 机制. 目录 本篇介绍 stream 是如何实现流式数据处理的. 数据生产和消耗的媒介 为什么使用流取数据 下面是一个读取文件内容的例子: const fs = require('fs') fs.readFile(file, function (err, body) { console.log(body) console.log(body.toString(