diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-10 12:44:11 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-10 12:44:11 -0500 |
| commit | e9f25362bef2616b8074c1d6ec30a1afecf0c178 (patch) | |
| tree | baeb757ddbab3a28c782ce5d71a014e721cac720 /common.go | |
| parent | 6ae896cd6489eb454162100a3602d7dfe5823b99 (diff) | |
Added combo boxes and added some to the main window example.
Diffstat (limited to 'common.go')
| -rw-r--r-- | common.go | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -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 +} |
