Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SIGN "Gregory Velmozhin"
- #define BUTTON_BREADTH 7 /*Ширина кнопки*/
- #define BUTTON_LENGTH 19 /*Длина кнопки*/
- #define BUTTON_COUNT 9 /*Кол-во кнопок*/
- #define ACTIVE_BUTTON_COLOR FOREGROUND_GREEN|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY /*Цвет подсветки активной кнопки*/
- #define BUTTON_HOTKEY_COLOR FOREGROUND_RED|FOREGROUND_INTENSITY /*Цвет подсветки горячей клавиши кнопки*/
- #define BUF 100000
- FILE*fi;
- typedef struct{
- char field[BUTTON_BREADTH][BUTTON_LENGTH];
- char hotkey;
- int function_number;
- } BUTTON;
- BUTTON button[BUTTON_COUNT];
- char*sButtonName[BUTTON_COUNT]={
- "Information",//0
- "About",//1
- "Help",//2
- "Code/Decode",//3
- "On/off .ini",//4
- "Set Flags",//5
- "Processing File",//6
- "Secret Button",//7
- "Exit",//8
- };
- char sButtonBuffer[BUTTON_LENGTH-2]={0},*pButtonBuffer=sButtonBuffer;
- int ACTIVE_BUTTON=0;
- HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
- void (*pButtonFunction[BUTTON_COUNT])(void);
- void initfunction();
- void Button_Information(void);
- void Button_About(void);
- void Button_Help(void);
- void Button_Code_Decode(void);
- void Button_On_off_ini(void);
- void Button_Set_Flags(void);
- void Button_Processing_File(void);
- void Secret_Button(void);
- void Button_Exit(void);
- void makebutton();
- void output(BUTTON,int,int);
- void outmenu(int);
- void workmenu();
- int main_menu()
- {
- initfunction();
- makebutton();
- workmenu();
- return 0;
- }
- void makebutton()
- {
- int i,j,k;
- for(i=0;i<BUTTON_COUNT;i++)
- {
- strncpy(sButtonBuffer,sButtonName[i],BUTTON_LENGTH-3);
- button[i].function_number=i;
- button[i].hotkey=*pButtonBuffer;
- for(j=0;j<BUTTON_BREADTH;j++)for(k=0;k<BUTTON_LENGTH;k++)
- {
- if((j==BUTTON_BREADTH/2)&&(k>0))button[i].field[j][k]=*pButtonBuffer++;
- if((j==0)&&(k==0)){button[i].field[j][k]=201;continue;}
- if((j==0)&&(k==BUTTON_LENGTH-1)){button[i].field[j][k]=187;continue;}
- if((j==BUTTON_BREADTH-1)&&(k==0)){button[i].field[j][k]=200;continue;}
- if((j==BUTTON_BREADTH-1)&&(k==BUTTON_LENGTH-1)){button[i].field[j][k]=188;continue;}
- if((j==0)||(j==BUTTON_BREADTH-1)){button[i].field[j][k]=205;continue;}
- if((k==0)||(k==BUTTON_LENGTH-1)){button[i].field[j][k]=186;continue;}
- //if((j==0)||(j==BUTTON_BREADTH-1)||(k==0)||(k==BUTTON_LENGTH-1))button[i].field[j][k]=219;
- }
- pButtonBuffer=sButtonBuffer;
- *pButtonBuffer=0;
- }
- }
- void outmenu(int active_button)
- {
- int i;
- for(i=0;i<BUTTON_COUNT;i++)
- {
- if(i!=active_button)output(button[i],i,0);
- else
- {
- SetConsoleTextAttribute(hOut,ACTIVE_BUTTON_COLOR);
- output(button[i],i,1);
- SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
- }
- }
- }
- void output(BUTTON button,int BUTTON_NUMBER,int BUTTON_STATUS)
- {
- int c,f;
- COORD p;
- p.X=BUTTON_LENGTH*(BUTTON_NUMBER%3);
- p.Y=BUTTON_BREADTH*(BUTTON_NUMBER/3);
- SetConsoleCursorPosition(hOut,p);
- for(c=0;c<BUTTON_BREADTH;c++)
- {
- for(f=0;f<BUTTON_LENGTH;f++)
- {
- if(button.field[c][f]!=button.hotkey)printf("%c",button.field[c][f]);
- else
- {
- SetConsoleTextAttribute(hOut,BUTTON_HOTKEY_COLOR);
- printf("%c",button.field[c][f]);
- if(!BUTTON_STATUS)SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);
- else SetConsoleTextAttribute(hOut,ACTIVE_BUTTON_COLOR);
- }
- }
- p.Y+=1;
- SetConsoleCursorPosition(hOut,p);
- }
- }
- void workmenu()
- {
- char c;
- int MENU_STATUS=1;
- SetConsoleTitleA("Menu by "SIGN);
- outmenu(ACTIVE_BUTTON);
- while(1)
- {
- switch(c=getch())
- {
- case 72:ACTIVE_BUTTON-=3;break;//вверх
- case 80:ACTIVE_BUTTON+=3;break;//вниз
- case 75:ACTIVE_BUTTON-=1;break;//влево
- case 77:ACTIVE_BUTTON+=1;break;//вправо
- case 'i':
- {//Use button Information
- ACTIVE_BUTTON=0;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[0]();
- c=getch();
- break;
- }
- case 'I':ACTIVE_BUTTON=0;break;//Active button Information
- case 'a':
- {//Use button About
- ACTIVE_BUTTON=1;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[1]();
- c=getch();
- break;
- }
- case 'A':ACTIVE_BUTTON=1;break;//Active button About
- case 'h':
- {//Use button Help
- ACTIVE_BUTTON=2;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[2]();
- c=getch();
- break;
- }
- case 59:ACTIVE_BUTTON=2;break;//Active button Help F1
- //case 'H':ACTIVE_BUTTON=2;break;//Active button Help
- case 'c':
- {//Use button Code/Decode
- ACTIVE_BUTTON=3;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[3]();
- c=getch();
- break;
- }
- case 'C':ACTIVE_BUTTON=3;break;//Active button Code/Decode
- case 'o':
- {//Use button On/off .ini
- ACTIVE_BUTTON=4;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[4]();
- c=getch();
- break;
- }
- case 'O':ACTIVE_BUTTON=4;break;//Active button On/Off .ini
- case 's':
- {//Use button Set Flags
- ACTIVE_BUTTON=5;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[5]();
- c=getch();
- break;
- }
- case 'S':ACTIVE_BUTTON=5;break;//Active button Set Flags
- case 'p':
- {//Use button Processing File
- ACTIVE_BUTTON=6;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[6]();
- c=getch();
- break;
- }
- //case 'P':ACTIVE_BUTTON=6;break;//Active button Processing File
- //case 'e':ACTIVE_BUTTON=7;break;//Active button Secret Button
- //case 'E':ACTIVE_BUTTON=7;break;//Active button Secret Button
- case 'e':
- {//Use button Exit
- ACTIVE_BUTTON=8;
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[8]();
- c=getch();
- break;
- }
- case 'E':ACTIVE_BUTTON=8;break;//Active button Exit
- case 13:
- {//Ввод на Enter
- MENU_STATUS=0;
- system("cls");
- pButtonFunction[ACTIVE_BUTTON]();
- c=getch();
- break;
- }
- case 8:MENU_STATUS=1;break;//Backspace
- case VK_ESCAPE:exit(0);//выход
- }
- if(ACTIVE_BUTTON<0)ACTIVE_BUTTON+=BUTTON_COUNT;
- if(ACTIVE_BUTTON>8)ACTIVE_BUTTON-=BUTTON_COUNT;
- if(MENU_STATUS)outmenu(ACTIVE_BUTTON);
- }
- }
- void initfunction()
- {
- pButtonFunction[0]=Button_Information;
- pButtonFunction[1]=Button_About;
- pButtonFunction[2]=Button_Help;
- pButtonFunction[3]=Button_Code_Decode;
- pButtonFunction[4]=Button_On_off_ini;
- pButtonFunction[5]=Button_Set_Flags;
- pButtonFunction[6]=Button_Processing_File;
- pButtonFunction[7]=Secret_Button;
- pButtonFunction[8]=Button_Exit;
- }
- void Button_Information()
- {
- FILE*finf;
- char c,buf[BUF]={0},*b=buf;
- if(!(finf=fopen(BIT.FILE_NAME[2],"r")))error(2);
- c=fgetc(finf);
- while(!feof(finf))
- {
- *b++=c;
- c=fgetc(finf);
- }
- printf("%s",buf);
- fclose(finf);
- if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
- }
- void Button_About()
- {
- char c,buf[BUF]={0},*b=buf;
- if(!(fi=fopen(BIT.FILE_NAME[3],"r")))error(3);
- c=fgetc(fi);
- while(!feof(fi))
- {
- *b++=c;
- c=fgetc(fi);
- }
- printf("%s",buf);
- fclose(fi);
- if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
- }
- void Button_Help()
- {
- FILE*fhelp;
- char c,buf[BUF]={0},*b=buf;
- if(!(fhelp=fopen(BIT.FILE_NAME[0],"r")))error(4);
- c=fgetc(fhelp);
- while(!feof(fhelp))
- {
- *b++=c;
- c=fgetc(fhelp);
- }
- printf("%s",buf);
- fclose(fhelp);
- if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
- }
- void Button_Code_Decode()
- {
- printf("Code/Decode");
- }
- void Button_On_off_ini()
- {
- printf("On/Off .ini");
- }
- void Button_Set_Flags()
- {
- printf("Set Flags");
- }
- void Button_Processing_File()
- {
- printf("Processing File");
- }
- void Secret_Button()
- {
- printf("U CAN'T SEE SECRET INFO !!!! GTFO");
- }
- void Button_Exit()
- {
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement