windows控制台下光标移动

 

#include<stdio.h>
#include<windows.h>
#include<conio.h>


HANDLE hout;



// 从键盘获取输入,如果是方向键则前进或后退,如果是回车键则换行,如果是字符则输出
char GetInput()  
{
     int ch;
     COORD coord;
     CONSOLE_SCREEN_BUFFER_INFO csbi;


     ch=getch();
     while(ch==0xE0 || ch==0x0d)
     {
         GetConsoleScreenBufferInfo(hout,&csbi);
         coord.X=csbi.dwCursorPosition.X;
         coord.Y=csbi.dwCursorPosition.Y;

         if(ch==0x0d)   // 回车
         {
             coord.X=0;
             coord.Y++;
             SetConsoleCursorPosition(hout,coord);
             break;
         }

         ch=getch();

         if(ch==0x48)   // 上
         {
             if(coord.Y!=0)coord.Y--;    
         }
         else if(ch==0x50)   // 下
         {    
             coord.Y++;
         }
         else if(ch==0x4b)   // 左
         {
             if(coord.X!=0)coord.X--;
         }
         else if(ch==0x4d)   // 右
         {
             if(coord.X!=79)coord.X++;
             else {
                 coord.X=0;
                 coord.Y++;
             }
         }
        
         SetConsoleCursorPosition(hout,coord);
         ch=getch();
     }

     return ch;
}



void SetCur(short x,short y)   // 设置光标位置
{
     COORD coord;
     coord.X=x;
     coord.Y=y;

     SetConsoleCursorPosition(hout,coord);
}



void main()
{
     char ch;
     hout=GetStdHandle(STD_OUTPUT_HANDLE);

     //从键盘获取输入,如果是方向键则执行方向功能,如果是回车键则换行,如果是字符则输出
     while(1)
     {
         ch=GetInput();
         printf("%c",ch);
     }
}

猜你喜欢

转载自blog.csdn.net/q648253885/article/details/6593863