Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
517
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.72 KB | None | 0 0
  1. #define SIGN "Gregory Velmozhin"
  2. #define BUTTON_BREADTH 7 /*Ширина кнопки*/
  3. #define BUTTON_LENGTH 19 /*Длина кнопки*/
  4. #define BUTTON_COUNT 9   /*Кол-во кнопок*/
  5. #define ACTIVE_BUTTON_COLOR FOREGROUND_GREEN|FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_INTENSITY /*Цвет подсветки активной кнопки*/
  6. #define BUTTON_HOTKEY_COLOR FOREGROUND_RED|FOREGROUND_INTENSITY /*Цвет подсветки горячей клавиши кнопки*/
  7. #define BUF 100000
  8. FILE*fi;
  9. typedef struct{
  10.     char field[BUTTON_BREADTH][BUTTON_LENGTH];
  11.     char hotkey;
  12.     int function_number;
  13.     } BUTTON;
  14. BUTTON button[BUTTON_COUNT];
  15.  
  16. char*sButtonName[BUTTON_COUNT]={
  17.     "Information",//0
  18.     "About",//1
  19.     "Help",//2
  20.     "Code/Decode",//3
  21.     "On/off .ini",//4
  22.     "Set Flags",//5
  23.     "Processing File",//6
  24.     "Secret Button",//7
  25.     "Exit",//8
  26. };
  27. char sButtonBuffer[BUTTON_LENGTH-2]={0},*pButtonBuffer=sButtonBuffer;
  28. int ACTIVE_BUTTON=0;
  29. HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
  30. void (*pButtonFunction[BUTTON_COUNT])(void);
  31.  
  32. void initfunction();
  33. void Button_Information(void);
  34. void Button_About(void);
  35. void Button_Help(void);
  36. void Button_Code_Decode(void);
  37. void Button_On_off_ini(void);
  38. void Button_Set_Flags(void);
  39. void Button_Processing_File(void);
  40. void Secret_Button(void);
  41. void Button_Exit(void);
  42.  
  43. void makebutton();
  44. void output(BUTTON,int,int);
  45. void outmenu(int);
  46. void workmenu();
  47.  
  48.  
  49. int main_menu()
  50. {
  51.     initfunction();
  52.     makebutton();
  53.     workmenu();
  54.     return 0;
  55. }
  56.  
  57. void makebutton()
  58. {
  59.     int i,j,k;
  60.     for(i=0;i<BUTTON_COUNT;i++)
  61.     {
  62.         strncpy(sButtonBuffer,sButtonName[i],BUTTON_LENGTH-3);
  63.         button[i].function_number=i;
  64.         button[i].hotkey=*pButtonBuffer;
  65.         for(j=0;j<BUTTON_BREADTH;j++)for(k=0;k<BUTTON_LENGTH;k++)
  66.         {
  67.             if((j==BUTTON_BREADTH/2)&&(k>0))button[i].field[j][k]=*pButtonBuffer++;
  68.             if((j==0)&&(k==0)){button[i].field[j][k]=201;continue;}
  69.             if((j==0)&&(k==BUTTON_LENGTH-1)){button[i].field[j][k]=187;continue;}
  70.             if((j==BUTTON_BREADTH-1)&&(k==0)){button[i].field[j][k]=200;continue;}
  71.             if((j==BUTTON_BREADTH-1)&&(k==BUTTON_LENGTH-1)){button[i].field[j][k]=188;continue;}
  72.             if((j==0)||(j==BUTTON_BREADTH-1)){button[i].field[j][k]=205;continue;}
  73.             if((k==0)||(k==BUTTON_LENGTH-1)){button[i].field[j][k]=186;continue;}
  74.             //if((j==0)||(j==BUTTON_BREADTH-1)||(k==0)||(k==BUTTON_LENGTH-1))button[i].field[j][k]=219;
  75.         }
  76.         pButtonBuffer=sButtonBuffer;
  77.         *pButtonBuffer=0;
  78.     }
  79. }
  80.  
  81. void outmenu(int active_button)
  82. {
  83.     int i;
  84.     for(i=0;i<BUTTON_COUNT;i++)
  85.     {
  86.         if(i!=active_button)output(button[i],i,0);
  87.         else
  88.         {
  89.             SetConsoleTextAttribute(hOut,ACTIVE_BUTTON_COLOR);
  90.             output(button[i],i,1);
  91.             SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
  92.         }
  93.     }
  94. }
  95.  
  96. void output(BUTTON button,int BUTTON_NUMBER,int BUTTON_STATUS)
  97. {
  98.     int c,f;
  99.     COORD p;
  100.     p.X=BUTTON_LENGTH*(BUTTON_NUMBER%3);
  101.     p.Y=BUTTON_BREADTH*(BUTTON_NUMBER/3);
  102.     SetConsoleCursorPosition(hOut,p);
  103.     for(c=0;c<BUTTON_BREADTH;c++)
  104.         {
  105.             for(f=0;f<BUTTON_LENGTH;f++)
  106.             {
  107.                 if(button.field[c][f]!=button.hotkey)printf("%c",button.field[c][f]);
  108.                 else
  109.                 {
  110.                     SetConsoleTextAttribute(hOut,BUTTON_HOTKEY_COLOR);
  111.                     printf("%c",button.field[c][f]);
  112.                     if(!BUTTON_STATUS)SetConsoleTextAttribute(hOut,FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);
  113.                     else SetConsoleTextAttribute(hOut,ACTIVE_BUTTON_COLOR);
  114.                 }
  115.             }
  116.             p.Y+=1;
  117.             SetConsoleCursorPosition(hOut,p);
  118.         }
  119. }
  120.  
  121. void workmenu()
  122. {
  123.     char c;
  124.     int MENU_STATUS=1;
  125.     SetConsoleTitleA("Menu by "SIGN);
  126.     outmenu(ACTIVE_BUTTON);
  127.     while(1)
  128.     {
  129.         switch(c=getch())
  130.         {
  131.             case 72:ACTIVE_BUTTON-=3;break;//вверх
  132.             case 80:ACTIVE_BUTTON+=3;break;//вниз
  133.             case 75:ACTIVE_BUTTON-=1;break;//влево
  134.             case 77:ACTIVE_BUTTON+=1;break;//вправо
  135.             case 'i':
  136.             {//Use button Information
  137.                 ACTIVE_BUTTON=0;
  138.                 MENU_STATUS=0;
  139.                 system("cls");
  140.                 pButtonFunction[0]();
  141.                 c=getch();
  142.                 break;
  143.             }          
  144.             case 'I':ACTIVE_BUTTON=0;break;//Active button Information
  145.             case 'a':
  146.             {//Use button About
  147.                 ACTIVE_BUTTON=1;
  148.                 MENU_STATUS=0;
  149.                 system("cls");
  150.                 pButtonFunction[1]();
  151.                 c=getch();
  152.                 break;
  153.             }  
  154.             case 'A':ACTIVE_BUTTON=1;break;//Active button About
  155.             case 'h':
  156.             {//Use button Help
  157.                 ACTIVE_BUTTON=2;
  158.                 MENU_STATUS=0;
  159.                 system("cls");
  160.                 pButtonFunction[2]();
  161.                 c=getch();
  162.                 break;
  163.             }  
  164.             case 59:ACTIVE_BUTTON=2;break;//Active button Help F1
  165.             //case 'H':ACTIVE_BUTTON=2;break;//Active button Help
  166.             case 'c':
  167.             {//Use button Code/Decode
  168.                 ACTIVE_BUTTON=3;
  169.                 MENU_STATUS=0;
  170.                 system("cls");
  171.                 pButtonFunction[3]();
  172.                 c=getch();
  173.                 break;
  174.             }              
  175.             case 'C':ACTIVE_BUTTON=3;break;//Active button Code/Decode
  176.             case 'o':
  177.             {//Use button On/off .ini
  178.                 ACTIVE_BUTTON=4;
  179.                 MENU_STATUS=0;
  180.                 system("cls");
  181.                 pButtonFunction[4]();
  182.                 c=getch();
  183.                 break;
  184.             }  
  185.             case 'O':ACTIVE_BUTTON=4;break;//Active button On/Off .ini
  186.             case 's':
  187.             {//Use button Set Flags
  188.                 ACTIVE_BUTTON=5;
  189.                 MENU_STATUS=0;
  190.                 system("cls");
  191.                 pButtonFunction[5]();
  192.                 c=getch();
  193.                 break;
  194.             }  
  195.             case 'S':ACTIVE_BUTTON=5;break;//Active button Set Flags
  196.             case 'p':
  197.             {//Use button Processing File
  198.                 ACTIVE_BUTTON=6;
  199.                 MENU_STATUS=0;
  200.                 system("cls");
  201.                 pButtonFunction[6]();
  202.                 c=getch();
  203.                 break;
  204.             }  
  205.             //case 'P':ACTIVE_BUTTON=6;break;//Active button Processing File
  206.             //case 'e':ACTIVE_BUTTON=7;break;//Active button Secret Button
  207.             //case 'E':ACTIVE_BUTTON=7;break;//Active button Secret Button
  208.             case 'e':
  209.             {//Use button Exit
  210.                 ACTIVE_BUTTON=8;
  211.                 MENU_STATUS=0;
  212.                 system("cls");
  213.                 pButtonFunction[8]();
  214.                 c=getch();
  215.                 break;
  216.             }  
  217.             case 'E':ACTIVE_BUTTON=8;break;//Active button Exit
  218.             case 13:
  219.             {//Ввод на Enter
  220.                 MENU_STATUS=0;
  221.                 system("cls");
  222.                 pButtonFunction[ACTIVE_BUTTON]();
  223.                 c=getch();
  224.                 break;
  225.             }  
  226.             case 8:MENU_STATUS=1;break;//Backspace
  227.             case VK_ESCAPE:exit(0);//выход
  228.         }
  229.         if(ACTIVE_BUTTON<0)ACTIVE_BUTTON+=BUTTON_COUNT;
  230.         if(ACTIVE_BUTTON>8)ACTIVE_BUTTON-=BUTTON_COUNT;
  231.         if(MENU_STATUS)outmenu(ACTIVE_BUTTON);
  232.     }
  233. }
  234. void initfunction()
  235. {
  236.  pButtonFunction[0]=Button_Information;
  237.  pButtonFunction[1]=Button_About;
  238.  pButtonFunction[2]=Button_Help;
  239.  pButtonFunction[3]=Button_Code_Decode;
  240.  pButtonFunction[4]=Button_On_off_ini;
  241.  pButtonFunction[5]=Button_Set_Flags;
  242.  pButtonFunction[6]=Button_Processing_File;
  243.  pButtonFunction[7]=Secret_Button;
  244.  pButtonFunction[8]=Button_Exit;
  245. }
  246.  
  247. void Button_Information()
  248. {
  249.     FILE*finf;
  250.     char c,buf[BUF]={0},*b=buf;
  251.     if(!(finf=fopen(BIT.FILE_NAME[2],"r")))error(2);
  252.     c=fgetc(finf);
  253.     while(!feof(finf))
  254.     {
  255.         *b++=c;
  256.         c=fgetc(finf);
  257.     }
  258.     printf("%s",buf);
  259.     fclose(finf);
  260.     if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
  261. }
  262. void Button_About()
  263. {
  264.     char c,buf[BUF]={0},*b=buf;
  265.     if(!(fi=fopen(BIT.FILE_NAME[3],"r")))error(3);
  266.     c=fgetc(fi);
  267.     while(!feof(fi))
  268.     {
  269.         *b++=c;
  270.         c=fgetc(fi);
  271.     }
  272.     printf("%s",buf);
  273.     fclose(fi);
  274.     if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
  275. }
  276. void Button_Help()
  277. {
  278.     FILE*fhelp;
  279.     char c,buf[BUF]={0},*b=buf;
  280.     if(!(fhelp=fopen(BIT.FILE_NAME[0],"r")))error(4);
  281.     c=fgetc(fhelp);
  282.     while(!feof(fhelp))
  283.     {
  284.         *b++=c;
  285.         c=fgetc(fhelp);
  286.     }
  287.     printf("%s",buf);
  288.     fclose(fhelp);
  289.     if(GETBIT(5))printf("\neMail - iGriffer@gmail.com");
  290. }
  291. void Button_Code_Decode()
  292. {
  293.     printf("Code/Decode");
  294. }
  295. void Button_On_off_ini()
  296. {
  297.     printf("On/Off .ini");
  298. }
  299. void Button_Set_Flags()
  300. {
  301.     printf("Set Flags");
  302. }
  303. void Button_Processing_File()
  304. {
  305.     printf("Processing File");
  306. }
  307. void Secret_Button()
  308. {
  309.     printf("U CAN'T SEE SECRET INFO !!!! GTFO");
  310. }
  311. void Button_Exit()
  312. {
  313.     exit(0);
  314. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement