PDA

Просмотр полной версии : Вкл\выкл на DrawButton...


крайслер
31.05.2012, 08:04
Добавил в исходник PHC D3D Base кнопку(DrawButton)

BOOL 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);
}
BOOL IsKeyPressed(int Key,DWORD dwTimeOut)
{
if( HIWORD( GetKeyState( Key ) ) )
{
if( !kPressingKey[Key].bPressed || ( kPressingKey[Key].dwStartTime && ( kPressingKey[Key].dwStartTime + dwTimeOut ) <= GetTickCount( ) ) )
{
kPressingKey[Key].bPressed = TRUE;
if( dwTimeOut > NULL )kPressingKey[Key].dwStartTime = GetTickCount( );
return TRUE;
}
}
else
kPressingKey[Key].bPressed = FALSE;
return FALSE;
}



void cMenu::Draw_Button(int x,int y,int w,int h,int &Var,int MaxSize,bool Mode,char* ButtonText,LPDIRECT3DDEVICE9 pDevice,CD3DFont *font,int Corektion)
{
#define Button_box D3DCOLOR_ARGB(255,89,89,255)//Цвет фона кнопки
#define color_txt_on D3DCOLOR_ARGB(255,128,255,128)//Цвет текста активированной функции
#define colot_txt_off D3DCOLOR_ARGB(255,255,0,0)//Цвет текста отключенной функции.
int Set_X,Set_Y;
Set_X = (w/4)-(w/10)+Corektion;
Set_Y = (h/4)-2;
if(IsInBox(x,y,w,h))
{
DrawBox((x+1),(y+3),(w-1),(h-1),C_BOX,pDevice);
if(IsKeyPressed(VK_LBUTTON,0))
{
if(Mode==FALSE){
if(Var != 0 && Var > 0)
{
Var -=1;
}
}else
{
if(Var < MaxSize)
{
Var +=1;
}
}
}
}else
{
DrawBox((x+1),(y+3),(w-1),(h-1),C_BOX,pDevice);
}
if(Var == 0)
{
font->DrawText(x+Set_X,y+Set_Y,colot_txt_off,ButtonText, DT_SHADOW);
}else
if(Mode==1)
{
font->DrawText(x+Set_X,y+Set_Y,color_txt_on,ButtonText,D T_SHADOW);
}else
{
font->DrawText(x+Set_X,y+Set_Y,color_txt_on,ButtonText,D T_SHADOW);
}
}
Срезано с исходника Оверлорда...


if(opt.Func)
{
opt.d3d.main=1;
}else{
opt.d3d.main=0;
}

Draw_Button(X+190,Y+2,100,20,opt.Func,1,1," ТЫК",pDevice,font,1);
Кнопка только включает(в данном случаи открывает папку, но не закрывает ее обратно при повторном нажатии...

Как добится того, чтобы одной кнопкой можно было включать и выключать функцию?

NoName%(2)
31.05.2012, 11:17
Можно просто кнопку переписать,чтоб например на правую кнопку мыши офф делала.

C+-
31.05.2012, 13:28
Проверку написать(если функция вкл,то при нажатии выключается).

крайслер
31.05.2012, 13:34
Проверку написать(если функция вкл,то при нажатии выключается)
Ну до этого я и сам додумался))) А вот на то как ее реализовать ума пока не хватает...

C+-
31.05.2012, 13:47
Проверка:
if(opt.d3d.main=1)
{
opt.d3d.main=0;

}
else
{
opt.d3d.main=1;
}
что-то типо этого.Код вряд ли рабочий.Это пример.Сначала делаешь действие нажатия кнопки,далее проверку

pia3333(4)
31.05.2012, 14:04
if(GetAsyncKeyState(VK_KEY)&1)
FUNK=(!FUNK);

slava-zis
31.05.2012, 15:12
Проверка:
if(opt.d3d.main=1)
{
opt.d3d.main=0;

}
else
{
opt.d3d.main=1;
}
что-то типо этого.Код вряд ли рабочий.Это пример.Сначала делаешь действие нажатия кнопки,далее проверку

if(opt.d3d.main==1)
{
opt.d3d.main=0;

}
else
{
opt.d3d.main=1;
}