I wanted to use al:show-native-message-box

which is equivalent of

(defcfun ("al_show_native_message_box" show-native-message-box) :int
  (display :pointer) (title :string) (heading :string)
  (text :string) (buttons :string) (flags messagebox-flags))

But when i wrote:

(in-package #:al-tut) (defvar *created-display*) (defun main () (unless (al:init) (al:show-native-message-box (c:null-pointer) (c:null-pointer) (c:null-pointer) "allegro init failed." (c:null-pointer) (c:null-pointer)) 'AL-INIT-FAILED) (setf *created-display* (al:create-display 800 600)) (unless *created-display* (al:show-native-message-box (c:null-pointer) (c:null-pointer) (c:null-pointer) "window init failed. " (c:null-pointer) (c:null-pointer)) 'AL-CREATE-DISPLAY-FAILED) (c:with-foreign-string (text "MessageBox Title") (al:show-native-message-box *created-display* text (c:foreign-enum-value 'al::messagebox-flags :error) (c:foreign-enum-value 'al::filechooser-modes :show-hidden) (c:null-pointer) (c:null-pointer))) (al:destroy-display *created-display*))

where

(defcenum messagebox-flags
  (:warn 1)
  (:error 2)
  (:ok-cancel 4)
  (:yes-no 8)
  (:question 16))

in the source code.

But SBCL gives me the error:

2 is not a Lisp string or pointer.
   [Condition of type SIMPLE-ERROR]

Need help. Thanks