메뉴구성 및 글자색 변경 참고 소스 > 마이크로윈도우 강좌/팁

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

마이크로윈도우 강좌/팁

메뉴구성 및 글자색 변경 참고 소스

페이지 정보

작성자 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 8건 조회 21,443회 작성일 04-12-17 11:44

본문

menu.c [code=c] #define MWINCLUDECOLORS #include #include "nano-X.h" #define WIDTH 240 #define HEIGHT 320 typedef struct { int nitems; GR_COLOR titlecolor; struct { char *txt; GR_COLOR color; }items[11]; } list_type; const list_type sub_menu_1 = { //menu name 11, //title + menu count LTBLUE, //title color { {"Menu Title", BLACK}, {"1st Menu", MAGENTA}, {"2nd Menu", RED}, {"3rd Menu", GREEN}, {"4th Menu", BROWN}, {"5th Menu", BLACK}, {"6th Menu", RED}, {"7th Menu", LTGRAY}, {"8th Menu", YELLOW}, {"9th Menu", BLACK}, {"10th Menu", LTBLUE}, } }; list_type *ui_list; int ui_val=1; //current menu select value int i; int y_pos = 12; char tmp[3]; GR_WINDOW_ID w; GR_GC_ID gc; GR_EVENT event; void draw_menu(); void draw_select(); int main(int ac,char **av) { if (GrOpen() < 0) { fprintf (stderr, "Can't open graphics\n"); exit(1); } w = GrNewWindow(GR_ROOT_WINDOW_ID, 10, 10, WIDTH, HEIGHT, 0, BLACK, WHITE); gc = GrNewGC(); GrSetGCUseBackground(gc, GR_TRUE); GrSelectEvents(w, GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_KEY_DOWN ); GrMapWindow(w); ui_list= (list_type *)&sub_menu_1; for (;;) { GrGetNextEvent(&event); switch (event.type) { case GR_EVENT_TYPE_EXPOSURE: fprintf (stderr, "\n GR_EVENT_TYPE_EXPOSURE"); draw_menu(); draw_select(); break; case GR_EVENT_TYPE_CLOSE_REQ: fprintf (stderr, "\n GR_EVENT_TYPE_CLOSE_REQ"); GrClose(); exit(0); break; case GR_EVENT_TYPE_ERROR: fprintf (stderr, "\n GR_EVENT_TYPE_ERROR => %s",event.error.name); printf(nxErrorStrings[event.error.code],event.error.id); break; case GR_EVENT_TYPE_KEY_DOWN: { switch(event.keystroke.ch) { case MWKEY_UP: if(ui_val <= 1) ui_val = ui_list->nitems - 1; else ui_val--; break; case MWKEY_DOWN: if(ui_list->nitems - 1 > ui_val) ui_val ++; else ui_val = 1; break; } draw_menu(); draw_select(); } break; } } } void draw_menu() { y_pos = 12; GrSetGCUseBackground(gc, GR_FALSE); GrSetGCForeground(gc, WHITE); GrFillRect(w,gc,0,0,240,320); GrSetGCForeground(gc, ui_list->titlecolor); GrFillRect(w,gc,0,0,240,20); GrSetGCForeground(gc, WHITE); GrText(w, gc, 70, y_pos, ui_list->items[0].txt, -1, MWTF_DBCS_EUCKR); GrRect(w,gc,0,0,240,y_pos+8); GrSetGCForeground(gc, BLACK); y_pos+=22; for(i=1;initems;i++) { GrSetGCForeground(gc, ui_list->items[i].color); GrRect(w,gc,0,0,240,y_pos+8); sprintf(tmp, "%d.", i); GrText(w, gc, 10, y_pos, tmp , -1, MWTF_DBCS_EUCKR); GrText(w, gc, 35, y_pos, ui_list->items[i].txt, -1, MWTF_DBCS_EUCKR); y_pos += 22; } } void draw_select() { GrSetGCForeground(gc, LTGRAY); GrFillRect(w,gc,0,-2+22*ui_val,240,20); GrSetGCForeground(gc, WHITE); sprintf(tmp, "%d.", ui_val); GrText(w, gc, 10, 12+22*ui_val, tmp , -1, MWTF_DBCS_EUCKR); GrText(w, gc, 35, 12+22*ui_val, ui_list->items[ui_val].txt, -1, MWTF_DBCS_EUCKR); } [/code] 글자 색을 변경하기 위해서는 GrSetGCForeground() 를 쓰면 되는데 문제는 이게 모든것에 다 영향을 미친다는 겁니다. 해서 색깔 바꾸고 싶은 항목마다 이 함수를 써야 하더군요... 더 좋은 방법 아시면 알려주세요 up, down 키로 메뉴 이동할수 있으며 그냥 참고하시라고 만든겁니다

첨부파일

  • menu.c (0byte) 38회 다운로드 | DATE : 0000-00-00 00:00:00

댓글목록

냐옹이님의 댓글

no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

특별히 책은 본 기억이 없네요. 제가 못 찾은 걸 수도 있지만, 상용도 아니고 아직 완전한 버전도 아니라서(v0.9) 기능이 100% 구현되어 있지 않더군요.
하시다 보면 microwindows를 수정해야 되는 경우도 종종 있을 겁니다.
그래서 Qt같은 것에 비해 쓰시는 분이 적은게 아마도 자료가 별로 없는 이유일 겁니다.
그래도 그 library 사이즈에 비해 기능은 상당히 강력합니다.(물론 Qt가 훨씬 더 강력합니다.-_-;) 수정도 편하구요.
플랫폼에 따라 Microwindows가 더 적절한 경우도 있을테니까 계속 공부해 보시길 바랍니다...^^

냐옹이님의 댓글

no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

GC란 개념은 windows에도 있습니다. 그걸 참고하시면 될 것 같네요. Graphic Context입니다.
그 안에 Graphic에 관한 설정, 속성 등을 넣어 놓은 것으로 보시면 됩니다. font에 관한 사항도 들어갑니다.
GrSetGCForeground()를 통해 GC에 "foreground색은 무슨 색이다" 이런식으로 정의한 것입니다.
따라서 GrText(), GrRect()등 그리는 함수에서는 이 GC를 사용해서 색을 알아내는데, 여기서 그릴 때 foreground색을 이용하므로 위에서 정해준 색으로 그리게 되는 겁니다.
그래서 매번 다른 색으로 그리고 싶을 때 GrSetGCForeground()를 통해서 색을 새로 정해주어야 하는 것입니다.
GrText()나 GrRect() 같은 함수에 색을 넣는 부분은 없고, gc가 인자로 들어간다는 것을 보면 생각하실 수 있습겁니다.
관련된 항목끼리 같은 GC로 관리하는 것도 하나의 방법이죠. 저는 귀찮아서 매번 색만 바꿉니다...-_-;

장진혁님의 댓글

no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

아직 마이크로윈도우에 대한 개념이 없어서 삽질을 좀더 해봐야 겠습니다 ^^
gc 란것도 아직 이해를 못해서요...
마이크로윈도우에 대해 쓴 책같은건 없나요??
한글로 된것이요...
ㅜ.ㅜ

냐옹이님의 댓글

no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

GC를 필요한 항목마다 만드시면 됩니다.
같은 항목끼리는 같은 GC를 공유하시도록 하고, 다른 항목끼리는 다른 GC를 쓰시도록 하면 GrSetGCForeground()를 쓰는 횟수를 줄일 수 있을겁니다.

Total 17건 1 페이지
마이크로윈도우 강좌/팁 목록
번호 제목 글쓴이 조회 날짜
17 no_profile 토마토 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19301 08-28
16 no_profile 토마토 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 21641 09-01
15 조규봉 이름으로 검색 24352 01-24
14 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 22159 01-02
13 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 25101 12-28
12 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19818 08-24
11 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16144 08-11
10 no_profile 냐옹이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15745 08-08
9 no_profile 최고관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14771 06-16
8 채영훈 메일보내기 이름으로 검색 21105 04-07
열람중 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 21444 12-17
6 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15036 12-13
5 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16472 12-13
4 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14507 12-13
3 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 13785 12-13
2 no_profile 장진혁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17975 12-13
1 no_profile 김용오 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15934 12-16
게시물 검색

  • 게시물이 없습니다.

회원로그인

설문조사

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

접속자집계

오늘
752
어제
1,141
최대
3,878
전체
4,198,502

Copyright © korone.net. All rights reserved.