#include <shellapi.h>

void AffErreur2(char *titre)			{
	LPVOID lpMsgBuf;
	FormatMessage( 
		FORMAT_MESSAGE_ALLOCATE_BUFFER | 
		FORMAT_MESSAGE_FROM_SYSTEM | 
		FORMAT_MESSAGE_IGNORE_INSERTS,
		NULL,
		GetLastError(),
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
		(LPTSTR) &lpMsgBuf,
		0,
		NULL 
	);
	// Process any inserts in lpMsgBuf.
	// ...
	// Display the string.
	MessageBox( hConsole, (LPCTSTR)lpMsgBuf, titre, MB_OK | MB_ICONINFORMATION );
	// Free the buffer.
	LocalFree( lpMsgBuf );
}

void Shell(char *commande, char *fichier, char *params)			{
	if ((int)ShellExecute(hConsole,commande,fichier,params,NULL,SW_SHOW)<=32)
		AffErreur2(fichier);
}

#define Ouvre(fichier)				Shell("open",fichier,"")
#define Execute(fichier,args)		Shell("open",fichier,args)

//char **gblCmds;
int gblParam1=0, gblTypeCmd=0;
char *gblCmds[100];

//Crée un menu de choix
//ChoixMultiple(nombreOptions, "Option1", "Chemin1", "Option2", "Chemin2", ...);
void ChoixMultiple(int nombre, ...);

#define ChoixProg(cmd1,cmd2)		ChoixMultiple(2,"Exécuter le prog.",cmd1,"Ouvrir le répertoire",cmd2)

void ChoixExemple(char *cmd1, char *cmd2)			{
	ChoixMultiple(2,"Tester la démo",cmd1,"Ouvrir le projet",cmd2);
	gblParam1=1;
}

void ChoixMultiple(int nombre, ...)			{
	int i,x,y;
	va_list   arg_ptr;
	va_start(arg_ptr, nombre);

	gblParam1=0;
	PositionSouris(&x,&y);
	cpm.Init(x,y);

	for (i=0;i<nombre;i++)			{
		cpm.AjElement(va_arg(arg_ptr,char*));
		gblCmds[i]=va_arg(arg_ptr,char*);
	}
	cpm.Demarre();
}

void OptionChoisie(int opt)			{
	if (gblParam1==1 && opt==0)
		Execute("Tools\\VisualBoyAdvance\\VisualBoyAdvance.exe",gblCmds[opt]);
	else if (gblParam1==2 && opt==1)
		Execute("Tools\\VisualBoyAdvance\\VisualBoyAdvance.exe",gblCmds[opt]);
	else
		Ouvre(gblCmds[opt]);
}

