如何制作GUI?

Jer*_*ten 7 c++ user-interface

我已经为Nintendo DS制作了许多不同的GUI系统部分,比如按钮,文本框和选择框,但是我需要一种在一个Gui类中包含这些类的方法,这样我就可以在屏幕上绘制所有内容了.一次,并立即检查所有按钮以检查是否有任何按钮被按下.我的问题是,将所有类(如按钮和文本框)组织到一个GUI类中的最佳方法是什么?

这是我想到的一种方式,但似乎不对:

编辑:我正在使用C++.

class Gui {
    public:
        void update_all();
        void draw_all() const;
        int add_button(Button *button); // Returns button id
        void remove_button(int button_id);
    private:
        Button *buttons[10];
        int num_buttons;
}
Run Code Online (Sandbox Code Playgroud)

这段代码有一些问题,但我只是想让你知道我想要什么.

thi*_*g2k 3

这个问题与我要发布的问题非常相似,只是我的问题是针对索尼 PSP 编程的。

我已经玩了一段时间了,我查阅了一些书籍和VTM,到目前为止,这是一个简单的 ui 系统的粗略想法。

class uiElement()
{
    ...
    virtual void Update() = 0;
    virtual void Draw() = 0;
    ...
}

class uiButton() public : uiElement
{
    ...
    virtual void Update();
    virtual void Draw();
    ...
}

class uiTextbox() public : uiElement
{
    ...
    virtual void Update();
    virtual void Draw();
    ...
}

... // Other ui Elements

class uiWindow()
{
    ...
    void Update();
    void Draw();

    void AddElement(uiElement *Element);
    void RemoveElement(uiElement *Element);

    std::list <uiElement*> Elements;

    ...
}

void uiWindow::Update()
{
    ...
    for (list <uiElement*>::iterator it = Elements.begin(); it != Elements.end(); it++ )
        it->Update();
    ...
}

void uiWindow::Draw()
{
    ...
    for (list <uiElement*>::iterator it = Elements.begin(); it != Elements.end(); it++ )
        it->Draw();
    ...
}
Run Code Online (Sandbox Code Playgroud)

原理是创建一个窗口并向其添加 ui 元素,并从各自的主函数中调用绘制和更新方法。

我还没有任何工作,因为我在绘制代码方面遇到问题。由于 PC 和 PSP 上有不同的 API,我正在研究 OpenGL 和 psp gu 的一些包装代码。

希望这可以帮助。

东西2k