Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2009, 11:15   #1
Dogmat
Пользователь
 
Регистрация: 12.06.2008
Сообщений: 76
По умолчанию Создание класса

Здравствуйте

Суть: задался идеей написать класс, описывающий кнопку, только средствами OpenGl, возникла проблема, как в классе сообщить о том, что некоторая функция click() будет определена непосредственно в коде программы, сколько не искал в internet и в домашних книгах ничего по этой теме не нашёл. Если не сложно подскажите, или ссылку... Класс не дописан, но интересует именно эта проблема. Привожу код.

Код:
buttons.h

#include <windows.h>
#include <gl/gl.h>

class gldButton
{
	GLfloat depth;
	GLfloat red;
	GLfloat green;
	GLfloat blue;
	GLfloat alpha;

public:
	GLfloat x;
	GLfloat y;
	GLfloat z;
	GLfloat width;
	GLfloat height;

	gldButton();
	void create();
	void click();
	void showMouseClick();
	void showMouseMove();
             void color(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
};

buttons.cpp

#include "buttons.h"

gldButton::gldButton()
{
	depth = 30.0f;
	width = 30.0f;
	height = 30.0f;
                x = 0.0f;
                y = 0.0f;
                z = 0.0f;
	red = 0.0f;
	green = 0.0f;
	blue = 0.0f;
	alpha = 1.0f;
}

void gldButton::showMouseClick()
{
}

void gldButton::showMouseMove()
{
}

void gldButton::create()
{
}

void gldButton::click()
{
}
Тобишь необходимо, чтобы можно было переопределить функцию click() непосредственно в коде, как это делается, например, для TButton в Delphi. Если я не правильно подхожу к этой проблеме, пожалуйста поправьте меня.

Спасибо...

Последний раз редактировалось Dogmat; 12.01.2009 в 11:43.
Dogmat вне форума Ответить с цитированием
Старый 12.01.2009, 11:52   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Как вариант: посмотрите в сторону указателей на функции и методы классов. т.е. храните указатель на функцию-обработчик клика. в Click будет соответственно вызов функции, указатель на которую хранится.
Будет как в делфях практически.
Код:
class gldButton
{
public:
  обработчик OnClick;
...

void gldButton::click()
{
  if (OnClick)
    OnClick();
}
...
// Создание кнопки
gldButton btn1 = new gldButton();
btn1.OnClick = Button1Click;
Только там будет немного иной вызов OnClick и запись указателя на Button1Click. Сейчас точный синтаксис не помню, но суть дела не меняется от этого.
pu4koff вне форума Ответить с цитированием
Старый 12.01.2009, 14:32   #3
Dogmat
Пользователь
 
Регистрация: 12.06.2008
Сообщений: 76
По умолчанию

Да, спасибо, так и сделал...

Код:
 
*.h

class gldButton
{
	GLfloat depth;
	GLfloat red;
	GLfloat green;
	GLfloat blue;
	GLfloat alpha;

public:
	GLfloat x;
	GLfloat y;
	GLfloat z;
	GLfloat width;
	GLfloat height;
             void (*onClick)();

	gldButton();
	void create();
	void click();
	void showMouseClick();
	void showMouseMove();
             void color(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
};

*.cpp

void gldButton::click()
{
	if (onClick) onClick();
}
Присваение внутри тела программы:
Код:
gldButton dButton;

dButton.onClick = &clickBtn;
Dogmat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54
Создание своего класса AlexandrSid Общие вопросы Delphi 3 19.05.2008 13:28
Создание класса Stanislav Общие вопросы Delphi 8 15.05.2008 23:34
создание класса Siren Помощь студентам 1 07.05.2008 19:19
Создание нового класса на базе существующего SpiritSm Общие вопросы Delphi 1 19.07.2007 10:11