// SetFocus sets the keyboard input focus to the NumberEdit. func (ne *NumberEdit) SetFocus() error { if win.SetFocus(ne.edit.hWnd) == 0 { return lastError("SetFocus") } return nil }
// SetFocus sets the keyboard input focus to the *WindowBase. func (wb *WindowBase) SetFocus() error { if win.SetFocus(wb.hWnd) == 0 { return lastError("SetFocus") } return nil }
func (fb *FormBase) WndProc(hwnd win.HWND, msg uint32, wParam, lParam uintptr) uintptr { switch msg { case win.WM_ACTIVATE: switch win.LOWORD(uint32(wParam)) { case win.WA_ACTIVE, win.WA_CLICKACTIVE: if fb.prevFocusHWnd != 0 { win.SetFocus(fb.prevFocusHWnd) } case win.WA_INACTIVE: fb.prevFocusHWnd = win.GetFocus() } return 0 case win.WM_CLOSE: fb.closeReason = CloseReasonUnknown var canceled bool fb.closingPublisher.Publish(&canceled, fb.closeReason) if !canceled { if fb.owner != nil { fb.owner.SetEnabled(true) if !win.SetWindowPos(fb.owner.Handle(), win.HWND_NOTOPMOST, 0, 0, 0, 0, win.SWP_NOMOVE|win.SWP_NOSIZE|win.SWP_SHOWWINDOW) { lastError("SetWindowPos") } } fb.close() } return 0 case win.WM_COMMAND: return fb.clientComposite.WndProc(hwnd, msg, wParam, lParam) case win.WM_GETMINMAXINFO: mmi := (*win.MINMAXINFO)(unsafe.Pointer(lParam)) layout := fb.clientComposite.Layout() var min Size if layout != nil { min = fb.sizeFromClientSize(layout.MinSize()) } mmi.PtMinTrackSize = win.POINT{ int32(maxi(min.Width, fb.minSize.Width)), int32(maxi(min.Height, fb.minSize.Height)), } return 0 case win.WM_NOTIFY: return fb.clientComposite.WndProc(hwnd, msg, wParam, lParam) case win.WM_SETTEXT: fb.titleChangedPublisher.Publish() case win.WM_SIZE, win.WM_SIZING: fb.clientComposite.SetBounds(fb.window.ClientBounds()) case win.WM_SYSCOMMAND: if wParam == win.SC_CLOSE { fb.closeReason = CloseReasonUser } case taskbarButtonCreatedMsgId: version := win.GetVersion() major := version & 0xFF minor := version & 0xFF00 >> 8 // Check that the OS is Win 7 or later (Win 7 is v6.1). if major > 6 || (major == 6 && minor > 0) { fb.progressIndicator, _ = newTaskbarList3(fb.hWnd) } } return fb.WindowBase.WndProc(hwnd, msg, wParam, lParam) }