Here is a source code for a universal menu that i found on a different forum. Note: I did not make this! I found it while trying to learn myself.
Code:
HRESULT WINAPI nBeginScene(LPDIRECT3DDEVICE9 pDevice)
{
_asm NOP;
HRESULT hRet = pBeginScene(pDevice);
if(!CarregaFonte) {
CarregaFonte=true;
D3DXCreateFont( pDevice, 14, 0, FW_NORMAL, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Microsoft Sans Serif", &Fonte[0]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Tahoma", &Fonte[1]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[2]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Fonte[3]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Comic Sans MS", &Fonte[4]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Courier New", &Fonte[5]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Georgia", &Fonte[6]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Impact", &Fonte[7]);
D3DXCreateFont( pDevice, 12, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Lucida Console", &Fonte[8]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Verdana", &Fonte[9]);
D3DXCreateFont( pDevice, 8, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[10]);
D3DXCreateFont( pDevice, 38, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Fonte[11]);
D3DXCreateFont( pDevice, 16, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Fonte[12]);
}
BaseJanela.BaseX = 10;
BaseJanela.BaseY = 150;
BaseJanela.BaseW = 150;
BaseJanela.BaseH = (30 * MENU_ITEM_MAX);
if(GetAsyncKeyState(VK_HOME)&1)
{
BaseJanela.Mostrar = !BaseJanela.Mostrar;
}
if(BaseJanela.Mostrar)
{
if(GetAsyncKeyState(VK_LEFT)&1)
{
setadireita = true;
}
else
setadireita = false;
if(GetAsyncKeyState(VK_RIGHT)&1)
{
setaesquerda = true;
}
else
setaesquerda = false;
MenuEspaco = BaseJanela.BaseH / MENU_ITEM_MAX;
if(GetAsyncKeyState(VK_DOWN)&1){MenuSelecionado +=1;}
if(GetAsyncKeyState(VK_UP)&1){MenuSelecionado -=1;}
if(setadireita && MenuSelecionado == 1){Item1 -=1;}
if(setaesquerda && MenuSelecionado == 1){Item1 +=1;}
if(setadireita && MenuSelecionado == 2){Item2 -=1;}
if(setaesquerda && MenuSelecionado == 2){Item2 +=1;}
if(setadireita && MenuSelecionado == 3){Item3 -=1;}
if(setaesquerda && MenuSelecionado == 3){Item3 +=1;}
if(setadireita && MenuSelecionado == 4){Item4 -=1;}
if(setaesquerda && MenuSelecionado == 4){Item4 +=1;}
if(setadireita && MenuSelecionado == 5){Item5 -=1;}
if(setaesquerda && MenuSelecionado == 5){Item5 +=1;}
if(setadireita && MenuSelecionado == 6){Item6 -=1;}
if(setaesquerda && MenuSelecionado == 6){Item6 +=1;}
if(setadireita && MenuSelecionado == 7){Item7 -=1;}
if(setaesquerda && MenuSelecionado == 7){Item7 +=1;}
if(MenuSelecionado > MENU_ITEM_MAX){MenuSelecionado = MENU_ITEM_MIN;}
if(MenuSelecionado < MENU_ITEM_MIN){MenuSelecionado = MENU_ITEM_MAX;}
if(Item1 > ITEM1_MAX)
Item1 = ITEM1_MIN;
if(Item1 < ITEM1_MIN)
Item1 = ITEM1_MAX;
if(Item2 > ITEM2_MAX)
Item2 = ITEM2_MIN;
if(Item2 < ITEM2_MIN)
Item2 = ITEM2_MAX;
if(Item3 > ITEM3_MAX)
Item3 = ITEM3_MIN;
if(Item3 < ITEM3_MIN)
Item3 = ITEM3_MAX;
if(Item4 > ITEM4_MAX)
Item4 = ITEM4_MIN;
if(Item4 < ITEM4_MIN)
Item4 = ITEM4_MAX;
if(Item5 > ITEM5_MAX)
Item5 = ITEM5_MIN;
if(Item5 < ITEM5_MIN)
Item5 = ITEM5_MAX;
if(Item6 > ITEM6_MAX)
Item6 = ITEM6_MIN;
if(Item6 < ITEM6_MIN)
Item6 = ITEM6_MAX;
if(Item7 > ITEM7_MAX)
Item7 = ITEM7_MIN;
if(Item7 < ITEM7_MIN)
Item7 = ITEM7_MAX;
Menu(pDevice,"Menu Universal ",BaseJanela.BaseX,BaseJanela.BaseY-50,210,300,0x44FFFFFF,0x44FFFFFF,0xFF848484,"V0.5" );
Botao(pDevice,BaseJanela.BaseX + 8,BaseJanela.BaseY-MenuEspaco + (MenuSelecionado * MenuEspaco) ,4,20,0xFF2E2E2E,0xFF2E2E2E,0xFFFF0000,"");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 0),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Names ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 1),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Distan ce ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 2),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Heath ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 3),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Object s ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 4),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Weapon ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 5),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Box ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 6),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Barrel ESP");
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 0) , 0xFFFF9900, Fonte[12],"%d", Item1);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 1) , 0xFFFF9900, Fonte[12],"%d", Item2);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 2) , 0xFFFF9900, Fonte[12],"%d", Item3);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 3) , 0xFFFF9900, Fonte[12],"%d", Item4);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 4) , 0xFFFF9900, Fonte[12],"%d", Item5);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 5) , 0xFFFF9900, Fonte[12],"%d", Item6);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 6) , 0xFFFF9900, Fonte[12],"%d", Item7);
}
if(Item1==1)
//ON
if(Item1==0)
//OFF
//#define ITEM2_MAX 1 add ++
//if(Item==2) etc.....
return hRet;
}
Code:
#include "stdafx.h"
#include <d3dx9.h>
#include <vector>
#pragma comment(lib,"d3dx9.lib")
ID3DXFont * Fonte[13];
ID3DXFont * fonte;
int MenuSelecionado = 1;
bool setadireita;
bool setaesquerda;
#define MENU_ITEM_MAX 7
#define MENU_ITEM_MIN 1
#define ITEM1_MAX 1
#define ITEM1_MIN 0
#define ITEM2_MAX 1
#define ITEM2_MIN 0
#define ITEM3_MAX 1
#define ITEM3_MIN 0
#define ITEM4_MAX 1
#define ITEM4_MIN 0
#define ITEM5_MAX 1
#define ITEM5_MIN 0
#define ITEM6_MAX 1
#define ITEM6_MIN 0
#define ITEM7_MAX 1
#define ITEM7_MIN 0
int Item1 = 0;
int Item2 = 0;
int Item3 = 0;
int Item4 = 0;
int Item5 = 0;
int Item6 = 0;
int Item7 = 0;
struct Janela{
int BaseX;
int BaseY;
int BaseW;
int BaseH;
bool Mostrar;
} BaseJanela;
int MenuEspaco = 25;
void GravaTexto(int X, int Y, D3DCOLOR Cor, ID3DXFont *fonte, const char* sNome,...)
{
char sTexto[1024] = "";
va_list ap;
if( !sNome || *sNome == '\0' )
return;
va_start( ap, sNome );
_vsnprintf_s( sTexto, 1024, 1023, sNome, ap );
va_end( ap );
RECT Posicao = { X, Y, X+500, Y+50 };
fonte->DrawText( NULL, sTexto, -1, &Posicao, DT_LEFT | DT_WORDBREAK, Cor);
}
void DrawRect(IDirect3DDevice9* Unidade, int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor)
{
D3DRECT BarRect = { baseX, baseY, baseX + baseW, baseY + baseH };
Unidade->Clear(1, &BarRect, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Cor, 0, 0);
}
void Base(IDirect3DDevice9* Unidade,int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2)
{
DrawRect(Unidade,baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade,baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade,baseX+1, baseY, baseW , baseH , Cor2);
}
void Menu(IDirect3DDevice9* Unidade,char *sTitulo, int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2,const char* sVersao,...)
{
DrawRect(Unidade,baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade,baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade,baseX+1, baseY, baseW , baseH , Cor2);
GravaTexto(baseX +5 ,baseY + 2 , 0x77FFFFFF, Fonte[12], sTitulo);
GravaTexto(baseX +5 ,baseY + baseH - 20 , 0x55FFFFFF, Fonte[12], sVersao);
Base(Unidade,baseX+5,baseY+30,baseW-10,baseH-60,0x44FFFFFF,0x44FFFFFF,0xFF2E2E2E);
}
void Botao(IDirect3DDevice9* Unidade,int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2,const char* sNome,...)
{
DrawRect(Unidade, baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade, baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade, baseX+1, baseY, baseW , baseH , Cor2);
GravaTexto(baseX + 10, baseY + 4, 0xFFFFFF00, Fonte[12], sNome);
}
[img]http://www.********.com/forum/attachments/tutorials-and-source/9508d1255172081-universal-menu-dx9-iw3mp-2009-10-10-07-57-17-00.jpg[/img]