왕초보를 위한 Nano-X 1편 (helloworld.c 분석하기) > 마이크로윈도우 강좌/팁

본문 바로가기
사이트 내 전체검색

마이크로윈도우 강좌/팁

왕초보를 위한 Nano-X 1편 (helloworld.c 분석하기)

페이지 정보

작성자 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 15,664회 작성일 05-08-08 16:41

본문

정말 왕초보를 위한 설명입니다. 프로그램에 조금이라도 자신이 있으신 분은, 아니 아시는 분은 !!!절대로!!! 보실 필요가 없습니다. 보시다가 짜증나셔도 책임못집니다. -_-; 들어가기에 앞서 Microwindows (Nano-X Window System의 이전명칭)은 포팅된 상태라고 가정합니다. 다른분들이 앞에 써 놓으신 것도 있고, 어려우니까 넘어갑니다... 전 Microwindows 대신 nano-X라고 부를껍니다.... 소스는 장진혁님이 올려놓으신 hello.c를 보겠습니다. (장진혁님 감사합니다.) 원래 helloworld.c 코드를 짜야하나, 제가 귀찮고 이미 좋은 소스가 있길래...^^; 일반 C프로그램과 같은 방식으로 코딩하시고, 보시면 됩니다. [code=c] // nano-X에서 자주 사용하는 16가지 색에 대해 정의해 놓은 겁니다. // 그걸 사용하겠다고 define한 것입니다. 밑에 나오는 WHITE, BLUE가 그 색입니다. #define MWINCLUDECOLORS // 이건 C에서도 많이 쓰셨을 테니 패스... #include // nano-X에서 필수로 써야하는 구문이죠. Gr~로 시작하는 함수들이 여기 들어있습니다. // nano-X에서 프로그래머가 사용할 수 있도록 제공하는 함수들은 Gr로 시작합니다. #include "nano-X.h" int main(int ac,char **av) { // nano-X에서 사용할 window를 선언했습니다. // 여기서 window는 MS Windows의 window와 비슷하게 생각하시면 됩니다.(같던가?) GR_WINDOW_ID w; // GC는 Graphic Context입니다. Graphic에 관련된 내용이 저장됩니다. GR_GC_ID gc; // 발생할 event를 저장할 곳입니다. event란 어떤 사건이 발생하는 것을 말합니다. // 예를 들면 마우스 왼쪽버튼이 눌렸다. 사용자가 프로그램 종료를 눌렀다 등등... GR_EVENT event; // nano-X를 실행하기에 앞서 초기화 해주는 부분입니다. // Keyboard, mouse, display등 다 초기화 합니다. 이거 실패하면 당연히 아무것도 안됩니다. if (GrOpen() < 0) { fprintf (stderr, "Can't open graphics\n"); exit(1); } // 새로운 윈도우를 생성합니다. 인자로 GR_ROOT_WINDOW_ID는 지금 생성하는 w란 // 윈도우의 부모는 최상위 윈도우라는 것을 말합니다. 이거 말곤 부모 윈도우가 없다는 뜻이죠. // child window를 만들고 싶으시면 여기다가 다른 걸 적어주시면 되겠죠. // 뒤에 나오는 숫자 네 개는 윈도우 x,y,w,h입니다. // 숫자 4는 window의 border 크기입니다. 테두리 두께입니다. // WHITE는 window의 바탕색입니다. // BLUE는 window의 border, 테두리 색입니다. w = GrNewWindow(GR_ROOT_WINDOW_ID, 20, 20, 100, 60, 4, WHITE, BLUE); // 새로운 Graphic Context를 생성합니다. gc = GrNewGC(); // GC의 전경색(?)을 검정색으로 설정합니다. 쉽게 붓 색깔을 검정색으로 했다고 생각하세요. GrSetGCForeground(gc, BLACK); // GC의 Background를 사용할지 설정합니다. 안사용하는 걸로 했네요. 이건 넘어갑니다. GrSetGCUseBackground(gc, GR_FALSE); // 이벤트 중에서 EXPOSURE만 이 프로그램에서 허용하도록 합니다. GrSelectEvents(w, GR_EVENT_MASK_EXPOSURE); // window를 show합니다. 눈에 나타나도록 하죠. // 아마 여기서 EXPOSURE 이벤트를 발생시킬 겁니다. GrMapWindow(w); // 무한루프네요...-_-; // 이벤트가 한 번밖에 발생하지 않았으니 한번 출력하고 계속 서 있겠네요. for (;;) { // 발생한 이벤트를 잡아냅니다. 위에서 EXPOSURE이벤트를 발생시켰으니 여기서 잡겠죠. GrGetNextEvent(&event); // 발생한 이벤트의 종류에 따라 분류합니다. switch (event.type) { // 여기서 이벤트 별로 다른 처리를 해 줍니다. case GR_EVENT_TYPE_EXPOSURE: // 단순히 텍스트만 출력하네요. Hello World // GrText는 텍스트를 출력하는 함수인데, 인자로 출력할 윈도우(w)와 // 텍스트를 그릴 방식(gc), 좌표(10,30), 출력될 내용(Hello World), // 출력될 내용의 길이(-1), 내용의 인코딩방식(GR_TFASCII)를 받습니다. // 알아둘 것은 ASCII인 경우는 길이를 -1로 넣으면 됩니다. 내부에서 길이를 구합니다. // 나중에 유니코드를 사용하실 때는 인코딩방식을 다르게 넣어주면 되겠죠. // 아까 위에서 전경색을 검정색으로 했으니 검정색 Hello World가 출력되겠네요. GrText(w, gc, 10, 30, "Hello World", -1, GR_TFASCII); break; } } } [/code] 이상 helloworld.c 분석을 마치겠습니다. 여기까지 허접한 글을 읽어주셔서 감사합니다....^^;

댓글목록

등록된 댓글이 없습니다.

Total 17건 1 페이지
마이크로윈도우 강좌/팁 목록
번호 제목 글쓴이 조회 날짜
17 no_profile 토마토 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19237 08-28
16 no_profile 토마토 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 21563 09-01
15 조규봉 이름으로 검색 24277 01-24
14 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 22055 01-02
13 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 24988 12-28
12 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19744 08-24
11 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16058 08-11
열람중 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15665 08-08
9 no_profile 최고관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14693 06-16
8 채영훈 메일보내기 이름으로 검색 21034 04-07
7 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 21370 12-17
6 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14972 12-13
5 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16421 12-13
4 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14448 12-13
3 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 13726 12-13
2 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17929 12-13
1 no_profile 김용오 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15864 12-16
게시물 검색

  • 게시물이 없습니다.

회원로그인

설문조사

새로운 홈페이지에 대한 평가

접속자집계

오늘
107
어제
527
최대
3,878
전체
4,096,616

Copyright © korone.net. All rights reserved.