본문 바로가기

C or C++/C or C++ API

SetConsoleCursorPosition API

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

SetConsoleCursorPosition

 

이API는 커서를 원하는 좌표로 이동시켜주는 API이다.

 

이API를 쓰지않고 cls를 통해 화면을지우고 다시 찍어주게되면

 

처음부터 끝까지 다시 찍는것이기때문에 사용할떄 화면이 흔들리거나 이쁘지가 않을수가있다.

 

하지만 SetConsoleCursorPosition 를 사용하면

 

해당좌표만가서 원하는 좌표에 값만다시 처리하기때문에 아주유용하다.

 

함수원형을 살펴보면

1
2
3
4
BOOL WINAPI SetConsoleCursorPosition(
  _In_ HANDLE hConsoleOutput,
  _In_ COORD  dwCursorPosition
);
cs

첫번째 인자로 핸들을받고

 

두번째인자로

 

COORD 구조체로 좌표값을 받는다.

 

위 API로 간단한 함수를 만들어 봤다.

 

1
2
3
4
5
6
7
void gotoxy(int x,int y)
{
    COORD Pos;
    Pos.X=x;
    Pos.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos); 
}
cs

 

핸들을 넘겨줄때 STD_OUTPUT_HANDLE는 버퍼를 활성화시키라는것인거라고 들었는데 자세히는 찾아보지않았다.

 

이것을 사용해 간단한 프로그램을 만들어봤다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <windows.h>
void gotoxy(int x,int y);
void main()
{
    int cnt=-1;
    char *str="2016/11/13!";
    printf("Hello World!");
    while(cnt++!=12)
    {
        gotoxy(cnt,0);
        printf("%c",str[cnt]);
        Sleep(500);
    }
}
void gotoxy(int x,int y)
{
    COORD Pos;
    Pos.X=x;
    Pos.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos); 
}
cs

실행시키면 이런식이다.

 

 

 

 

 

'C or C++ > C or C++ API' 카테고리의 다른 글

SetConsoleTextAttribute API  (0) 2016.11.14