C ++如何在directx中创建GUI?

时间:2010-11-29 02:44:36

标签: c++ winapi user-interface visual-c++ directx

我对这个问题几乎没有问题 我为按钮创建了一个类,该类有问题 问题是:
1.如果单击按钮,我想创建要调用的函数,问题是如果单击按钮,每个按钮都会执行不同的操作。所以我不知道我怎么能创造出能为每个按钮做不同事情的功能 我不知道我应该如何设计我的界面 如果你能告诉我如何设计我的GUI会很棒。
这是我的按钮类

class GUIButtons
{
public:
    GUIButtons(void);
    ~GUIButtons(void);
    void LoadMesh(string fileName, int startAnimation, LPDIRECT3DDEVICE9 d3ddev);
    void Render(float timeElapsed, D3DXMATRIX *matWorld);
    void EventProc(HWND hWnd, UINT msg, LPDIRECT3DDEVICE9 d3ddev);
    void Picking(HWND hWnd, LPDIRECT3DDEVICE9 d3ddev);
private:
    CXFileEntity *Button;
};

编辑2:
伙计们这可能吗?
我创建了两个函数,而不是将一个函数指向另一个函数 像这样的东西

void a()
{
     ....
}
void b() = a;

编辑3:
好的,我应该以这种方式用于onClick()功能。

void Onclick( void(*fun) )
{
    fun();
}

我将函数传递给OnClick,而不是调用函数 我应该用这种方式吗?

3 个答案:

答案 0 :(得分:3)

使用inheritance / polymorphism:基类是GUIButtons,每个新的单个按钮都来自该基类:

class MyButton : public GUIButtons { ... }

然后点击的功能来自虚拟方法onClick()或其他任何内容。

更多细节:

class GUIButtons 
{
   ... \\ lots of stuff
   virtual void onClick() { };
};

class CloseButton : public GUIButtons
{
  ...
  virtual void onClick()
  {
    //code to close window
  }
};

class SettingsButton : public GUIButtons
{
  ...
  virtual void onClick()
  {
    //stuff to open settings menu
  }
};

答案 1 :(得分:1)

按钮点击是一个动作/事件。您可以将click操作封装为类。使用按钮窗口小部件的应用程序会对此操作进行不同的解释和使用。 gui库必须通知已按下相关信息的按钮。您可以参考像Qt或Gtk +这样的流行GUI库来了解它们如何实现GUI事件等等。

答案 2 :(得分:1)

我推荐你的书"DirectX 9 User Interfaces: Design and Implementation"。我有它,我可以说你会找到你需要的一切!!!;)