Subject:
[ruby-ffi] Re: unable to find method?
From:
rogerdpack
Date:
12/18/09 4:19 PM
To:
ruby-ffi


> 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