winapi — C ++ Переместить курсор в консоли

Я использую Visual Studio 2010 и пытаюсь переместить курсор, когда пользователь нажимает правую клавишу массива на клавиатуре:

#include "stdafx.h"#include <iostream>
#include <conio.h>
#include <windows.h>

using namespace std;

void gotoxy(int x, int y)
{
static HANDLE h = NULL;
if(!h)
h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD c = { x, y };
SetConsoleCursorPosition(h,c);
}

int main()
{
int Keys;
int poz_x = 1;
int poz_y = 1;
gotoxy(poz_x,poz_y);

while(true)
{
fflush(stdin);
Keys = getch();
if (Keys == 77)
gotoxy(poz_x+1,poz_y);
}

cin.get();
return 0;
}

Он работает, но только один раз — второй, третий и т. Д. Нажал не работает.

1

Решение

Ты никогда не меняешься poz_x, так что вы всегда звоните

gotoxy(2,1);

в петле.

0

Другие решения

Ты никогда не меняешься poz_x в вашем коде. В вашем цикле while вы всегда переходите к начальному значению +1. Код, подобный этому, должен быть правильным:

while(true)
{
Keys = getch();
if (Keys == 77)
{
poz_x+=1;
gotoxy(poz_x,poz_y);
}
}
3

По вопросам рекламы [email protected]