func (wb *WindowBase) setAndClearStyleBits(set, clear uint32) error { style := uint32(win.GetWindowLong(wb.hWnd, win.GWL_STYLE)) if style == 0 { return lastError("GetWindowLong") } if newStyle := style&^clear | set; newStyle != style { win.SetLastError(0) if win.SetWindowLong(wb.hWnd, win.GWL_STYLE, int32(newStyle)) == 0 { return lastError("SetWindowLong") } } return nil }
func (fb *FormBase) SetOwner(value Form) error { fb.owner = value var ownerHWnd win.HWND if value != nil { ownerHWnd = value.Handle() } win.SetLastError(0) if 0 == win.SetWindowLong( fb.hWnd, win.GWL_HWNDPARENT, int32(ownerHWnd)) && win.GetLastError() != 0 { return lastError("SetWindowLong") } return nil }
// SetColumnsSizable sets if the user can change column widths by dragging // dividers in the header. func (tv *TableView) SetColumnsSizable(b bool) error { headerHWnd := win.HWND(tv.SendMessage(win.LVM_GETHEADER, 0, 0)) style := win.GetWindowLong(headerHWnd, win.GWL_STYLE) if b { style &^= win.HDS_NOSIZING } else { style |= win.HDS_NOSIZING } if 0 == win.SetWindowLong(headerHWnd, win.GWL_STYLE, style) { return lastError("SetWindowLong(GWL_STYLE)") } tv.columnsSizableChangedPublisher.Publish() return nil }
func (tw *TabWidget) removePage(page *TabPage) (err error) { page.SetVisible(false) style := uint32(win.GetWindowLong(page.hWnd, win.GWL_STYLE)) if style == 0 { return lastError("GetWindowLong") } style &^= win.WS_CHILD style |= win.WS_POPUP win.SetLastError(0) if win.SetWindowLong(page.hWnd, win.GWL_STYLE, int32(style)) == 0 { return lastError("SetWindowLong") } page.tabWidget = nil return page.SetParent(nil) }
func (tw *TabWidget) onInsertedPage(index int, page *TabPage) (err error) { item := tw.tcitemFromPage(page) if idx := int(win.SendMessage(tw.hWndTab, win.TCM_INSERTITEM, uintptr(index), uintptr(unsafe.Pointer(item)))); idx == -1 { return newError("SendMessage(TCM_INSERTITEM) failed") } page.SetVisible(false) style := uint32(win.GetWindowLong(page.hWnd, win.GWL_STYLE)) if style == 0 { return lastError("GetWindowLong") } style |= win.WS_CHILD style &^= win.WS_POPUP win.SetLastError(0) if win.SetWindowLong(page.hWnd, win.GWL_STYLE, int32(style)) == 0 { return lastError("SetWindowLong") } if win.SetParent(page.hWnd, tw.hWnd) == 0 { return lastError("SetParent") } if tw.pages.Len() == 1 { page.SetVisible(true) tw.SetCurrentIndex(0) } tw.resizePages() page.tabWidget = tw page.applyFont(tw.Font()) return }
// SetParent sets the parent of the WidgetBase and adds the WidgetBase to the // Children list of the Container. func (wb *WidgetBase) SetParent(parent Container) (err error) { if parent == wb.parent { return nil } style := uint32(win.GetWindowLong(wb.hWnd, win.GWL_STYLE)) if style == 0 { return lastError("GetWindowLong") } if parent == nil { style &^= win.WS_CHILD style |= win.WS_POPUP if win.SetParent(wb.hWnd, 0) == 0 { return lastError("SetParent") } win.SetLastError(0) if win.SetWindowLong(wb.hWnd, win.GWL_STYLE, int32(style)) == 0 { return lastError("SetWindowLong") } } else { style |= win.WS_CHILD style &^= win.WS_POPUP win.SetLastError(0) if win.SetWindowLong(wb.hWnd, win.GWL_STYLE, int32(style)) == 0 { return lastError("SetWindowLong") } if win.SetParent(wb.hWnd, parent.Handle()) == 0 { return lastError("SetParent") } } b := wb.Bounds() if !win.SetWindowPos( wb.hWnd, win.HWND_BOTTOM, int32(b.X), int32(b.Y), int32(b.Width), int32(b.Height), win.SWP_FRAMECHANGED) { return lastError("SetWindowPos") } oldParent := wb.parent wb.parent = parent var oldChildren, newChildren *WidgetList if oldParent != nil { oldChildren = oldParent.Children() } if parent != nil { newChildren = parent.Children() } if newChildren == oldChildren { return nil } widget := wb.window.(Widget) if oldChildren != nil { oldChildren.Remove(widget) } if newChildren != nil && !newChildren.containsHandle(wb.hWnd) { newChildren.Add(widget) } return nil }