|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1783 [복사]
강좌에 에이스님과 여운산님의 좋은 지적이 올라왔더군요.(감사합니다.)
바른 헤더파일이 아니라는 말씀이시지요.
강좌를 보신 분중 언어를 잘 아시는분은 첫 강좌를 보시고 느끼셨을 내용이라고 생각합니다.
제가 프로젝트를 만들때 헤더파일에서도 cpp와 같이 된다는 점과 클래스의 상속을 간단하게
보여 주기위해서 만든 프로그램으로
별도의 클래스나 헤더파일로 나누지 않고도 더 좋고 바른 프로그래밍을 할 수 있음을 공지해드립니다.
자아. 그럼 저번 강좌에 이어서 show헤더파일의 남은 부분을 구현해 보겠습니다.
/*커서지우는 부분*/
enum {HIDE, SHOW};
void show::CursorView(char show)
{
HANDLE hConsole; // 콘솔 핸들
CONSOLE_CURSOR_INFO ConsoleCursor; // 콘솔커서 정보 구조체
hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // 핸들을 구하고
ConsoleCursor.bVisible = show; // SHOW 보임 , HIDE 안보임
ConsoleCursor.dwSize = 1; // 커서 사이즈
SetConsoleCursorInfo(hConsole , &ConsoleCursor); // 설정
}
이 부분은 제가 프로그래밍을 하지 않고 여기 카페에서 복사를(발췌를)해온 내용입니다.
메인의 첫부분에서 CursorView(HIDE); 를하여 커서를 없애기 위한(물론 SHOW를 입력하면 보이게 됩니다.)
부분입니다.
enum에서 HIDE가 0번 SHOW가 1번이 되어 ConsoleCursor.bVisible = show; 에서 0즉 HIDE면 숨기고
SHOW즉 1이 되면 보이게 됩니다.
이번은 gotoxy부분 입니다.
아래의 주석처럼 화면의 수정이 필요할때마다 화면을 지우고 전부 재출력하면
화면 깜빡임을 불러오며 괜히 프로그램만 더 커지게 됩니다.
이를 막기위하여 해당 좌표를 받아서 위에 겹쳐쓰게끔 하여 줍니다.
/*위치이동 부분(화면 지우지 않고 출력위하여)*/
void show::gotoxy(int x, int y)
{
COORD Cur;
Cur.X=x;
Cur.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}
커서의 원하는 x,y좌표를 받아서 실제로 커서를 그x,y좌표로 옮겨줍니다.
이번 강좌의 마지막 부분이군요.
년,월,일을 받는 부분입니다. 이 부분 또한 제가 직접 짠 것은 아니고
퍼왔습니다..(퍼온 내용이 많군요.)
뭐..자기 방어의 말이지만(사실..) 요즘은 직접만드는 것처럼 만들어진 것을 잘 이용하는 것도 중효한 시대라지요..
void show::GetTime(struct tm *ptm) //년월일 받는 부분
{
time_t t;
time(&t);
struct tm *pt =localtime(&t);
memcpy(ptm, pt, sizeof(struct tm));
ptm->tm_year += 1900;
ptm->tm_mon += 1;
}
time.h파일이 꼭필요합니다.
memcpy는 메모리를 복사하는 부분으로써
memcpy(복사대상메모리, 복사원의 메모리 , 복사할길이);
로 정의가 됩니다.
이로써 너무나 간단하게 show.h가 끝났습니다.
추가적인 질문은 메일이나 쪽지, 싸이월드 통해서 연락을 주시면 해결해드리겠습니다.
이 강좌는 어느정도 c와 c++기초를 넘어오신분들을 위한 강좌입니다.
배열,구조체 등등의 기본적인 설명은 거의 배제 하겠습니다.
다음 강좌에 뵈어요~@
[출처] <샤오쓰 타로>3.show.h-2 (C언어를 배우자) |작성자 해커푸
|
Hit : 8986 Date : 2011/06/04 08:17
|