Subject: Re: [ruby-ffi] Re: unable to find method? |
From: Wayne Meissner |
Date: 12/19/09 6:34 AM |
To: ruby-ffi@googlegroups.com |
Is MessageBoxA a WINAPI function? That might need: ffi_convention :stdcall before the attach_function call 2009/12/19 rogerdpack <rogerpack2005@gmail.com>:
;)BTW, where are you guys with coming up with more interesting windows examples (64-bit, pointer-to-pointer return types, etc)!?Got stuck with this example segfaulting. require 'ffi' # button constants BUTTONS_OK = 0 BUTTONS_OKCANCEL = 1 BUTTONS_ABORTRETRYIGNORE = 2 BUTTONS_YESNO = 4 # return code constants CLICKED_OK = 1 CLICKED_CANCEL = 2 CLICKED_ABORT = 3 CLICKED_RETRY = 4 CLICKED_IGNORE = 5 CLICKED_YES = 6 CLICKED_NO = 7 extend FFI::Library ffi_lib 'user32' attach_function :msgbox, 'MessageBoxA', [:pointer, :string, :string, :uint], :int def message_box(txt, title=APP_TITLE, buttons=BUTTONS_OK) ffi_lib 'user32' r = msgbox(nil, txt, title, buttons) return r end response = message_box("Are you sure you want to proceed?", "Proceed?", BUTTONS_YESNO) if response == CLICKED_YES # insert your code here end -r