커뮤니티 | 큐티/임베디드/큐토피아 | PODO | SDL | 마이크로윈도우 | 리눅스프로그래밍 | 기타 | 포인트순위 | 최근게시물최근게시물 RSS  
korone.net에 다루었으면 하는것은요?
 
 
 
 
 
150
1,062
3,878
3,768,823
  현재접속자 : 45 (회원 0)






배너 신청 문의

 
작성일 : 04-12-13 11:45
Keyboard Event 입력 처리 소스
 글쓴이 : 장진혁
조회 : 15,973  
   key.c (0byte) [37] DATE : 0000-00-00 00:00:00

key.c

#define MWINCLUDECOLORS
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "nano-X.h"
#include <signal.h>

#define WIDTH    640
#define HEIGHT    480

GR_WINDOW_ID     w;
GR_GC_ID    gc;
GR_EVENT     event;
GR_WM_PROPERTIES props;
GR_EVENT_KEYSTROKE *kev;
int x_pos=10, y_pos=10;
void scrn_update();

int main(int ac,char **av)
{
    if (GrOpen() < 0) {
        printf("Can't open graphics\n");
        exit(1);
    }

    GrSetErrorHandler(NULL);

    w = GrNewWindow(GR_ROOT_WINDOW_ID, 10, 10, WIDTH, HEIGHT,
        0, WHITE, BLUE);

    gc = GrNewGC();

    GrSelectEvents(w,
        GR_EVENT_MASK_EXPOSURE |
        GR_EVENT_MASK_CLOSE_REQ |
        GR_EVENT_MASK_KEY_DOWN
        );
   
    GrMapWindow(w);

    for (;;)
    {
        GrGetNextEvent(&event);

        switch (event.type)
        {
            case GR_EVENT_TYPE_EXPOSURE:
                fprintf (stderr, "\n GR_EVENT_TYPE_EXPOSURE");
                scrn_update();
                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:
                kev = (GR_EVENT_KEYSTROKE *)&event;

                if(event.keystroke.ch == MWKEY_RIGHT)
                {
                    x_pos += 10;
                }
                else if(event.keystroke.ch == MWKEY_LEFT)
                {
                    x_pos -= 10;
                }
                else if(event.keystroke.ch == MWKEY_UP)
                {
                    y_pos -= 10;
                }
                else if(event.keystroke.ch == MWKEY_DOWN)
                {
                    y_pos += 10;
                }
                GrClearWindow(w,0);
                scrn_update();
                break;
        }
    }

    GrClose();
    return 0;
}


void scrn_update()
{
    GrText(w, gc, x_pos, y_pos, "Key Event~!", -1, GR_TFASCII);
}

컴파일은 gcc key.c -o key -lnano-X -I/usr/include/micromw
로 하시면 됩니다
-lnano-X 의 -l 은 소문자로 L 입니다
뒤의 -I/usr/... 의 -I 는 대문자 i 입니다

실행하실때
nano-X & sleep 1; /microwindows-0.90/src/bin/nanowm & sleep1
이렇게 nano-X 서버 를 띄운후에 윈도우메니저를 같이 띄워준 상태에서
새 창을 열어서 key를 실행하시면 편합니다
윈도우 메니져가 있으면 key를 종료시켜도 nano-X 서버가 종료되지
않으므로 테스트시 유용합니다

날림으로 만든 소스라 엉성합니다.. 이해하세요 ^^;

[이 게시물은 korone님에 의해 2004-12-16 18:34:01 마이크로 윈도우즈(으)로 부터 이동됨]



 
 

Total 17
번호 제   목 글쓴이 날짜 조회
17 timer 사용하는 방법 입니다.. 토마토 08-28 18432
16 마이크로윈도우 nano-X api 간단 [tip] 토마토 09-01 20735
15 nano-x에서의 이벤트 처리 (1) 조규봉 01-24 23520
14 왕초보를 위한 Nano-X 5편 (freetype font) 냐옹이 01-02 21320
13 왕초보를 위한 Nano-X 4편 (한글 기본 폰트) 냐옹이 12-28 24129
12 왕초보를 위한 Nano-X 3편 (window 생성) 냐옹이 08-24 19257
11 왕초보를 위한 Nano-X 2편 (이미지 관련 함수 분… 냐옹이 08-11 15539
10 왕초보를 위한 Nano-X 1편 (helloworld.c 분석하기) 냐옹이 08-08 15094
9 microwindows 한글 TrueType fonts 출력하기 최고관… 06-16 14185
8 Cygwin 에서 Microwindows 컴파일 하기 (2) 채영훈 04-07 20485
7 메뉴구성 및 글자색 변경 참고 소스 (8) 장진혁 12-17 20817
6 한글 출력 방법 및 예제 소스 (2) 장진혁 12-13 14474
5 Keyboard Event 입력 처리 소스 장진혁 12-13 15974
4 이미지 출력 소스 장진혁 12-13 14032
3 Hello World 소스 장진혁 12-13 13318
2 Microwindows 0.90 설치 (1) 장진혁 12-13 17379
1 microwindows 한글 TrueType fonts 출력하기 (5) 김용오 12-16 15271


About korone.net | Copyright 2003 korone.net. All rights reserved.