• c++ 方框中绘制菜单代码


    
    
    绘制静态菜单
    getch与getchar
    接收光标控制
    
    一、绘制静态菜单
         编写函数void mainmenu( void)
    二、getch与getchar
       getch()的作用是从键盘接收一个字符,而且并不把这个字符显示出来,就是说,你按了一个键后它并不在屏幕上显示你按的什么,而继续运行后面的代码;   
      getche()则是有返回显示;   
      getchar()函数也是从键盘上读入一个字符,并带回显。它与getch()的区别在于:getchar()函数等待输入直到按回车才结束,回车前的所有输入字符都会逐个显示在屏幕上但只有第一个字符作为函数的返回值.
    #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("-->菜单选项一");
        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);
        } //end while
        printf("
    选择的菜单是:%d");
        return selmenu_Num;
    }
    int main(void)
    {  //Y行 X列
      // fillchar(' ',3000);
        system("color 0a");
        system("title QQ150330575");
        drawM();
        drawmenu();
        selmenu();
        getchar();
        getchar();
        return 0;
    }
  • 相关阅读:
    BZOJ 1021 循环的债务
    BZOJ 1019 汉诺塔
    BZOJ 1018 堵塞的交通
    BZOJ 1017 魔兽地图
    BZOJ 1016 最小生成树计数
    Luogu 3008 [USACO11JAN]道路和飞机Roads and Planes
    Luogu 3625 [APIO2009]采油区域
    Luogu 4139 上帝与集合的正确用法
    Luogu 3629 [APIO2010]巡逻
    Luogu 3626 [APIO2009]会议中心
  • 原文地址:https://www.cnblogs.com/whzym111/p/6165128.html
Copyright © 2020-2023  润新知