summaryrefslogtreecommitdiff
path: root/common.go
diff options
context:
space:
mode:
Diffstat (limited to 'common.go')
-rw-r--r--common.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/common.go b/common.go
index 4505397..a51583d 100644
--- a/common.go
+++ b/common.go
@@ -3,8 +3,11 @@ package main
import (
"syscall"
+ "unsafe"
)
+// TODO filter out commctrl.h stuff because the combobox stuff has values that differ between windows versions and bleh
+
var (
user32 = syscall.NewLazyDLL("user32.dll")
kernel32 = syscall.NewLazyDLL("kernel32.dll")
@@ -37,7 +40,30 @@ func (w WPARAM) HIWORD() uint16 {
return uint16((w >> 16) & 0xFFFF)
}
+func LPARAMFromString(str string) LPARAM {
+ return LPARAM(unsafe.Pointer(syscall.StringToUTF16Ptr(str)))
+}
+
// microsoft's header files do this
func MAKEINTRESOURCE(what uint16) uintptr {
return uintptr(what)
}
+
+// TODO adorn error messages with which step failed?
+func getText(hwnd HWND) (text string, err error) {
+ var tc []uint16
+
+ length, err := SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0)
+ if err != nil {
+ return "", err
+ }
+ tc = make([]uint16, length + 1)
+ _, err = SendMessage(hwnd,
+ WM_GETTEXT,
+ WPARAM(length + 1),
+ LPARAM(unsafe.Pointer(&tc[0])))
+ if err != nil {
+ return "", err
+ }
+ return syscall.UTF16ToString(tc), nil
+}