| // Copyright 2010 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 |
| } |