2009-01-16 239 views
0

我正在设计一个图形应用程序,我决定编写自己的菜单。我希望这个菜单能够独立于平台。目前,我的菜单主​​要由多个按钮组成。我的问题涉及单击按钮时处理事件。我的困境是,一个按钮“知道”它所处的环境。在我看来,如果有一些较大的代码创建按钮并处理鼠标事件,则可能会出现某种类型的switch语句。 switch语句必须根据任何唯一定义的点击按钮来调用适当的操作。C++自定义GUI按钮问题

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

在此先感谢!

回答

2

你可以看看 Command Pattern

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

+0

谢谢,这完美地工作。 – Scott 2009-04-12 17:27:59

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 开发应用程序一次,在轻量级运行时环境旁部署到所有平台上。

介绍wxWidgets

ClassLib,A C++类库

libgm - A mini GUI library for Windows