summaryrefslogtreecommitdiff
path: root/control_windows.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-30 23:02:02 -0400
committerPietro Gagliardi <[email protected]>2014-08-30 23:02:02 -0400
commit77bf566ebbcb62acd4d08d905d9542d6ff9b6b80 (patch)
treeeeb8e72bc3bf57f5be7f0c0af4319189ac6de838 /control_windows.go
parent155899c65ed32245e2ccad4197a10c77017d835b (diff)
...in with the new.
Diffstat (limited to 'control_windows.go')
-rw-r--r--control_windows.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/control_windows.go b/control_windows.go
new file mode 100644
index 0000000..564d8d4
--- /dev/null
+++ b/control_windows.go
@@ -0,0 +1,49 @@
+// 30 july 2014
+
+package ui
+
+// #include "winapi_windows.h"
+import "C"
+
+type controlPrivate interface {
+ hwnd() C.HWND
+ Control
+}
+
+type controlParent struct {
+ c *container
+}
+
+func basesetParent(c controlPrivate, p *controlParent) {
+ C.controlSetParent(c.hwnd(), p.c.hwnd)
+ p.c.nchildren++
+}
+
+// don't specify basepreferredSize; it is custom on ALL controls
+
+func basecommitResize(c controlPrivate, a *allocation, d *sizing) {
+ C.moveWindow(c.hwnd(), C.int(a.x), C.int(a.y), C.int(a.width), C.int(a.height))
+}
+
+func basegetAuxResizeInfo(c controlPrivate, d *sizing) {
+ // do nothing
+}
+
+// these are provided for convenience
+
+type textableControl interface {
+ controlPrivate
+ textlen() C.LONG
+ settextlen(C.LONG)
+}
+
+func baseText(c textableControl) string {
+ return getWindowText(c.hwnd())
+}
+
+func baseSetText(c textableControl, text string) {
+ hwnd := c.hwnd()
+ t := toUTF16(text)
+ C.setWindowText(hwnd, t)
+ c.settextlen(C.controlTextLength(hwnd, t))
+}