정리가 필요하다 싶어 이곳저곳에서 찾아서 정리해 보았습니다.~_~

구글에서 검색해 다른 분의 블로그에서 얻은 정보가 반, MSDN에서 얻은 정보가 반입니다.

다른 사람들도 이를 보고 도움을 얻었으면 좋겠네요.



♧콘솔 타이틀 변경


콘솔 창을 열면 보통 C:\Windows\system32\cmd.exe 등으로 타이틀 바에 적혀 있을 것입니다.

이를 변경하는 함수도 있다는 것을 아시나요!?


SetConsoleTitle( "문자열" );

(windows.h)


위의 함수로 사용할 수 있습니다. 다만 커맨드 창에서 실행시키면 뜨지 않고, 직접 실행시켜야 한다는 점.


이런 느낌~?



*

콘솔 내용을 지우는 함수와, 특정 커서로 이동하는 함수가 간혹 필요한 때가 있죠.

터보 씨 컴파일러에서는 clrscr() gotoxy()로 해당 기능이 제공되나,

ANSI C( 미국/국제표준 C )언어에는 포함되어 있지 않아 VC++ 컴파일러에서는 작동하지 않아요.

그 때문에 당황하신 분들도 적지 않을 것입니다.

이를 해결하기 위해선 이와 유사한 함수를 사용해야 겠지요 ㅋ_ㅋ

*



♧콘솔 화면 지우기


system( "cls" );

(stdlib.h) - VC++컴파일러에서는 stdlib.h를 인클루드 하지 않아도 컴파일은 됩니다.


이 함수는 커맨드 창의 화면에 띄워진 모든 내용을 날려버리는( 말 그대로 Clear Screen ) 기능인데요.

Win+R  cmd → cls 를 순서대로 입력하여 테스트해보면,

사실 DOS 커맨드 중 하나인 화면 지우기를 불러오는 것이라는 점을 알 수 있습니다.



♧콘솔 창 크기 조절하기


system( "mode con lines=행 수 cols=열 수" );


스크린 지우기와 같은 원리입니다. 커맨드 창에서 해당 내용을 입력하면 똑같이 적용되네요.

단 창 사이즈를 이렇게 지정하면, 직접 마우스로 끌어서 지정한 사이즈보다 크게 늘릴 수가 없습니다.



♧콘솔 글자 색 변경하기


배경과 글을 한번에 통째로 바꾸는 함수가 있고, 특정 부분의 글자색만 바꾸는 것도 있습니다.


system( "color 배경색글자색" );


이것도 익숙한 패턴이군요.ㅋㅋ 커맨드 창에서 color /?를 쳐보면 자세한 정보가 나오는데, 이를 참고하여 코딩해봅시다.



배경색을 옥색, 글자색을 연한 노랑색으로 바꾸면 이런 화면을 볼 수 있어요.

system( "color 3E" );



왜 민트색은 없을까?


단 이렇게 색을 변경하면 모든 내용이 한번에 바뀌고 마는군요.

특정 부분만 바꾸고 싶다면 다른 함수를 사용하는 게 좋겠죠?


SetConsoleTextAttribute( 출력 핸들, 글자 색 )

(windows.h)


window.h에 들은 함수는 대체로 핸들을 전달해주어야 합니다.

우린 콘솔을 이용하죠. 표준 출력 핸들을 전달합니다.


GetStdHandle( STD_OUTPUT_HANDLE )


위의 내용을 '출력 핸들' 부분에 넣고, 글자 색( 0~15 혹은 FOREGROUND_색 식으로 사용 )을 뒤에 넣어서 사용합니다.

글자 색 대신 배경색을 넣어 배경색을 바꾸는 것도 가능합니다.

색연필을 생각하시면 편한데요, 빨간 색을 내기 위해 빨간 색역필을 집는 동작을 했다고 생각하시길 바랍니다.

원래 색으로 돌리려면 예전 색의 색연필을 다시 꺼내야겠죠?


직접 돌려보았습니다.


for( i=0; i<=15; i++ )
{
    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), i );
    printf( "COLOR TESTING~\a\n" );



ㅎㅎㅎ



♧콘솔 특정 위치로 커서 이동하기


그리고 문제의 gotoxy()! 사실 이 함수를 사용하는 사람들의 대부분은 게임을 만들기 위해 사용할 것입니다.( 글쓴이도.. )

특정 라인과 칼럼에 커서를 이동시켜 글자를 띄울 수 있는 함수인데,

이 또한 ANSI C에서는 포함되어 있지 않아 특정 컴파일러에서만 작동한다는 단점을 갖고 있습니다.


SetConsoleCursorPosition( 출력 핸들, COORD타입의 포지션 정보 )

(windows.h)


windows.h에 들어있는 함수입니다... 얘는 단독으로 쓰기에는 좀 번거로워 함수를 거쳐 사용하는 게 일반적인 듯 하더군요.


http://flashcafe.org/programming_study/11986

위의 사이트에서 가져온 함수 예제.


 void gotoxy(int x, int y)
{
   COORD Pos = {x - 1, y - 1};

   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}


아까와 같이, 출력 핸들을 앞에 적고 위치를 뒤에 적습니다.



끝~?

+ Recent posts