summaryrefslogtreecommitdiff
path: root/redo/layout_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'redo/layout_windows.go')
-rw-r--r--redo/layout_windows.go33
1 files changed, 16 insertions, 17 deletions
diff --git a/redo/layout_windows.go b/redo/layout_windows.go
index 7d55a58..3010be9 100644
--- a/redo/layout_windows.go
+++ b/redo/layout_windows.go
@@ -20,15 +20,23 @@ type layout struct {
*sizer
}
+func makeContainerWindowClass() error {
+ var errmsg *C.char
+
+ err := C.makeContainerWindowClass(&errmsg)
+ if err != 0 || errmsg != nil {
+ return fmt.Errorf("%s: %v", C.GoString(errmsg), syscall.Errno(err))
+ }
+ return nil
+}
+
func newLayout(title string, width int, height int, child C.BOOL, control Control) *layout {
l := &layout{
- // hwnd set in WM_CREATE handler
- closing: newEvent(),
sizer: new(sizer),
}
- hwnd := C.newWindow(toUTF16(title), C.int(width), C.int(height), child, unsafe.Pointer(l))
+ hwnd := C.newContainer(unsafe.Pointer(l))
if hwnd != l.hwnd {
- panic(fmt.Errorf("inconsistency: hwnd returned by CreateWindowEx() (%p) and hwnd stored in window/layout (%p) differ", hwnd, l.hwnd))
+ panic(fmt.Errorf("inconsistency: hwnd returned by CreateWindowEx() (%p) and hwnd stored in container (%p) differ", hwnd, l.hwnd))
}
l.child = control
l.child.setParent(&controlParent{l.hwnd})
@@ -39,24 +47,15 @@ func (l *layout) setParent(p *controlParent) {
C.controlSetParent(l.hwnd, p.hwnd)
}
-//export storeWindowHWND
-func storeWindowHWND(data unsafe.Pointer, hwnd C.HWND) {
+//export storeContainerHWND
+func storeContainerHWND(data unsafe.Pointer, hwnd C.HWND) {
l := (*layout)(data)
l.hwnd = hwnd
}
-//export windowResize
-func windowResize(data unsafe.Pointer, r *C.RECT) {
+//export containerResize
+func containerResize(data unsafe.Pointer, r *C.RECT) {
l := (*layout)(data)
// the origin of the window's content area is always (0, 0), but let's use the values from the RECT just to be safe
l.resize(int(r.left), int(r.top), int(r.right - r.left), int(r.bottom - r.top))
}
-
-//export windowClosing
-func windowClosing(data unsafe.Pointer) {
- l := (*layout)(data)
- close := l.closing.fire()
- if close {
- C.windowClose(l.hwnd)
- }
-}