【问题标题】:C++ Custom GUI Button QuestionC++ 自定义 GUI 按钮问题
【发布时间】:2009-01-16 11:28:38
【问题描述】:

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

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

提前致谢!

【问题讨论】:

    标签: c++ oop button


    【解决方案1】:

    您看看库:

    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,一个C++类库

    libgm - A mini GUI library for Windows

    【讨论】:

      【解决方案2】:

      你可以看看 Command Pattern.

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多