gpt4 book ai didi

c++ - 如何制作图形用户界面?

转载 作者:可可西里 更新时间:2023-11-01 18:36:30 26 4
gpt4 key购买 nike

我为 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;
}

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

最佳答案

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

我一直在玩弄一些东西,我查阅了一些书籍和VTMs ,到目前为止,这是一个简单的 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();
...
}

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

我还没有任何工作,因为我在绘图代码方面遇到了问题。在 PC 和 PSP 上使用不同的 API,我正在查看 OpenGL 和 psp gu 的一些包装器代码。

希望这对您有所帮助。

东西2k

关于c++ - 如何制作图形用户界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com