C ++ Как сделать графический интерфейс в DirectX? - PullRequest
2 голосов
/ 29 ноября 2010

У меня есть несколько вопросов по этим предметам.
Я создал класс для кнопок, у класса есть проблема.
Проблема:
1. Я хочу создать функцию, которая будет вызываться при нажатии кнопки, проблема в том, что каждая кнопка будет делать разные вещи, если она нажата. Так что я не знаю, как я могу создать функцию, которая будет делать разные вещи для каждой кнопки.
Я понятия не имею, как я должен разработать свой интерфейс.
Если бы вы могли дать мне представление о том, как я должен разработать свой графический интерфейс, это было бы здорово.
Это моя кнопка класса

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 ]

3 голосов
/ 29 ноября 2010

Использовать наследование / полиморфизм: базовый класс - 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 голос
/ 29 ноября 2010

Я рекомендую вам книгу «Пользовательские интерфейсы DirectX 9: разработка и внедрение» . У меня это есть, и я могу сказать, что вы найдете там все, что вам нужно !!!;)

1 голос
/ 29 ноября 2010

Нажатие кнопки является действием / событием.Вы можете инкапсулировать действие щелчка как класс.Это действие интерпретируется и используется по-разному в приложении, которое использует виджет кнопки.Библиотека графического интерфейса должна уведомить, что была нажата кнопка с соответствующей информацией.Вы можете ссылаться на популярные библиотеки GUI, такие как Qt или Gtk +, в качестве примеров, чтобы узнать, как они реализуют события GUI и многое другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...