开发者

C++ How to make a GUI in directx?

开发者 https://www.devze.com 2023-01-28 10:09 出处:网络
I have few questions on this Subjects. I created a class for buttons, the class has problem. Problem is:

I have few questions on this Subjects.

I created a class for buttons, the class has problem.

Problem is:

1. I wan开发者_运维知识库na create function to be called if button is clicked, the problem is that every single button gonna do different thing if it was clicked. So i don't know how i can create function that will do different thing for every button.

I have no idea how i should design my interface.

If you can give me an idea on how i should design my GUI that would be great.

This is my button class

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

EDIT 2:

Guys is this possible?

I create two functions and than ill point one function to another.

Something like this

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

EDIT 3:

Ok should i use this way for the onClick() function.

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

i pass a function to OnClick than it calls the function.

should i use this way?


Use inheritance/polymorphism: The base class is GUIButtons, and every new individual button derives from that base clase:

class MyButton : public GUIButtons { ... }

And then the functionality for a click comes in a virtual method onClick() or whatever.

More detail:

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


Button click is an action/event. You can encapsulate the click action as a class. This action is interpreted and used differently by the application that uses the button widget. The gui library has to notify that a button has been clicked with the relevant information. You can refer to popular GUI libraries like Qt or Gtk+ as examples to know how they implement GUI events and much more.


I recommend you the book "DirectX 9 User Interfaces: Design and Implementation". I have it and i may say that you'll find there everything what you need!!!;)

0

精彩评论

暂无评论...
验证码 换一张
取 消