Как настроить систему меню (нажимаемые кнопки) в C ++ / directx? - PullRequest
3 голосов
/ 30 ноября 2009

Я склонен полагать, что указатели на функции понадобятся для назначения функций изображениям, которые будут как-то использоваться в качестве кнопок, но я не могу найти приличных ресурсов по этому вопросу.

Как настроить меню кнопок в C ++? Например, наличие кнопок для сохранения, загрузки, выхода, нового.

edit: Меня не беспокоит переносимость этого примера. Я бы предпочел сделать это сам, чем использовать предопределенные рамки. Он будет работать только на компьютерах с Windows.

Ответы [ 3 ]

5 голосов
/ 30 ноября 2009

Вам нужно будет написать себе кучу классов GUI, которые рисуют интерфейс GUI (кнопки, текст), а также некоторое базовое «обнаружение столкновений», чтобы определить, была ли нажата мышь внутри вашей кнопки, когда пользователь нажимает кнопку мыши. .

Вам не обязательно использовать указатели на функции, они более удобны. Пример ниже такой же способный.

Я бы вместо этого написал класс кнопки, который имел бы позицию, ширину, высоту и т. Д., Тогда вы могли бы написать метод, который возвращался при щелчке мыши, не требуя какого-либо жесткого кодирования, которого вам следует избегать любой ценой.

Если вы хотите реализовать очень простой и негибкий графический интерфейс, вы можете обнаружить щелчки мышью, как показано ниже:

if ( mouseWasClicked == true )
{
    if (( mouseX > startButton.minX && mouseX < startButton.maxX ) && 
        ( mouseY > startButton.minY && startButton.maxY < mouseY) )
    {
        loadGame();
    }
}

При этом я рекомендую использовать подходящую библиотеку для системы с графическим интерфейсом, такую ​​как CEGUI , которая является открытым исходным кодом и работает с движками рендеринга, такими как Ogre и другими. CEGUI также портативен и намного легче, чем Qt. Рекомендуется, если вы программируете игру.

Не изобретайте велосипед, если не пытаетесь узнать, как работает низкий уровень, используйте что-то проверенное.

4 голосов
/ 30 ноября 2009

В основном вы должны выполнять все свои собственные рисунки, отслеживание мыши и т. Д. В самом DirectX SDK есть примеры, которые показывают всю оконную среду с элементами управления.

Однако это может быть значительно упрощеноиспользуя что-то вроде CEGUI .Графический интерфейс Crazy Eddie предоставляет целую платформу, готовую к работе и скину, для создания экранных изображений и элементов управления, включая кнопки, меню и т. Д. В DirectX.

0 голосов
/ 30 ноября 2009

Это не языковая функция, как следует из вашего ответа - теперь вы находитесь в сфере графических интерфейсов и инфраструктуры, которые часто являются непереносимыми.

Итак, с этим я бы рекомендовал Qt , который является кроссплатформенным, зрелым, хорошо документированным и зрелым. Есть и другие варианты, и есть множество часто задаваемых вопросов, которые помогут вам.

...