summaryrefslogtreecommitdiff
path: root/packages/w32/comctl32.go
diff options
context:
space:
mode:
Diffstat (limited to 'packages/w32/comctl32.go')
-rw-r--r--packages/w32/comctl32.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/packages/w32/comctl32.go b/packages/w32/comctl32.go
new file mode 100644
index 0000000..4f4e6b5
--- /dev/null
+++ b/packages/w32/comctl32.go
@@ -0,0 +1,109 @@
+// Copyright 2010-2012 The W32 Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package w32
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var (
+ modcomctl32 = syscall.NewLazyDLL("comctl32.dll")
+
+ procInitCommonControlsEx = modcomctl32.NewProc("InitCommonControlsEx")
+ procImageList_Create = modcomctl32.NewProc("ImageList_Create")
+ procImageList_Destroy = modcomctl32.NewProc("ImageList_Destroy")
+ procImageList_GetImageCount = modcomctl32.NewProc("ImageList_GetImageCount")
+ procImageList_SetImageCount = modcomctl32.NewProc("ImageList_SetImageCount")
+ procImageList_Add = modcomctl32.NewProc("ImageList_Add")
+ procImageList_ReplaceIcon = modcomctl32.NewProc("ImageList_ReplaceIcon")
+ procImageList_Remove = modcomctl32.NewProc("ImageList_Remove")
+ procTrackMouseEvent = modcomctl32.NewProc("_TrackMouseEvent")
+)
+
+func InitCommonControlsEx(lpInitCtrls *INITCOMMONCONTROLSEX) bool {
+ ret, _, _ := procInitCommonControlsEx.Call(
+ uintptr(unsafe.Pointer(lpInitCtrls)))
+
+ return ret != 0
+}
+
+func ImageList_Create(cx, cy int, flags uint, cInitial, cGrow int) HIMAGELIST {
+ ret, _, _ := procImageList_Create.Call(
+ uintptr(cx),
+ uintptr(cy),
+ uintptr(flags),
+ uintptr(cInitial),
+ uintptr(cGrow))
+
+ if ret == 0 {
+ panic("Create image list failed")
+ }
+
+ return HIMAGELIST(ret)
+}
+
+func ImageList_Destroy(himl HIMAGELIST) bool {
+ ret, _, _ := procImageList_Destroy.Call(
+ uintptr(himl))
+
+ return ret != 0
+}
+
+func ImageList_GetImageCount(himl HIMAGELIST) int {
+ ret, _, _ := procImageList_GetImageCount.Call(
+ uintptr(himl))
+
+ return int(ret)
+}
+
+func ImageList_SetImageCount(himl HIMAGELIST, uNewCount uint) bool {
+ ret, _, _ := procImageList_SetImageCount.Call(
+ uintptr(himl),
+ uintptr(uNewCount))
+
+ return ret != 0
+}
+
+func ImageList_Add(himl HIMAGELIST, hbmImage, hbmMask HBITMAP) int {
+ ret, _, _ := procImageList_Add.Call(
+ uintptr(himl),
+ uintptr(hbmImage),
+ uintptr(hbmMask))
+
+ return int(ret)
+}
+
+func ImageList_ReplaceIcon(himl HIMAGELIST, i int, hicon HICON) int {
+ ret, _, _ := procImageList_ReplaceIcon.Call(
+ uintptr(himl),
+ uintptr(i),
+ uintptr(hicon))
+
+ return int(ret)
+}
+
+func ImageList_AddIcon(himl HIMAGELIST, hicon HICON) int {
+ return ImageList_ReplaceIcon(himl, -1, hicon)
+}
+
+func ImageList_Remove(himl HIMAGELIST, i int) bool {
+ ret, _, _ := procImageList_Remove.Call(
+ uintptr(himl),
+ uintptr(i))
+
+ return ret != 0
+}
+
+func ImageList_RemoveAll(himl HIMAGELIST) bool {
+ return ImageList_Remove(himl, -1)
+}
+
+func TrackMouseEvent(tme *TRACKMOUSEEVENT) bool {
+ ret, _, _ := procTrackMouseEvent.Call(
+ uintptr(unsafe.Pointer(tme)))
+
+ return ret != 0
+}