Итак, я делаю простую игру, используя DirectX 9 и C ++. Я посмотрел на графический интерфейс SDK, но думаю, что смогу реализовать что-то более простое.
Все, что мне нужно, - это окна, метки, кнопки, текстовые поля и флажки.
Я создал базовый класс GUIObject, от которого все наследуют. Он включает в себя основы, такие как размер и фокус и еще много чего. Затем производные классы, например GUILabel, все определяют render (), update () и еще много чего.
У меня вопрос, как обрабатывать события, такие как клики? Я работал с GUILabel :: Click (), определяя каждую возможность на основе значения текстового члена текущего экземпляра. Это было неправильно, и я понял, что каждый ярлык, который нужно щелкнуть, должен быть определен в классе GUILabel. Я хотел бы перенести это в код каждого игрового состояния.
Итак, я кратко попытался заставить GUILabel :: Click () взять указатель на функцию в качестве аргумента. Но затем я понял, что мне нужно иметь статический метод члена класса состояния (это не очень возможно, если только все в нем не статично, верно?) Или также передать ему класс GUIObject. Это путь?
Могу ли я определить происхождение GUILabel (или кнопки, или еще чего-нибудь) в игровом состоянии и просто переопределить все необходимые мне действия? И затем сделать это для того контроля, который мне нужен в этом состоянии?
Как правильно реализовать обработку событий?