Skip to Main Content
C++程序设计:原理与实践(进阶篇)(原书第2版)
book

C++程序设计:原理与实践(进阶篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
10h 35m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(进阶篇)(原书第2版)

21.7 添加菜单

下面我们通过为画线程序添加菜单,来进一步研究“控制流反转”带来的控制和通信问题。首先,我们提供一个简单的菜单,允许用户改变lines成员变量中所有线的颜色。下面我们添加color_menu菜单及其回调函数:

重复写出这些几乎相同的回调函数和“动作”函数非常乏味。但是,这在概念上比较简单,而且那些在输入方面更加简单的方式也超出了本书的讨论范围。如果你愿意,可以使用lambda表达式代替cb_函数。当一个菜单按钮被按下时,它会将线改为所要求的颜色。

我们需要初始化已经定义的color_menu成员:

这些按钮是动态添加到菜单上的(使用attach()),并且可以根据需要移除和替换它们。Menu::attach()调整按钮的尺寸和位置,并将它们添加到窗口中。这就是这段代码的全部工作,结果如下:

程序运行了一段时间之后,我们发现真正需要的是一个“弹出式”菜单;也就是说,我们不希望把稀有的屏幕空间用在一个菜单上,除非我们正在使用它。因此,我们添加一个“color menu”按钮。当我们按下它的时候,弹出颜色菜单,并且在完成一个选择操作之后,菜单重新隐藏起来,而“color ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

Anton Kovalyov
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9787111562528