2013-01-18 103 views
1

我使用Visual Studio 2010和我想移動光標時,鍵盤上的用戶按右鍵數組鍵:c + +移動光標在控制檯

#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; 
} 

它的工作,但只有一次 - 第二,第三等按下不工作。

+0

'fflush(stdin);' - 不這樣做。我不想忍受由於代碼中的一行而自發燃燒的可能性。 – chris

回答

0

你永遠不會改變poz_x,所以你總是最終調用

gotoxy(2,1); 
在循環

3

您永遠不會在您的代碼中更改poz_x。在你的while循環中,你總是移動到初始值+1。像這樣的代碼應該是正確的:

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

謝謝,現在工作:) –