#include"hpspital.h"

int main()
{
	COORD size={SCR_COL,SCR_ROW};
	WORD att=FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY|BACKGROUND_BLUE;
	gh_std_out=GetStdHandle(STD_OUTPUT_HANDLE);
	gh_std_in=GetStdHandle(STD_INPUT_HANDLE);
	SetConsoleTitle(gp_sys_name);
	SetConsoleScreenBufferSize(gh_std_out,size);
	SetConsoleTextAttribute(gh_std_out,att);
	ClearScreen();
	ShowMenu();
	getch();
	return 0;
} 
void ShowMenu()
{
	CONSOLE_SCREEN_BUFFER_INFO bInfo;
	CONSOLE_CURSOR_INFO lpCur;
	COORD size;
	COORD pos={0,0};
	int i,j;
	int PosA=2,PosB;
	char ch;
	GetConsoleScreenBufferInfo(gh_std_out,&bInfo);
	size.X=bInfo.dwSize.X;
	size.Y=1;
	SetConsoleCursorPosition(gh_std_out,pos);
	for(i=0;i<5;i++)
	{
		printf("%s",ga_main_menu[i]);
	}
	GetConsoleCursorInfo(gh_std_out,&lpCur);
	lpCur.bVisible=FALSE;
	SetConsoleCursorInfo(gh_std_out,&lpCur);
	
	gp_buff_menubar_info=(CHAR_INFO*)malloc(size.X*size.Y*sizeof(CHAR_INFO));
	SMALL_RECT rcMenu={0,0,size.X-1,0};
	ReadConsoleOutput(gh_std_out,gp_buff_menubar_info,size,pos,&rcMenu);
	for(i=0;i<size.X;i++)
	{
		(gp_buff_menubar_info+i)->Attributes=BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED;
		ch=(char)((gp_buff_menubar_info+i)->Char.AsciiChar);
		if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
		{
			(gp_buff_menubar_info+i)->Attributes|=FOREGROUND_RED;
		}
	}
	
	WriteConsoleOutput(gh_std_out,gp_buff_menubar_info,size,pos,&rcMenu);
	TagMainMenu(gi_sel_menu);
	return;
}

void TagMainMenu(int num)
{
	CONSOLE_SCREEN_BUFFER_INFO bInfo;
	COORD size;
	COORD pos={0,0};
	int PosA=2,PosB;
	char ch;
	int i;
	
	if(num==0)
	{
		PosA=0;
		PosB=0;
	}
	else
	{
		for(i=1;i<num;i++)
		{
			PosA+=strlen(ga_main_menu[i-1])+4;
		}
		PosB=PosA+strlen(ga_menu[num-1]);
	}
	GetConsoleScreenBufferInfo(gh_std_out,&bInfo);
	size.X=bInfo.dwSize.X;
	size.Y=1;
	
	for(i=1;i<PosA;i++)
	{
		(gp_buff_menubar_info+i)->Attributes=BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED;
		ch=(gp_buff_menubar_info+i)->Char.AsciiChar;
		if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
		{
			(gp_buff_menubar_info+i)->Attributes|=FOREGROUND_RED;
		}
	}
	
	for(i=PosA;i<PosB;i++)
	{
		(gp_buff_menubar_info+i)->Attributes=BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED;
	}
	
	for(i=PosB;i<bInfo.dwSize.X;i++)
	{
		(gp_buff_menubar_info+i)->Attributes=BACKGROUND_BLUE|BACKGROUND_GREEN|BACKGROUND_RED;
		ch=(char)((gp_buff_menubar_info+i)->Char.AsciiChar);
		if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
		{
			(gp_buff_menubar_info+i)->Attributes|=FOREGROUND_RED;
		}
	}
	
	SMALL_RECT rcMenu={0,0,size.X-1,0};
	WriteConsoleOutput(gh_std_out,gp_buffer_menubar_info,size,pos,&rcMenu);
	
	return;
}

void ClearScreen()
{
	CONSOLE_SCREEN_BUFFER_INFO bInfo;
	COORD home={0,0};
	unsigned long size;
	GetConsoleScreenBufferInfo(gh_std_out,&bInfo);
	size=bInfo.dwSize.X*bInfo.dwSize.Y;
	
	FILLConsoleOutputAttribute(gh_std_out,bInfo.wAttributes,size,home,NULL);
	FILLConsoleOutputCharacter(gh_std_out,''size,home,NULL);
	return;
}









