win32: play-sound

This commit is contained in:
Matthew Flatt 2010-10-15 09:50:02 -06:00
parent 46ae5ff086
commit 3d73a0bd78
3 changed files with 24 additions and 1 deletions

View File

@ -15,6 +15,7 @@
get-panel-background) get-panel-background)
"filedialog.rkt" "filedialog.rkt"
"colordialog.rkt" "colordialog.rkt"
"sound.rkt"
racket/draw) racket/draw)
(provide (provide
@ -58,7 +59,6 @@
make-gl-bitmap make-gl-bitmap
check-for-break) check-for-break)
(define-unimplemented play-sound)
(define-unimplemented find-graphical-system-path) (define-unimplemented find-graphical-system-path)
(define-unimplemented location->window) (define-unimplemented location->window)
(define-unimplemented send-event) (define-unimplemented send-event)

View File

@ -0,0 +1,20 @@
#lang racket/base
(require ffi/unsafe
racket/class
"utils.rkt"
"types.rkt"
"const.rkt")
(provide play-sound)
(define-winmm PlaySoundW (_wfun _string/utf-16 _pointer _DWORD -> _BOOL))
(define SND_SYNC #x0000)
(define SND_ASYNC #x0001)
(define (play-sound path async?)
(let ([path (simplify-path path #f)])
;; FIXME: sync sound play blocks all Racket threads
(PlaySoundW (if (path? path) (path->string path) path)
#f
(if async? SND_ASYNC SND_SYNC))))

View File

@ -12,6 +12,7 @@
define-comdlg32 define-comdlg32
define-shell32 define-shell32
define-uxtheme define-uxtheme
define-winmm
define-mz define-mz
failed failed
@ -49,6 +50,7 @@
(define comdlg32-lib (ffi-lib "comdlg32.dll")) (define comdlg32-lib (ffi-lib "comdlg32.dll"))
(define shell32-lib (ffi-lib "shell32.dll")) (define shell32-lib (ffi-lib "shell32.dll"))
(define uxtheme-lib (ffi-lib "uxtheme.dll")) (define uxtheme-lib (ffi-lib "uxtheme.dll"))
(define winmm-lib (ffi-lib "winmm.dll"))
(define-ffi-definer define-gdi32 gdi32-lib) (define-ffi-definer define-gdi32 gdi32-lib)
(define-ffi-definer define-user32 user32-lib) (define-ffi-definer define-user32 user32-lib)
@ -57,6 +59,7 @@
(define-ffi-definer define-comdlg32 comdlg32-lib) (define-ffi-definer define-comdlg32 comdlg32-lib)
(define-ffi-definer define-shell32 shell32-lib) (define-ffi-definer define-shell32 shell32-lib)
(define-ffi-definer define-uxtheme uxtheme-lib) (define-ffi-definer define-uxtheme uxtheme-lib)
(define-ffi-definer define-winmm winmm-lib)
(define-kernel32 GetLastError (_wfun -> _DWORD)) (define-kernel32 GetLastError (_wfun -> _DWORD))