0

我正在设计一个图形应用程序,我决定为其编写自己的菜单。我希望这个菜单独立于平台。目前,我的菜单主​​要由一些按钮组成。我的问题涉及单击按钮时的事件处理。我的困境是按钮“了解”它存在的上下文。在我看来,如果有一些更大的代码可以创建按钮并处理鼠标事件,则可能需要某种类型的 switch 语句。switch 语句必须根据所单击按钮的唯一定义来调用适当的操作。

我想避免这个 switch 语句。我的第一个想法是让每个按钮都维护一个函数指针,当它被单击时,它可以用来盲目地启动正确的操作。这将消除任何特定于按钮的代码。然而,按钮应该包含任何特定于上下文的信息(例如函数指针),这让我很困扰。我相当缺乏经验,我想知道这是否被认为是糟糕的设计。无论如何,我怎样才能以一种不需要某种类型的 switch 语句并被认为是好的 OOP 设计的方式来设计我的菜单?我想听听您的首选解决方案是什么。

提前致谢!

4

2 回答 2

6

你看一下库:

SPTK(简单强大的工具包)是一个跨平台的工具包,它提供了一组 C++ 类,用于快速和轻松的应用程序开发。它提供使用 FLTK 的 GUI 组件,并具有与 GUI 组件无缝连接的数据库支持。

eGUI
http://www.codeplex.com/egui
http://torjo.com/egui/
http://msdn.microsoft.com/en-us/magazine/cc534994.aspx

NovaTK是一个面向对象的跨平台 GUI 工具包。NovaTK 的重点之一是促进需要更少代码行的跨平台应用程序的快速开发。事件系统基于强大的回调机制,使应用程序设计更简单、更易于阅读和合乎逻辑。

Ecere Cross Platform GUI Applications Develop applications once, deploy them on all platforms alongside a lightweight runtime environment.

Introduction to wxWidgets

ClassLib, A C++ class library

libgm - A mini GUI library for Windows

于 2009-01-16T11:58:42.187 回答
2

您可以查看 命令模式

您可以将命令与菜单项相关联,该命令将包含要执行的代码。

于 2009-01-16T11:33:00.403 回答