画面が出た次は
Scheme で GUI ってことは、次は図形言語かな……やっぱ。なんかアレだけど。
こんな感じで、イベントを取得しました。
(define-module cwsdl (use c-wrapper) (c-load "SDL/SDL.h" :import '(SDL_Init SDL_SetVideoMode SDL_PollEvent SDL_Quit SDL_Wait SDL_Delay SDL_INIT_VIDEO SDL_ANYFORMAT SDL_MOUSEMOTION SDL_MOUSEBUTTONDOWN SDL_QUIT SDL_KEYDOWN SDL_KEYUP) :compiled-lib "sdllib") (export-all)) (provide "cwsdl")
(use c-wrapper) (use cwsdl) (define *screen* #f) (define (current-screen) *screen*) (define (mainloop) (let ((event (make <SDL_Event>))) (call/cc (lambda (end) (let loop () (until (= (SDL_PollEvent (ptr event)) 0) (let ((type (ref event 'type))) (cond ((= type SDL_MOUSEBUTTONDOWN) (print "SDL_MOUSEBUTTONDOWN")) ((= type SDL_KEYDOWN) (print "SDL_KEYDOWN")) ((= type SDL_QUIT) (end))))) (loop))))) ) (define (main args) (SDL_Init SDL_INIT_VIDEO) (set! *screen* (SDL_SetVideoMode 640 480 32 SDL_ANYFORMAT)) (mainloop) (SDL_Quit) 0)