lib/win/gui/dialog.rb in win-0.1.0 vs lib/win/gui/dialog.rb in win-0.1.2

- old
+ new

@@ -1,14 +1,48 @@ require 'win/library' +require 'win/gui/window' module Win module Gui # Contains constants and Win32API functions related to dialog manipulation # module Dialog include Win::Library + include Win::Gui::Window - function 'GetDlgItem', 'LL', 'L' + # The GetDlgItem function retrieves a handle to a control in the specified dialog box. + # + # [*Syntax*] HWND GetDlgItem( HWND hDlg, int nIDDlgItem ); + # + # hDlg:: [in] Handle to the dialog box that contains the control. + # nIDDlgItem:: [in] Specifies the identifier of the control to be retrieved. + # *Returns*:: If the function succeeds, the return value is the window handle of the specified control. + # If the function fails, the return value is NULL, indicating an invalid dialog box handle + # or a nonexistent control. To get extended error information, call GetLastError. + # --- + # *Remarks*: + # You can use the GetDlgItem function with any parent-child window pair, not just with dialog boxes. + # As long as the hDlg parameter specifies a parent window and the child window has a unique identifier + # (as specified by the hMenu parameter in the CreateWindow or CreateWindowEx function that created the + # child window), GetDlgItem returns a valid handle to the child window. + # + # :call-seq: + # control_handle = [get_]dlg_item( dialog_handle, id ) + # + function :GetDlgItem, [:ulong, :int], :ulong + + # Convenience methods: + + # finds top-level dialog window by title and yields found dialog window to block if given + def dialog(title, seconds=3) + d = begin + win = Window::Window.top_level(title, seconds) + yield(win) ? win : nil + rescue TimeoutError + end + d.wait_for_close if d + return d + end end end end