class Opine::Native::Window::Window
Constants
- CLASS_NAME
- WINDOWS
Attributes
widget[RW]
Public Class Methods
new(widget)
click to toggle source
# File lib/opine/widgets/window_win.rb, line 13 def initialize(widget) #(title) @widget = widget @white = GetStockObject(WHITE_BRUSH) @wc = WNDCLASSEX.new @wc[:lpfnWndProc] = method(:window_proc) @wc[:hInstance] = Stench::HINST @wc[:hIcon] = LoadImage(NULL, P(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_SHARED) @wc[:hCursor] = LoadImage(NULL, P(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_SHARED) @wc[:hbrBackground] = @white @wc[:lpszClassName] = FFI::MemoryPointer.from_string("#{CLASS_NAME}:#{__id__}") @wc[:hIconSm] = LoadImage(NULL, P(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_SHARED); @hwnd = CreateWindowEx( WS_EX_LEFT, P(@wc.atom), title, WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, width, height, NULL, NULL, Stench::HINST, nil) raise "CreateWindowEx Error" if @hwnd == 0 WINDOWS << self end
Public Instance Methods
P(a)
click to toggle source
# File lib/opine/widgets/window_win.rb, line 11 def P(a); ::FFI::Pointer.new(a); end
close()
click to toggle source
# File lib/opine/widgets/window_win.rb, line 52 def close DestroyWindow(@hwnd) if hwnd end
hwnd()
click to toggle source
# File lib/opine/widgets/window_win.rb, line 48 def hwnd @hwnd ? (IsWindow(@hwnd).nonzero? ? @hwnd : (@hwnd = nil)) : nil end
method_missing(method,*args)
click to toggle source
# File lib/opine/widgets/window_win.rb, line 56 def method_missing method,*args widget.send(method,*args) end
window_proc(hwnd, umsg, wparam, lparam)
click to toggle source
# File lib/opine/widgets/window_win.rb, line 35 def window_proc(hwnd, umsg, wparam, lparam) case umsg when WM_DESTROY @hwnd = nil WINDOWS.delete(self) PostQuitMessage(0) if WINDOWS.empty? return 0 else return DefWindowProc(hwnd, umsg, wparam, lparam) end 0 end