Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Рисуем своеобразный чекБокс...

-

Разработка ПО для Point Blank

- Бюро разработчиков Zhyk.Ru: создание чит-программ и прочего ПО для Point Blank

Ответ
 
Опции темы
Старый 29.07.2012, 01:01   #1
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Рисуем своеобразный чекБокс...

Покажу и надеюсь что объясню как нарисовать чекБокс....
Внешне итог выглядит так:
[Ссылки могут видеть только зарегистрированные пользователи. ]


Все будет на примере исходника Dimedrol1536(2) (ТЫК)...

Приступим:
Сначало будем работать с фаилом cBase.cpp

Добавляем:
Код:
BOOL cMenu::IsInBox(int x,int y,int w,int h)
{
	POINT MousePosition; 
	GetCursorPos(&MousePosition); 
	ScreenToClient(GetForegroundWindow(),&MousePosition);
	return(MousePosition.x >= x && MousePosition.x <= x + w && MousePosition.y >= y && MousePosition.y <= y + h);
}
Данная функция(или метод, в терминалогии я не сильно силен) будет отслеживать положение курсора в заданных нами координатах...

Добавляем сам метод прорисовки и взаимодействия элементов:

Код:
void cMenu::Draw_Button_Test(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x +w+2;
int y__ = ((h) - (h/2));
int x__ = (x + w/2);


if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
{
DrawBorder(x-2,y-2,w+3,h+3,DEEPSKYBLUE,pDevice);//прорисовываем квадрат при наведении
if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
{
  DrawBorder(x-1,y-1,w,h,GREEN,pDevice);
  if(Var == 1 && Var !=0)
   {
    Var = 0;
   }
else 
	if(Var == 0)
     {
      Var = 1;
     }
}
}

if(Var == 0)//Если выключено, то рисуем
{
DrawBox(x,y,w,h,TxtOFF,pDevice);
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);

}

if(Var == 1)//Если включено, то рисуем
{
DrawBox(x+1,y+1,w-3,h-3,GREEN,pDevice);//рисуем квадратик меньшим размером чем основной
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
}
}

Переходим в фаил cMain.h и прописываем прототипы функций внутри класса меню:
Код:
  BOOL IsInBox(int x,int y,int w,int h);
void Draw_Button_Test(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice);


Все это используем таким образом:

Draw_Button_Test(x ,y , w , h ,opt.структура.функция , "Название функции" , pDevice);

x,y - положение по осям X и Y
w, h - ширина и высота квадратика соответственно
opt.структура.функция - ссылка на функцию
"Название функции" - собственно название функции


Цвета использованные мной
Код:
#define ButtoN          D3DCOLOR_ARGB(255, 190, 190, 190)//фон кнопки
#define TxtON           D3DCOLOR_ARGB(255,0,0,0)//вкл функция
#define TxtOFF          D3DCOLOR_ARGB(255,141,141,141)//выкл функция
#define ButtoNRed       D3DCOLOR_ARGB(255, 190, 190, 190)//фон кнопки

Собственно и все....




ЗЫ: Огромная благодарность Дмитрию(NoName%) за написание взаимодействия всего этого кошмара...
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
  Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Dimedrol1536 (29.07.2012), Meteor2142 (29.07.2012), mr*WOLF (24.11.2012), NoName%(2) (29.07.2012), smile33 (29.07.2012)
Старый 29.07.2012, 05:51   #2
 Разведчик
Аватар для NoName%(2)
 
NoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражания
Регистрация: 12.01.2012
Сообщений: 33
Популярность: 2330
Сказал(а) спасибо: 223
Поблагодарили 63 раз(а) в 46 сообщениях
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
void cMenu:raw_Button_Test(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x +w+2;
int y__ = ((h) - (h/2));
int x__ = (x + w/2);


if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
{
DrawBorder(x-2,y-2,w+3,h+3,DEEPSKYBLUE,pDevice);//прорисовываем квадрат при наведении
if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
{
DrawBorder(x-1,y-1,w,h,GREEN,pDevice);
if(Var == 1 && Var !=0)
{
Var = 0;
}
else
if(Var == 0)
{
Var = 1;
}
}
}

if(Var == 0)//Если выключено, то рисуем
{
DrawBox(x,y,w,h,TxtOFF,pDevice);
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);

}

if(Var == 1)//Если включено, то рисуем
{
DrawBox(x+1,y+1,w-3,h-3,GREEN,pDevice);//рисуем квадратик меньшим размером чем основной
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
}
}

Убери
  Ответить с цитированием
Пользователь сказал cпасибо:
крайслер (29.07.2012)
Старый 29.07.2012, 15:21   #3
 Разведчик
Аватар для NoName%(2)
 
NoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражанияNoName%(2) блестящий пример для подражания
Регистрация: 12.01.2012
Сообщений: 33
Популярность: 2330
Сказал(а) спасибо: 223
Поблагодарили 63 раз(а) в 46 сообщениях
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от •DDR•Посмотреть сообщение
Я имел в виду..
"Draw_Button_Test(x ,y , w , h ,opt.структура.функция , "Название функции" , pDevice); " но только чтоб цвета били..

перепиши под цвета,я когда писал её не думал об этом,просто пихнул,крайслер поправил,но цвета на стали загонять для выбора
  Ответить с цитированием
Старый 29.07.2012, 15:35   #4
 Разведчик
Аватар для КаМаZ
 
КаМаZ неизвестен в этих краяхКаМаZ неизвестен в этих краях
Регистрация: 24.07.2012
Сообщений: 12
Популярность: -102
Сказал(а) спасибо: 3
Поблагодарили 6 раз(а) в 6 сообщениях
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от •DDR•Посмотреть сообщение
я хз как дописать.. допиши если тебе не сложно..

цвет фона в чек боксе поменяй и пропиши функцию для него
  Ответить с цитированием
Старый 29.07.2012, 15:58   #5
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от КаМаZПосмотреть сообщение
цвет фона в чек боксе поменяй и пропиши функцию для него

Скорее всего он имел ввиду вот это:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Сам долго сообразить не мог как организовать нормальное действие для такого элемента... Но когда реализацию написал Дмитрий, даже удивился насколько все выходит просто...
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
  Ответить с цитированием
Пользователь сказал cпасибо:
mr*WOLF (24.11.2012)
Старый 29.07.2012, 22:02   #6
,,,,
 Командор
Аватар для Skilful
 
Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Отправить сообщение для Skilful с помощью ICQ Отправить сообщение для Skilful с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

а не легче было бы для такой функции использовать переменную типа bool ?
Вот как выглядила бы функция:
Код:
void cMenu::Draw_Button_Test(int x ,int y , int w , int h ,bool &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x +w+2;
int y__ = ((h) - (h/2));
int x__ = (x + w/2);

if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
{
DrawBorder(x-2,y-2,w+3,h+3,DEEPSKYBLUE,pDevice);//прорисовываем квадрат при наведении
if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
{
  DrawBorder(x-1,y-1,w,h,GREEN,pDevice);
  if(Var == TRUE) Var = FALSE;
else 
 if(Var == FALSE) Var = TRUE;
}
}

if(Var == FALSE)//Если выключено, то рисуем
{
DrawBox(x,y,w,h,TxtOFF,pDevice);
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);
}

if(Var == TRUE)//Если включено, то рисуем
{
DrawBox(x+1,y+1,w-3,h-3,GREEN,pDevice);//рисуем квадратик меньшим размером чем основной
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
}
}
Добавлено через 15 минут
а вот функция для самостоятельного выбора цвета отрисовки (как у крайслер'а):

Код:
void cMenu::Draw_Button_Test(int x ,int y , int w , int h ,bool &Var ,char *Button_Text ,D3DCOLOR colors,D3DCOLOR colorOff,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x +w+2;
int y__ = ((h) - (h/2));
int x__ = (x + w/2);

if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
{
DrawBorder(x-2,y-2,w+3,h+3,colors,pDevice);//прорисовываем квадрат при наведении
if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
{
  if(Var == TRUE) Var = FALSE;
else 
 if(Var == FALSE) Var = TRUE;
}
}

if(Var == FALSE)//Если выключено, то рисуем
{
DrawBox(x,y,w,h,colorsOff,pDevice);
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);
}

if(Var == TRUE)//Если включено, то рисуем
{
DrawBox(x+1,y+1,w-3,h-3,colors,pDevice);//рисуем квадратик меньшим размером чем основной
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHADOW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
}
}
//где colors - цвет отрисовки при наведении/или активированной функции(переменно больше нуля) - отрисовки внутреннего квадратика
//где colors - цвет отрисовки в выключенном состоянии функции (переменно равно нулю) - отрисовки внутреннего квадрата
можно было бы сделать намного "лучше" там типо "зеркального" цвета при активированной/деактевированной функции, но увы я с телефона пишу
________________


Последний раз редактировалось Skilful; 31.07.2012 в 23:16. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 29.07.2012, 23:52   #7
 Разведчик
Аватар для Lubot
 
Lubot скоро будет известенLubot скоро будет известенLubot скоро будет известен
Регистрация: 29.07.2012
Сообщений: 12
Популярность: 231
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Lubot с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от крайслерПосмотреть сообщение
void cMenu:raw_Button_Test(int x ,int y , int w , int h ,int &Var ,char *Button_Text ,LPDIRECT3DDEVICE9 pDevice)
{
int y_ = (y) + (h/2)-7;
int x_ = x +w+2;
int y__ = ((h) - (h/2));
int x__ = (x + w/2);


if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
{
DrawBorder(x-2,y-2,w+3,h+3,DEEPSKYBLUE,pDevice);//прорисовываем квадрат при наведении
if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
{
DrawBorder(x-1,y-1,w,h,GREEN,pDevice);
if(Var == 1 && Var !=0)
{
Var = 0;
}
else
if(Var == 0)
{
Var = 1;
}
}
}

if(Var == 0)//Если выключено, то рисуем
{
DrawBox(x,y,w,h,TxtOFF,pDevice);
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);

}

if(Var == 1)//Если включено, то рисуем
{
DrawBox(x+1,y+1,w-3,h-3,GREEN,pDevice);//рисуем квадратик меньшим размером чем основной
font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
}
}

я так понимаю, это тоже в cBase.cpp прописывать?
а то у меня ошибки _http://3.firepic.org/3/images/2012-07/29/n1zdbpqcq1sp.jpg
  Ответить с цитированием
Старый 30.07.2012, 00:08   #8
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от LubotПосмотреть сообщение
а то у меня ошибки _http://3.firepic.org/3/images/2012-07/29/n1zdbpqcq1sp.jpg

Ты не определил прототипы или определил их вне класса cMenu...
Цитата:
Сообщение от MathersПосмотреть сообщение
а не легче было бы для такой функции использовать переменную типа bool

Что-то я не заметил большой разници...Объясни как школьнику.
Цитата:
Сообщение от MathersПосмотреть сообщение
как у крайслер'а

Не, у меня не так...
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
  Ответить с цитированием
Пользователь сказал cпасибо:
mr*WOLF (24.11.2012)
Старый 30.07.2012, 00:18   #9
 Старший сержант
Аватар для slava-zis
 
slava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норрисаslava-zis троюродный дядя Чака Норриса
Регистрация: 18.02.2011
Сообщений: 232
Популярность: 8824
Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
Отправить сообщение для slava-zis с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от крайслерПосмотреть сообщение
Что-то я не заметил большой разници...Объясни как школьнику.

все просто BOOL = 4 байта, а bool 1.

п.с. typedef int BOOL; :3
________________
Hack for ShadowCompany
Hack for War Thunder
Дно геймхакинга
  Ответить с цитированием
Пользователь сказал cпасибо:
крайслер (30.07.2012)
Старый 30.07.2012, 00:30   #10
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от LubotПосмотреть сообщение
а где этот класс ?

в фаиле cMain.h найди
Цитата:
class cMenu

Вариант проще:
в том же фаиле найди строку
Цитата:
void ShowMenu(LPDIRECT3DDEVICE9 pDevice);

и чуть ниже ее определяй...



Цитата:
Сообщение от •DDR•Посмотреть сообщение
Выложи плиз нормальный код.

Код:
void cMenu::Draw_Button_Test(int x ,int y , int w , int h ,bool &Var ,char *Button_Text ,D3DCOLOR colors,D3DCOLOR colorOff,LPDIRECT3DDEVICE9 pDevice)
 {
 int y_ = (y) + (h/2)-7;
 int x_ = x +w+2;
 int y__ = ((h) - (h/2));
 int x__ = (x + w/2);

 if(IsInBox(x,y-5,w,h))//при поподании курсора в заданное место выполняем следующее
 {
 DrawBorder(x-2,y-2,w+3,h+3,colors,pDevice);//прорисовываем квадрат при наведении
 if(GetAsyncKeyState(VK_LBUTTON)&1)//при нажатии ЛКМ в заданных координатах выполняем следующее(в зависимости от состояния)
 {
 if(Var == TRUE) Var = FALSE;
 else 
 if(Var == FALSE) Var = TRUE;
 }
 }

 if(Var == FALSE)//Если выключено, то рисуем
 {
 DrawBox(x,y,w,h,colorsOff,pDevice);
 font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
 DrawBorder(x-1,y-1,w,h,RED,pDevice);
 }

 if(Var == TRUE)//Если включено, то рисуем
 {
 DrawBox(x+1,y+1,w-3,h-3,colors,pDevice);//рисуем квадратик меньшим размером чем основной
 font->DrawText(x_,y_,C_TITL,Button_Text,DT_LEFT|DT_SHAD OW);
 DrawBorder(x-1,y-1,w,h,RED,pDevice);//окрашиваем бордюр в красный
 }
 }
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!

Последний раз редактировалось крайслер; 30.07.2012 в 00:37.
  Ответить с цитированием
Пользователь сказал cпасибо:
mr*WOLF (24.11.2012)
Старый 30.07.2012, 02:08   #11
 Старший сержант
Аватар для крайслер
 
крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(крайслер сломал счётчик популярности :(
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Отправить сообщение для крайслер с помощью Skype™
 
По умолчанию Рисуем ЧамсБокс...

По многочисленным слезным просьбам в скайпе...

Итог того, что получим на выходе:

[Ссылки могут видеть только зарегистрированные пользователи. ]

Надеюсь немного разобравшись в коде, не возникнет вопросов как дабавить цветные квадратики))))

Все будет на примере исходника Dimedrol1536(2) (ТЫК)...


В Main.cpp пишем(точней копируем):
Код:
void cMenu::Draw_Chams(int x ,int y ,int &funkc_Chams ,char* text,LPDIRECT3DDEVICE9 pDevice)
{
//---------------------------------------------------------

DrawBox(x ,y,10,10,RED,pDevice);
DrawBorder(x + 13,  y, 10,  9,WHITE,pDevice);

//----------------------------------------------------------

if(IsInBox(x,y+4,10,10))
{
DrawBorder(x-1,  y-1, 11,  12,WHITE,pDevice);
if(GetAsyncKeyState(VK_LBUTTON)&1){funkc_Chams=1;}
}


if(IsInBox(x + 13,y+4,10,10))
{
DrawBorder(x+12,  y-1, 12,  12,WHITE,pDevice);
if(GetAsyncKeyState(VK_LBUTTON)&1){funkc_Chams=0;}
}

font->DrawText(x+35,y-1,GREEN,text,DT_SHADOW);
}

В cMain.h внутри класса cMenu определяем прототип функции:
Код:
void Draw_Chams(int x ,int y ,int &funkc_Chams ,char* text,LPDIRECT3DDEVICE9 pDevice);

Используем все так:

Код:
Draw_Chams(x,y,opt.структура.функция,"Текст",pDevice);
________________

-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!

Последний раз редактировалось крайслер; 30.07.2012 в 19:47.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
BLACK_DEAD (30.07.2012), Dimedrol1536 (30.07.2012), NoName%(2) (30.07.2012), smile33 (30.07.2012)
Старый 30.07.2012, 12:42   #12
 Разведчик
Аватар для Lubot
 
Lubot скоро будет известенLubot скоро будет известенLubot скоро будет известен
Регистрация: 29.07.2012
Сообщений: 12
Популярность: 231
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Lubot с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от крайслерПосмотреть сообщение
Первые два числа это координаты положения, Х - положение по оси Х(влево\вправа) , Y - положение по оси Y(вверх\вниз)

хочешь этим сказать, что надо расширить бокс и по координатам поместить ЧекБокс?
хотя нет, размер сам делается по X (WIDTH=160; // MENU WIDTH), а Y не как не правиш
да и сам ЧекБокс не паподает на Бокс к меню, меню бокса его перекрывает ...
так как можно поставить ЧекБокс на бокс к меню, а то я уже все перепробывал(
Draw_Button_Test(168 ,35 , 10 , 10 ,opt.glavnay.Button5, "TEST" , pDevice);

Последний раз редактировалось Lubot; 30.07.2012 в 15:57.
  Ответить с цитированием
Старый 31.07.2012, 23:24   #13
,,,,
 Командор
Аватар для Skilful
 
Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(Skilful сломал счётчик популярности :(
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Отправить сообщение для Skilful с помощью ICQ Отправить сообщение для Skilful с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Цитата:
Сообщение от LubotПосмотреть сообщение
хочешь этим сказать, что надо расширить бокс и по координатам поместить ЧекБокс?

зачем?
Цитата:
Сообщение от LubotПосмотреть сообщение
а Y не как не правиш

как не изменишь? Просто изменяешь значение и все.
Цитата:
Сообщение от LubotПосмотреть сообщение
сам ЧекБокс не паподает на Бокс к меню, меню бокса его перекрывает ...

А это легко решается. Прорисовка деталей происходит сверху вниз. Значит нужно прорисовку фона вставлять в первую очередь, а потом уже этот "чекбокс". В некоторых случаях, нужно делать по другому, это может быть связано с методом прорисовки, то нужно делать в противоположном варианте.

Допустим у тебя вот прорисовка фона:
DrawBox(x,y,w,h,D3DCOLOR,pDevice);
вот после него и вставляй "чекбокс".
________________

  Ответить с цитированием
Пользователь сказал cпасибо:
Meteor2142 (01.08.2012)
Старый 01.08.2012, 00:36   #14
 Разведчик
Аватар для nik0902
 
nik0902 никому не известный тип
Регистрация: 10.11.2010
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Рисуем своеобразный чекБокс...

Зачем рисовать столько квадратиков, если можно сделать накрутку?
  Ответить с цитированием
Старый 01.08.2012, 02:27   #15
 Сержант
Аватар для Meteor2142
 
Meteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нацииMeteor2142 гордость нации
Регистрация: 12.04.2011
Сообщений: 142
Популярность: 3904
Сказал(а) спасибо: 279
Поблагодарили 361 раз(а) в 174 сообщениях
Отправить сообщение для Meteor2142 с помощью Skype™
 
По умолчанию Re: Рисуем своеобразный чекБокс...

А как быть с накруткой? Например зум или СХ?
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Прокачал LF-4 до 16 уровня. Сделал своеобразный тест Mr.Killer Общение и обсуждение 64 16.04.2012 01:22
Своеобразный вопросы _do2 Общение и обсуждение Perfect World 16 30.03.2012 20:13
[Помогите!] чекбокс! axmen2010 Вопросы и ответы, обсуждения 0 12.11.2011 21:01
[fun]Рисуем -(NY)- Треп 9 30.11.2010 02:37
[Статья] Своеобразный прицел! reraider Баги, читы и статьи по Point Blank 29 17.07.2010 11:54

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 12:47.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net