zoukankan      html  css  js  c++  java
  • c++ 菜单动态效果

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <stdarg.h> 
    #include <time.h>
    #include "hello.h"
    #include <share.h>
    #include <Windows.h>
    //#define  var 333;
    //移动光标位置
    void gotoxy(int x,int y)
    {
        COORD xy;
        HANDLE hstdout;
        hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
        xy.X=x;
        xy.Y=y;
        SetConsoleCursorPosition(hstdout,xy);
        //CloseHandle(hstdout);
    }
    void fillchar(char a,int charlen)
    {
        COORD xy={0};
        HANDLE hstdout;
        long byw;
        
        hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
        FillConsoleOutputCharacter(hstdout,a,charlen,xy,&byw);
        CloseHandle(hstdout);
    }
    #define  X 20
    #define  Y 6
    //绘制边框
    void drawM(void)
    {
        int i;
        //上边
        gotoxy(X,Y);
        printf("");
         for (i=1;i<=13;i++)
         {
             printf("");
         }
        printf("");
        //左边
        for (i=1;i<=16;i++)
        {
          gotoxy(X,Y+i);
          printf("");
        }
        //右边
        for (i=1;i<=16;i++)
        {
            gotoxy(X+28,Y+i);
            printf("");
        }
        //下边
        gotoxy(X,Y+17);
        printf("");
        for (i=1;i<=13;i++)
        {
             printf("");
        }
        printf("");
        return ;
        
    }
    //drawmenu
    void drawmenu(void)
    {
        gotoxy(X+3,Y+3);
        printf("1->菜单选项一");
        gotoxy(X+3,Y+3+2);
        printf("   菜单选项二");
         gotoxy(X+3,Y+3+2+2);
        printf("   退出");
        gotoxy(0,0);
    }
    int selmenu_Num=0;
    int selmenu(void)
    { //0,1,2
      //如果按下↓selmenu_Num++; 如果>2  selmenu_Num=0;
      //如果按下↑selmenu_Num--; 如果<0  selmenu_Num=2;
        int ch=0;
        while(1)
        {
            ch=getch();
            //gotoxy(0,0);
            //printf("%d ",ch);
            if (ch==13)
            {
                return selmenu_Num;
            }
            switch(ch)
            {
            case 72://上光标
                selmenu_Num--;
                if (selmenu_Num<0)
                {
                    selmenu_Num=2;
                }
                break;
            case 80: //下光标
                selmenu_Num++;
                if (selmenu_Num>2)
                {
                    selmenu_Num=0;
                }
                break;
            }
         gotoxy(0,0);
        // printf("selmenu_num=%d",selmenu_Num);
           //动态菜单
           switch(selmenu_Num)
           {
           case 0:
               gotoxy(X+3,Y+3);
               printf("1->");
               gotoxy(X+3,Y+3+2);
               printf("   ");
               gotoxy(X+3,Y+3+2+2);
               printf("   ");
               gotoxy(0,0);
           break;
           case 1:
               gotoxy(X+3,Y+3);
               printf("   ");
               gotoxy(X+3,Y+3+2);
               printf("2->");
               gotoxy(X+3,Y+3+2+2);
               printf("   ");
               gotoxy(0,0);
           break;
           case 2:
               gotoxy(X+3,Y+3);
               printf("   ");
               gotoxy(X+3,Y+3+2);
               printf("   ");
               gotoxy(X+3,Y+3+2+2);
               printf("3->");
               gotoxy(0,0);
           break;
           }
        } //end while
         
        return selmenu_Num;
    }
    //doMenu
    void doMenu(void)
    { int sel;
       sel=    selmenu();
       switch(sel)
       {
       case 0: //菜单一
            gotoxy(0,0);
            printf("
    菜单一功能
    ");
           break;
       case 1:       
           gotoxy(0,0);
           printf("
    菜单二功能
    ");
           break;
       case 2: //退出
           exit(1);
           break;
       }
    }
    
    int main(void)
    {  //Y行 X列
      // fillchar(' ',3000);
        system("color 0a");
        system("title QQ150330575");
        drawM();
        drawmenu();
        doMenu();
        getchar();
        getchar();
        return 0;
    }
  • 相关阅读:
    如何:创建自定义 HTTP 模块
    [转]开源邮件系统
    [转]开源.NET邮件服务器
    [转]文件上传及图片水印
    oracle存储过程学习收集|韩顺平oracle视频教程|
    PLSQL自动输入select * from|附件在cnblogs文件|
    oracle有规律数据触发器实现递增(NC地区分类)|更新一路case简化|
    oracle中的几种循环|转|
    官方解释sqlplus /nolog conn /as sysdba无密码可登陆
    建工项目对账查询引擎sql
  • 原文地址:https://www.cnblogs.com/whzym111/p/6165204.html
Copyright © 2011-2022 走看看