mirror of https://github.com/k3s-io/k3s
Merge pull request #55496 from JiangtianLi/jiangtli-fixservercore
Automatic merge from submit-queue (batch tested with PRs 55642, 55897, 55835, 55496, 55313). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Fix issue #55031 to remove dependence on package lxn/win **What this PR does / why we need it**: This PR fixes issue #55031 where kubelet.exe crashes on Windows Server Core. The root cause is that kubelet.exe depends on package lxn/win pdh and kernel32 wrapper for node metrics. However, opengl32.dll is not available in Server Core and lxn/win requires the presence of all win32 DLLs. This PR uses a slim win32 package JeffAshton/win_pdh since most win32 APIs needed are PDH API. Also this PR makes own implementation of GetPhysicallyInstalledSystemMemory until golang Windows syscall has it or lxn/win fixes opengl32 issue. Also this PR modifies the way to get Windows version. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes #55031 **Special notes for your reviewer**: **Release note**: ```release-note ``` /sig windows /sig nodepull/6/head
commit
786c69dbc9
|
@ -96,6 +96,10 @@
|
|||
"Comment": "v9.1.0",
|
||||
"Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/JeffAshton/win_pdh",
|
||||
"Rev": "76bb4ee9f0ab50f77826f2a2ee7fb9d3880d6ec2"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/MakeNowJust/heredoc",
|
||||
"Rev": "bb23615498cded5e105af4ce27de75b089cbe851"
|
||||
|
@ -1884,10 +1888,6 @@
|
|||
"Comment": "v1.0-1-g9577782",
|
||||
"Rev": "9577782540c1398b710ddae1b86268ba03a19b0c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/lxn/win",
|
||||
"Rev": "712da405e3eb60e148bf5086991cd1e9eb570001"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/magiconair/properties",
|
||||
"Comment": "v1.7.0-4-g61b492c",
|
||||
|
|
|
@ -62482,6 +62482,37 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
================================================================================
|
||||
|
||||
|
||||
================================================================================
|
||||
= vendor/github.com/JeffAshton/win_pdh licensed under: =
|
||||
|
||||
Copyright (c) 2010 The win_pdh Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The names of the authors may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
= vendor/github.com/JeffAshton/win_pdh/LICENSE fadcabe0503181faf8d4a9579bed3b7f
|
||||
================================================================================
|
||||
|
||||
|
||||
================================================================================
|
||||
= vendor/github.com/jmespath/go-jmespath licensed under: =
|
||||
|
||||
|
@ -64747,37 +64778,6 @@ Apache License
|
|||
================================================================================
|
||||
|
||||
|
||||
================================================================================
|
||||
= vendor/github.com/lxn/win licensed under: =
|
||||
|
||||
Copyright (c) 2010 The win Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The names of the authors may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
= vendor/github.com/lxn/win/LICENSE 794c9d5b17cb1deeb131552549b6e7f2
|
||||
================================================================================
|
||||
|
||||
|
||||
================================================================================
|
||||
= vendor/github.com/magiconair/properties licensed under: =
|
||||
|
||||
|
|
|
@ -34,8 +34,8 @@ go_library(
|
|||
"//vendor/github.com/google/cadvisor/info/v2:go_default_library",
|
||||
] + select({
|
||||
"@io_bazel_rules_go//go/platform:windows_amd64": [
|
||||
"//vendor/github.com/JeffAshton/win_pdh:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/lxn/win:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||
],
|
||||
"//conditions:default": [],
|
||||
|
|
|
@ -25,14 +25,20 @@ import (
|
|||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/golang/glog"
|
||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||
"github.com/lxn/win"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
)
|
||||
|
||||
var (
|
||||
modkernel32 = syscall.NewLazyDLL("kernel32.dll")
|
||||
procGetPhysicallyInstalledSystemMemory = modkernel32.NewProc("GetPhysicallyInstalledSystemMemory")
|
||||
)
|
||||
|
||||
// NewPerfCounterClient creates a client using perf counters
|
||||
func NewPerfCounterClient() (Client, error) {
|
||||
return newClient(&perfCounterNodeStatsClient{})
|
||||
|
@ -158,9 +164,18 @@ func (p *perfCounterNodeStatsClient) convertCPUValue(cpuValue uint64) uint64 {
|
|||
func getPhysicallyInstalledSystemMemoryBytes() (uint64, error) {
|
||||
var physicalMemoryKiloBytes uint64
|
||||
|
||||
if ok := win.GetPhysicallyInstalledSystemMemory(&physicalMemoryKiloBytes); !ok {
|
||||
if ok := getPhysicallyInstalledSystemMemory(&physicalMemoryKiloBytes); !ok {
|
||||
return 0, errors.New("unable to read physical memory")
|
||||
}
|
||||
|
||||
return physicalMemoryKiloBytes * 1024, nil // convert kilobytes to bytes
|
||||
}
|
||||
|
||||
func getPhysicallyInstalledSystemMemory(totalMemoryInKilobytes *uint64) bool {
|
||||
ret, _, _ := syscall.Syscall(procGetPhysicallyInstalledSystemMemory.Addr(), 1,
|
||||
uintptr(unsafe.Pointer(totalMemoryInKilobytes)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ import (
|
|||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/lxn/win"
|
||||
"github.com/JeffAshton/win_pdh"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -37,31 +37,31 @@ const (
|
|||
)
|
||||
|
||||
type perfCounter struct {
|
||||
queryHandle win.PDH_HQUERY
|
||||
counterHandle win.PDH_HCOUNTER
|
||||
queryHandle win_pdh.PDH_HQUERY
|
||||
counterHandle win_pdh.PDH_HCOUNTER
|
||||
}
|
||||
|
||||
func newPerfCounter(counter string) (*perfCounter, error) {
|
||||
var queryHandle win.PDH_HQUERY
|
||||
var counterHandle win.PDH_HCOUNTER
|
||||
var queryHandle win_pdh.PDH_HQUERY
|
||||
var counterHandle win_pdh.PDH_HCOUNTER
|
||||
|
||||
ret := win.PdhOpenQuery(0, 0, &queryHandle)
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
ret := win_pdh.PdhOpenQuery(0, 0, &queryHandle)
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return nil, errors.New("unable to open query through DLL call")
|
||||
}
|
||||
|
||||
ret = win.PdhValidatePath(counter)
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
ret = win_pdh.PdhValidatePath(counter)
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return nil, fmt.Errorf("unable to valid path to counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
ret = win.PdhAddEnglishCounter(queryHandle, counter, 0, &counterHandle)
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
ret = win_pdh.PdhAddEnglishCounter(queryHandle, counter, 0, &counterHandle)
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return nil, fmt.Errorf("unable to add process counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
ret = win.PdhCollectQueryData(queryHandle)
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
ret = win_pdh.PdhCollectQueryData(queryHandle)
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return nil, fmt.Errorf("unable to collect data from counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
|
@ -72,24 +72,24 @@ func newPerfCounter(counter string) (*perfCounter, error) {
|
|||
}
|
||||
|
||||
func (p *perfCounter) getData() (uint64, error) {
|
||||
ret := win.PdhCollectQueryData(p.queryHandle)
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
ret := win_pdh.PdhCollectQueryData(p.queryHandle)
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return 0, fmt.Errorf("unable to collect data from counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
var bufSize, bufCount uint32
|
||||
var size = uint32(unsafe.Sizeof(win.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE{}))
|
||||
var emptyBuf [1]win.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE // need at least 1 addressable null ptr.
|
||||
var size = uint32(unsafe.Sizeof(win_pdh.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE{}))
|
||||
var emptyBuf [1]win_pdh.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE // need at least 1 addressable null ptr.
|
||||
var data uint64
|
||||
|
||||
ret = win.PdhGetFormattedCounterArrayDouble(p.counterHandle, &bufSize, &bufCount, &emptyBuf[0])
|
||||
if ret != win.PDH_MORE_DATA {
|
||||
ret = win_pdh.PdhGetFormattedCounterArrayDouble(p.counterHandle, &bufSize, &bufCount, &emptyBuf[0])
|
||||
if ret != win_pdh.PDH_MORE_DATA {
|
||||
return 0, fmt.Errorf("unable to collect data from counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
filledBuf := make([]win.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE, bufCount*size)
|
||||
ret = win.PdhGetFormattedCounterArrayDouble(p.counterHandle, &bufSize, &bufCount, &filledBuf[0])
|
||||
if ret != win.ERROR_SUCCESS {
|
||||
filledBuf := make([]win_pdh.PDH_FMT_COUNTERVALUE_ITEM_DOUBLE, bufCount*size)
|
||||
ret = win_pdh.PdhGetFormattedCounterArrayDouble(p.counterHandle, &bufSize, &bufCount, &filledBuf[0])
|
||||
if ret != win_pdh.ERROR_SUCCESS {
|
||||
return 0, fmt.Errorf("unable to collect data from counter. Error code is %x", ret)
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ filegroup(
|
|||
"//vendor/github.com/Azure/azure-sdk-for-go/storage:all-srcs",
|
||||
"//vendor/github.com/Azure/go-ansiterm:all-srcs",
|
||||
"//vendor/github.com/Azure/go-autorest/autorest:all-srcs",
|
||||
"//vendor/github.com/JeffAshton/win_pdh:all-srcs",
|
||||
"//vendor/github.com/MakeNowJust/heredoc:all-srcs",
|
||||
"//vendor/github.com/Microsoft/go-winio:all-srcs",
|
||||
"//vendor/github.com/Microsoft/hcsshim:all-srcs",
|
||||
|
@ -264,7 +265,6 @@ filegroup(
|
|||
"//vendor/github.com/libopenstorage/openstorage/pkg/units:all-srcs",
|
||||
"//vendor/github.com/libopenstorage/openstorage/volume:all-srcs",
|
||||
"//vendor/github.com/lpabon/godbc:all-srcs",
|
||||
"//vendor/github.com/lxn/win:all-srcs",
|
||||
"//vendor/github.com/magiconair/properties:all-srcs",
|
||||
"//vendor/github.com/mailru/easyjson/buffer:all-srcs",
|
||||
"//vendor/github.com/mailru/easyjson/jlexer:all-srcs",
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
# This is the official list of 'win_pdh' authors for copyright purposes.
|
||||
|
||||
# Names should be added to this file as
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
# Contributors
|
||||
# ============
|
||||
|
||||
Alexander Neumann <an2048@googlemail.com>
|
||||
Joseph Watson <jtwatson@linux-consulting.us>
|
||||
Kevin Pors <krpors@gmail.com>
|
|
@ -0,0 +1,27 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = select({
|
||||
"@io_bazel_rules_go//go/platform:windows_amd64": [
|
||||
"pdh.go",
|
||||
],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
importpath = "github.com/JeffAshton/win_pdh",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
2
vendor/github.com/lxn/win/LICENSE → vendor/github.com/JeffAshton/win_pdh/LICENSE
generated
vendored
2
vendor/github.com/lxn/win/LICENSE → vendor/github.com/JeffAshton/win_pdh/LICENSE
generated
vendored
|
@ -1,4 +1,4 @@
|
|||
Copyright (c) 2010 The win Authors. All rights reserved.
|
||||
Copyright (c) 2010 The win_pdh Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
|
@ -0,0 +1,15 @@
|
|||
About win_pdh
|
||||
=============
|
||||
|
||||
win_pdh is a Windows Performance Data Helper wrapper package for Go.
|
||||
|
||||
Originally part of [walk](https://github.com/lxn/walk) and [win](https://github.com/lxn/win), it is now a separate
|
||||
project.
|
||||
|
||||
Setup
|
||||
=====
|
||||
|
||||
Make sure you have a working Go installation.
|
||||
See [Getting Started](http://golang.org/doc/install.html)
|
||||
|
||||
Now run `go get github.com/JeffAshton/win_pdh`
|
21
vendor/github.com/lxn/win/pdh.go → vendor/github.com/JeffAshton/win_pdh/pdh.go
generated
vendored
21
vendor/github.com/lxn/win/pdh.go → vendor/github.com/JeffAshton/win_pdh/pdh.go
generated
vendored
|
@ -1,16 +1,26 @@
|
|||
// Copyright 2013 The win Authors. All rights reserved.
|
||||
// Copyright 2013 The win_pdh Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
package win_pdh
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// Error codes
|
||||
const (
|
||||
ERROR_SUCCESS = 0
|
||||
ERROR_INVALID_FUNCTION = 1
|
||||
)
|
||||
|
||||
type (
|
||||
HANDLE uintptr
|
||||
)
|
||||
|
||||
// PDH error codes, which can be returned by all Pdh* functions. Taken from mingw-w64 pdhmsg.h
|
||||
const (
|
||||
PDH_CSTATUS_VALID_DATA = 0x00000000 // The returned data is valid.
|
||||
|
@ -434,3 +444,10 @@ func PdhValidatePath(path string) uint32 {
|
|||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func UTF16PtrToString(s *uint16) string {
|
||||
if s == nil {
|
||||
return ""
|
||||
}
|
||||
return syscall.UTF16ToString((*[1 << 29]uint16)(unsafe.Pointer(s))[0:])
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
# This is the official list of 'win' authors for copyright purposes.
|
||||
|
||||
# Names should be added to this file as
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
# Contributors
|
||||
# ============
|
||||
|
||||
Alexander Neumann <an2048@googlemail.com>
|
||||
Anton Lahti <antonlahti@gmail.com>
|
||||
Benny Siegert <bsiegert@gmail.com>
|
||||
Bruno Bigras <bigras.bruno@gmail.com>
|
||||
Carlos Cobo <toqueteos@gmail.com>
|
||||
Cary Cherng <ccherng@gmail.com>
|
||||
David Porter <david@porter.me>
|
||||
Hill <zhubicen@gmail.com>
|
||||
Joseph Watson <jtwatson@linux-consulting.us>
|
||||
Kevin Pors <krpors@gmail.com>
|
||||
ktye <ktye@users.noreply.github.com>
|
||||
mycaosf <mycaosf@gmail.com>
|
||||
wsf01 <wf1337@sina.com>
|
|
@ -1,59 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = select({
|
||||
"@io_bazel_rules_go//go/platform:windows_amd64": [
|
||||
"advapi32.go",
|
||||
"combobox.go",
|
||||
"comctl32.go",
|
||||
"comdlg32.go",
|
||||
"datetimepicker.go",
|
||||
"edit.go",
|
||||
"gdi32.go",
|
||||
"gdiplus.go",
|
||||
"header.go",
|
||||
"kernel32.go",
|
||||
"listbox.go",
|
||||
"listview.go",
|
||||
"menu.go",
|
||||
"ole32.go",
|
||||
"oleaut32.go",
|
||||
"oleaut32_amd64.go",
|
||||
"opengl32.go",
|
||||
"pdh.go",
|
||||
"shdocvw.go",
|
||||
"shell32.go",
|
||||
"shobj.go",
|
||||
"shobj_amd64.go",
|
||||
"statusbar.go",
|
||||
"syslink.go",
|
||||
"tab.go",
|
||||
"toolbar.go",
|
||||
"tooltip.go",
|
||||
"treeview.go",
|
||||
"updown.go",
|
||||
"user32.go",
|
||||
"uxtheme.go",
|
||||
"win.go",
|
||||
"winspool.go",
|
||||
],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
importpath = "github.com/lxn/win",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
|
@ -1,15 +0,0 @@
|
|||
About win
|
||||
=========
|
||||
|
||||
win is a Windows API wrapper package for Go.
|
||||
|
||||
Originally part of [walk](https://github.com/lxn/walk), it is now a separate
|
||||
project.
|
||||
|
||||
Setup
|
||||
=====
|
||||
|
||||
Make sure you have a working Go installation.
|
||||
See [Getting Started](http://golang.org/doc/install.html)
|
||||
|
||||
Now run `go get github.com/lxn/win`
|
|
@ -1,136 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const KEY_READ REGSAM = 0x20019
|
||||
const KEY_WRITE REGSAM = 0x20006
|
||||
|
||||
const (
|
||||
HKEY_CLASSES_ROOT HKEY = 0x80000000
|
||||
HKEY_CURRENT_USER HKEY = 0x80000001
|
||||
HKEY_LOCAL_MACHINE HKEY = 0x80000002
|
||||
HKEY_USERS HKEY = 0x80000003
|
||||
HKEY_PERFORMANCE_DATA HKEY = 0x80000004
|
||||
HKEY_CURRENT_CONFIG HKEY = 0x80000005
|
||||
HKEY_DYN_DATA HKEY = 0x80000006
|
||||
)
|
||||
|
||||
const (
|
||||
ERROR_NO_MORE_ITEMS = 259
|
||||
)
|
||||
|
||||
type (
|
||||
ACCESS_MASK uint32
|
||||
HKEY HANDLE
|
||||
REGSAM ACCESS_MASK
|
||||
)
|
||||
|
||||
const (
|
||||
REG_NONE uint64 = 0 // No value type
|
||||
REG_SZ = 1 // Unicode nul terminated string
|
||||
REG_EXPAND_SZ = 2 // Unicode nul terminated string
|
||||
// (with environment variable references)
|
||||
REG_BINARY = 3 // Free form binary
|
||||
REG_DWORD = 4 // 32-bit number
|
||||
REG_DWORD_LITTLE_ENDIAN = 4 // 32-bit number (same as REG_DWORD)
|
||||
REG_DWORD_BIG_ENDIAN = 5 // 32-bit number
|
||||
REG_LINK = 6 // Symbolic Link (unicode)
|
||||
REG_MULTI_SZ = 7 // Multiple Unicode strings
|
||||
REG_RESOURCE_LIST = 8 // Resource list in the resource map
|
||||
REG_FULL_RESOURCE_DESCRIPTOR = 9 // Resource list in the hardware description
|
||||
REG_RESOURCE_REQUIREMENTS_LIST = 10
|
||||
REG_QWORD = 11 // 64-bit number
|
||||
REG_QWORD_LITTLE_ENDIAN = 11 // 64-bit number (same as REG_QWORD)
|
||||
|
||||
)
|
||||
|
||||
var (
|
||||
// Library
|
||||
libadvapi32 uintptr
|
||||
|
||||
// Functions
|
||||
regCloseKey uintptr
|
||||
regOpenKeyEx uintptr
|
||||
regQueryValueEx uintptr
|
||||
regEnumValue uintptr
|
||||
regSetValueEx uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libadvapi32 = MustLoadLibrary("advapi32.dll")
|
||||
|
||||
// Functions
|
||||
regCloseKey = MustGetProcAddress(libadvapi32, "RegCloseKey")
|
||||
regOpenKeyEx = MustGetProcAddress(libadvapi32, "RegOpenKeyExW")
|
||||
regQueryValueEx = MustGetProcAddress(libadvapi32, "RegQueryValueExW")
|
||||
regEnumValue = MustGetProcAddress(libadvapi32, "RegEnumValueW")
|
||||
regSetValueEx = MustGetProcAddress(libadvapi32, "RegSetValueExW")
|
||||
}
|
||||
|
||||
func RegCloseKey(hKey HKEY) int32 {
|
||||
ret, _, _ := syscall.Syscall(regCloseKey, 1,
|
||||
uintptr(hKey),
|
||||
0,
|
||||
0)
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func RegOpenKeyEx(hKey HKEY, lpSubKey *uint16, ulOptions uint32, samDesired REGSAM, phkResult *HKEY) int32 {
|
||||
ret, _, _ := syscall.Syscall6(regOpenKeyEx, 5,
|
||||
uintptr(hKey),
|
||||
uintptr(unsafe.Pointer(lpSubKey)),
|
||||
uintptr(ulOptions),
|
||||
uintptr(samDesired),
|
||||
uintptr(unsafe.Pointer(phkResult)),
|
||||
0)
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func RegQueryValueEx(hKey HKEY, lpValueName *uint16, lpReserved, lpType *uint32, lpData *byte, lpcbData *uint32) int32 {
|
||||
ret, _, _ := syscall.Syscall6(regQueryValueEx, 6,
|
||||
uintptr(hKey),
|
||||
uintptr(unsafe.Pointer(lpValueName)),
|
||||
uintptr(unsafe.Pointer(lpReserved)),
|
||||
uintptr(unsafe.Pointer(lpType)),
|
||||
uintptr(unsafe.Pointer(lpData)),
|
||||
uintptr(unsafe.Pointer(lpcbData)))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func RegEnumValue(hKey HKEY, index uint32, lpValueName *uint16, lpcchValueName *uint32, lpReserved, lpType *uint32, lpData *byte, lpcbData *uint32) int32 {
|
||||
ret, _, _ := syscall.Syscall9(regEnumValue, 8,
|
||||
uintptr(hKey),
|
||||
uintptr(index),
|
||||
uintptr(unsafe.Pointer(lpValueName)),
|
||||
uintptr(unsafe.Pointer(lpcchValueName)),
|
||||
uintptr(unsafe.Pointer(lpReserved)),
|
||||
uintptr(unsafe.Pointer(lpType)),
|
||||
uintptr(unsafe.Pointer(lpData)),
|
||||
uintptr(unsafe.Pointer(lpcbData)),
|
||||
0)
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func RegSetValueEx(hKey HKEY, lpValueName *uint16, lpReserved, lpDataType uint64, lpData *byte, cbData uint32) int32 {
|
||||
ret, _, _ := syscall.Syscall6(regSetValueEx, 6,
|
||||
uintptr(hKey),
|
||||
uintptr(unsafe.Pointer(lpValueName)),
|
||||
uintptr(lpReserved),
|
||||
uintptr(lpDataType),
|
||||
uintptr(unsafe.Pointer(lpData)),
|
||||
uintptr(cbData))
|
||||
return int32(ret)
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// ComboBox return values
|
||||
const (
|
||||
CB_OKAY = 0
|
||||
CB_ERR = ^uintptr(0) // -1
|
||||
CB_ERRSPACE = ^uintptr(1) // -2
|
||||
)
|
||||
|
||||
// ComboBox notifications
|
||||
const (
|
||||
CBN_ERRSPACE = -1
|
||||
CBN_SELCHANGE = 1
|
||||
CBN_DBLCLK = 2
|
||||
CBN_SETFOCUS = 3
|
||||
CBN_KILLFOCUS = 4
|
||||
CBN_EDITCHANGE = 5
|
||||
CBN_EDITUPDATE = 6
|
||||
CBN_DROPDOWN = 7
|
||||
CBN_CLOSEUP = 8
|
||||
CBN_SELENDOK = 9
|
||||
CBN_SELENDCANCEL = 10
|
||||
)
|
||||
|
||||
// ComboBox styles
|
||||
const (
|
||||
CBS_SIMPLE = 0x0001
|
||||
CBS_DROPDOWN = 0x0002
|
||||
CBS_DROPDOWNLIST = 0x0003
|
||||
CBS_OWNERDRAWFIXED = 0x0010
|
||||
CBS_OWNERDRAWVARIABLE = 0x0020
|
||||
CBS_AUTOHSCROLL = 0x0040
|
||||
CBS_OEMCONVERT = 0x0080
|
||||
CBS_SORT = 0x0100
|
||||
CBS_HASSTRINGS = 0x0200
|
||||
CBS_NOINTEGRALHEIGHT = 0x0400
|
||||
CBS_DISABLENOSCROLL = 0x0800
|
||||
CBS_UPPERCASE = 0x2000
|
||||
CBS_LOWERCASE = 0x4000
|
||||
)
|
||||
|
||||
// ComboBox messages
|
||||
const (
|
||||
CB_GETEDITSEL = 0x0140
|
||||
CB_LIMITTEXT = 0x0141
|
||||
CB_SETEDITSEL = 0x0142
|
||||
CB_ADDSTRING = 0x0143
|
||||
CB_DELETESTRING = 0x0144
|
||||
CB_DIR = 0x0145
|
||||
CB_GETCOUNT = 0x0146
|
||||
CB_GETCURSEL = 0x0147
|
||||
CB_GETLBTEXT = 0x0148
|
||||
CB_GETLBTEXTLEN = 0x0149
|
||||
CB_INSERTSTRING = 0x014A
|
||||
CB_RESETCONTENT = 0x014B
|
||||
CB_FINDSTRING = 0x014C
|
||||
CB_SELECTSTRING = 0x014D
|
||||
CB_SETCURSEL = 0x014E
|
||||
CB_SHOWDROPDOWN = 0x014F
|
||||
CB_GETITEMDATA = 0x0150
|
||||
CB_SETITEMDATA = 0x0151
|
||||
CB_GETDROPPEDCONTROLRECT = 0x0152
|
||||
CB_SETITEMHEIGHT = 0x0153
|
||||
CB_GETITEMHEIGHT = 0x0154
|
||||
CB_SETEXTENDEDUI = 0x0155
|
||||
CB_GETEXTENDEDUI = 0x0156
|
||||
CB_GETDROPPEDSTATE = 0x0157
|
||||
CB_FINDSTRINGEXACT = 0x0158
|
||||
CB_SETLOCALE = 0x0159
|
||||
CB_GETLOCALE = 0x015A
|
||||
CB_GETTOPINDEX = 0x015b
|
||||
CB_SETTOPINDEX = 0x015c
|
||||
CB_GETHORIZONTALEXTENT = 0x015d
|
||||
CB_SETHORIZONTALEXTENT = 0x015e
|
||||
CB_GETDROPPEDWIDTH = 0x015f
|
||||
CB_SETDROPPEDWIDTH = 0x0160
|
||||
CB_INITSTORAGE = 0x0161
|
||||
CB_MULTIPLEADDSTRING = 0x0163
|
||||
CB_GETCOMBOBOXINFO = 0x0164
|
||||
)
|
|
@ -1,308 +0,0 @@
|
|||
// Copyright 2016 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// Button control messages
|
||||
const (
|
||||
BCM_FIRST = 0x1600
|
||||
BCM_GETIDEALSIZE = BCM_FIRST + 0x0001
|
||||
BCM_SETIMAGELIST = BCM_FIRST + 0x0002
|
||||
BCM_GETIMAGELIST = BCM_FIRST + 0x0003
|
||||
BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004
|
||||
BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005
|
||||
BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006
|
||||
BCM_SETSPLITINFO = BCM_FIRST + 0x0007
|
||||
BCM_GETSPLITINFO = BCM_FIRST + 0x0008
|
||||
BCM_SETNOTE = BCM_FIRST + 0x0009
|
||||
BCM_GETNOTE = BCM_FIRST + 0x000A
|
||||
BCM_GETNOTELENGTH = BCM_FIRST + 0x000B
|
||||
)
|
||||
|
||||
const (
|
||||
CCM_FIRST = 0x2000
|
||||
CCM_LAST = CCM_FIRST + 0x200
|
||||
CCM_SETBKCOLOR = 8193
|
||||
CCM_SETCOLORSCHEME = 8194
|
||||
CCM_GETCOLORSCHEME = 8195
|
||||
CCM_GETDROPTARGET = 8196
|
||||
CCM_SETUNICODEFORMAT = 8197
|
||||
CCM_GETUNICODEFORMAT = 8198
|
||||
CCM_SETVERSION = 0x2007
|
||||
CCM_GETVERSION = 0x2008
|
||||
CCM_SETNOTIFYWINDOW = 0x2009
|
||||
CCM_SETWINDOWTHEME = 0x200b
|
||||
CCM_DPISCALE = 0x200c
|
||||
)
|
||||
|
||||
// Common controls styles
|
||||
const (
|
||||
CCS_TOP = 1
|
||||
CCS_NOMOVEY = 2
|
||||
CCS_BOTTOM = 3
|
||||
CCS_NORESIZE = 4
|
||||
CCS_NOPARENTALIGN = 8
|
||||
CCS_ADJUSTABLE = 32
|
||||
CCS_NODIVIDER = 64
|
||||
CCS_VERT = 128
|
||||
CCS_LEFT = 129
|
||||
CCS_NOMOVEX = 130
|
||||
CCS_RIGHT = 131
|
||||
)
|
||||
|
||||
// InitCommonControlsEx flags
|
||||
const (
|
||||
ICC_LISTVIEW_CLASSES = 1
|
||||
ICC_TREEVIEW_CLASSES = 2
|
||||
ICC_BAR_CLASSES = 4
|
||||
ICC_TAB_CLASSES = 8
|
||||
ICC_UPDOWN_CLASS = 16
|
||||
ICC_PROGRESS_CLASS = 32
|
||||
ICC_HOTKEY_CLASS = 64
|
||||
ICC_ANIMATE_CLASS = 128
|
||||
ICC_WIN95_CLASSES = 255
|
||||
ICC_DATE_CLASSES = 256
|
||||
ICC_USEREX_CLASSES = 512
|
||||
ICC_COOL_CLASSES = 1024
|
||||
ICC_INTERNET_CLASSES = 2048
|
||||
ICC_PAGESCROLLER_CLASS = 4096
|
||||
ICC_NATIVEFNTCTL_CLASS = 8192
|
||||
INFOTIPSIZE = 1024
|
||||
ICC_STANDARD_CLASSES = 0x00004000
|
||||
ICC_LINK_CLASS = 0x00008000
|
||||
)
|
||||
|
||||
// WM_NOTITY messages
|
||||
const (
|
||||
NM_FIRST = 0
|
||||
NM_OUTOFMEMORY = ^uint32(0) // NM_FIRST - 1
|
||||
NM_CLICK = ^uint32(1) // NM_FIRST - 2
|
||||
NM_DBLCLK = ^uint32(2) // NM_FIRST - 3
|
||||
NM_RETURN = ^uint32(3) // NM_FIRST - 4
|
||||
NM_RCLICK = ^uint32(4) // NM_FIRST - 5
|
||||
NM_RDBLCLK = ^uint32(5) // NM_FIRST - 6
|
||||
NM_SETFOCUS = ^uint32(6) // NM_FIRST - 7
|
||||
NM_KILLFOCUS = ^uint32(7) // NM_FIRST - 8
|
||||
NM_CUSTOMDRAW = ^uint32(11) // NM_FIRST - 12
|
||||
NM_HOVER = ^uint32(12) // NM_FIRST - 13
|
||||
NM_NCHITTEST = ^uint32(13) // NM_FIRST - 14
|
||||
NM_KEYDOWN = ^uint32(14) // NM_FIRST - 15
|
||||
NM_RELEASEDCAPTURE = ^uint32(15) // NM_FIRST - 16
|
||||
NM_SETCURSOR = ^uint32(16) // NM_FIRST - 17
|
||||
NM_CHAR = ^uint32(17) // NM_FIRST - 18
|
||||
NM_TOOLTIPSCREATED = ^uint32(18) // NM_FIRST - 19
|
||||
NM_LAST = ^uint32(98) // NM_FIRST - 99
|
||||
TRBN_THUMBPOSCHANGING = 0xfffffa22 // TRBN_FIRST - 1
|
||||
)
|
||||
|
||||
// ProgressBar messages
|
||||
const (
|
||||
PBM_SETPOS = WM_USER + 2
|
||||
PBM_DELTAPOS = WM_USER + 3
|
||||
PBM_SETSTEP = WM_USER + 4
|
||||
PBM_STEPIT = WM_USER + 5
|
||||
PBM_SETMARQUEE = WM_USER + 10
|
||||
PBM_SETRANGE32 = 1030
|
||||
PBM_GETRANGE = 1031
|
||||
PBM_GETPOS = 1032
|
||||
PBM_SETBARCOLOR = 1033
|
||||
PBM_SETBKCOLOR = CCM_SETBKCOLOR
|
||||
)
|
||||
|
||||
// ProgressBar styles
|
||||
const (
|
||||
PBS_SMOOTH = 0x01
|
||||
PBS_VERTICAL = 0x04
|
||||
PBS_MARQUEE = 0x08
|
||||
)
|
||||
|
||||
// TrackBar (Slider) messages
|
||||
const (
|
||||
TBM_GETPOS = WM_USER
|
||||
TBM_GETRANGEMIN = WM_USER + 1
|
||||
TBM_GETRANGEMAX = WM_USER + 2
|
||||
TBM_SETPOS = WM_USER + 5
|
||||
TBM_SETRANGEMIN = WM_USER + 7
|
||||
TBM_SETRANGEMAX = WM_USER + 8
|
||||
)
|
||||
|
||||
// TrackBar (Slider) styles
|
||||
const (
|
||||
TBS_VERT = 0x002
|
||||
TBS_TOOLTIPS = 0x100
|
||||
)
|
||||
|
||||
// ImageList creation flags
|
||||
const (
|
||||
ILC_MASK = 0x00000001
|
||||
ILC_COLOR = 0x00000000
|
||||
ILC_COLORDDB = 0x000000FE
|
||||
ILC_COLOR4 = 0x00000004
|
||||
ILC_COLOR8 = 0x00000008
|
||||
ILC_COLOR16 = 0x00000010
|
||||
ILC_COLOR24 = 0x00000018
|
||||
ILC_COLOR32 = 0x00000020
|
||||
ILC_PALETTE = 0x00000800
|
||||
ILC_MIRROR = 0x00002000
|
||||
ILC_PERITEMMIRROR = 0x00008000
|
||||
)
|
||||
|
||||
const (
|
||||
CDDS_PREPAINT = 0x00000001
|
||||
CDDS_POSTPAINT = 0x00000002
|
||||
CDDS_PREERASE = 0x00000003
|
||||
CDDS_POSTERASE = 0x00000004
|
||||
CDDS_ITEM = 0x00010000
|
||||
CDDS_ITEMPREPAINT = CDDS_ITEM | CDDS_PREPAINT
|
||||
CDDS_ITEMPOSTPAINT = CDDS_ITEM | CDDS_POSTPAINT
|
||||
CDDS_ITEMPREERASE = CDDS_ITEM | CDDS_PREERASE
|
||||
CDDS_ITEMPOSTERASE = CDDS_ITEM | CDDS_POSTERASE
|
||||
CDDS_SUBITEM = 0x00020000
|
||||
)
|
||||
|
||||
const (
|
||||
CDIS_SELECTED = 0x0001
|
||||
CDIS_GRAYED = 0x0002
|
||||
CDIS_DISABLED = 0x0004
|
||||
CDIS_CHECKED = 0x0008
|
||||
CDIS_FOCUS = 0x0010
|
||||
CDIS_DEFAULT = 0x0020
|
||||
CDIS_HOT = 0x0040
|
||||
CDIS_MARKED = 0x0080
|
||||
CDIS_INDETERMINATE = 0x0100
|
||||
CDIS_SHOWKEYBOARDCUES = 0x0200
|
||||
CDIS_NEARHOT = 0x0400
|
||||
CDIS_OTHERSIDEHOT = 0x0800
|
||||
CDIS_DROPHILITED = 0x1000
|
||||
)
|
||||
|
||||
const (
|
||||
CDRF_DODEFAULT = 0x00000000
|
||||
CDRF_NEWFONT = 0x00000002
|
||||
CDRF_SKIPDEFAULT = 0x00000004
|
||||
CDRF_DOERASE = 0x00000008
|
||||
CDRF_NOTIFYPOSTPAINT = 0x00000010
|
||||
CDRF_NOTIFYITEMDRAW = 0x00000020
|
||||
CDRF_NOTIFYSUBITEMDRAW = 0x00000020
|
||||
CDRF_NOTIFYPOSTERASE = 0x00000040
|
||||
CDRF_SKIPPOSTPAINT = 0x00000100
|
||||
)
|
||||
|
||||
const (
|
||||
LPSTR_TEXTCALLBACK = ^uintptr(0)
|
||||
I_CHILDRENCALLBACK = -1
|
||||
)
|
||||
|
||||
type HIMAGELIST HANDLE
|
||||
|
||||
type INITCOMMONCONTROLSEX struct {
|
||||
DwSize, DwICC uint32
|
||||
}
|
||||
|
||||
type NMCUSTOMDRAW struct {
|
||||
Hdr NMHDR
|
||||
DwDrawStage uint32
|
||||
Hdc HDC
|
||||
Rc RECT
|
||||
DwItemSpec uintptr
|
||||
UItemState uint32
|
||||
LItemlParam uintptr
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libcomctl32 uintptr
|
||||
|
||||
// Functions
|
||||
imageList_Add uintptr
|
||||
imageList_AddMasked uintptr
|
||||
imageList_Create uintptr
|
||||
imageList_Destroy uintptr
|
||||
imageList_ReplaceIcon uintptr
|
||||
initCommonControlsEx uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libcomctl32 = MustLoadLibrary("comctl32.dll")
|
||||
|
||||
// Functions
|
||||
imageList_Add = MustGetProcAddress(libcomctl32, "ImageList_Add")
|
||||
imageList_AddMasked = MustGetProcAddress(libcomctl32, "ImageList_AddMasked")
|
||||
imageList_Create = MustGetProcAddress(libcomctl32, "ImageList_Create")
|
||||
imageList_Destroy = MustGetProcAddress(libcomctl32, "ImageList_Destroy")
|
||||
imageList_ReplaceIcon = MustGetProcAddress(libcomctl32, "ImageList_ReplaceIcon")
|
||||
initCommonControlsEx = MustGetProcAddress(libcomctl32, "InitCommonControlsEx")
|
||||
|
||||
// Initialize the common controls we support
|
||||
var initCtrls INITCOMMONCONTROLSEX
|
||||
initCtrls.DwSize = uint32(unsafe.Sizeof(initCtrls))
|
||||
initCtrls.DwICC = ICC_LINK_CLASS | ICC_LISTVIEW_CLASSES | ICC_PROGRESS_CLASS | ICC_TAB_CLASSES | ICC_TREEVIEW_CLASSES
|
||||
|
||||
InitCommonControlsEx(&initCtrls)
|
||||
}
|
||||
|
||||
func ImageList_Add(himl HIMAGELIST, hbmImage, hbmMask HBITMAP) int32 {
|
||||
ret, _, _ := syscall.Syscall(imageList_Add, 3,
|
||||
uintptr(himl),
|
||||
uintptr(hbmImage),
|
||||
uintptr(hbmMask))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func ImageList_AddMasked(himl HIMAGELIST, hbmImage HBITMAP, crMask COLORREF) int32 {
|
||||
ret, _, _ := syscall.Syscall(imageList_AddMasked, 3,
|
||||
uintptr(himl),
|
||||
uintptr(hbmImage),
|
||||
uintptr(crMask))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func ImageList_Create(cx, cy int32, flags uint32, cInitial, cGrow int32) HIMAGELIST {
|
||||
ret, _, _ := syscall.Syscall6(imageList_Create, 5,
|
||||
uintptr(cx),
|
||||
uintptr(cy),
|
||||
uintptr(flags),
|
||||
uintptr(cInitial),
|
||||
uintptr(cGrow),
|
||||
0)
|
||||
|
||||
return HIMAGELIST(ret)
|
||||
}
|
||||
|
||||
func ImageList_Destroy(hIml HIMAGELIST) bool {
|
||||
ret, _, _ := syscall.Syscall(imageList_Destroy, 1,
|
||||
uintptr(hIml),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func ImageList_ReplaceIcon(himl HIMAGELIST, i int32, hicon HICON) int32 {
|
||||
ret, _, _ := syscall.Syscall(imageList_ReplaceIcon, 3,
|
||||
uintptr(himl),
|
||||
uintptr(i),
|
||||
uintptr(hicon))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func InitCommonControlsEx(lpInitCtrls *INITCOMMONCONTROLSEX) bool {
|
||||
ret, _, _ := syscall.Syscall(initCommonControlsEx, 1,
|
||||
uintptr(unsafe.Pointer(lpInitCtrls)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
|
@ -1,299 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// Common error codes
|
||||
const (
|
||||
CDERR_DIALOGFAILURE = 0xFFFF
|
||||
CDERR_FINDRESFAILURE = 0x0006
|
||||
CDERR_INITIALIZATION = 0x0002
|
||||
CDERR_LOADRESFAILURE = 0x0007
|
||||
CDERR_LOADSTRFAILURE = 0x0005
|
||||
CDERR_LOCKRESFAILURE = 0x0008
|
||||
CDERR_MEMALLOCFAILURE = 0x0009
|
||||
CDERR_MEMLOCKFAILURE = 0x000A
|
||||
CDERR_NOHINSTANCE = 0x0004
|
||||
CDERR_NOHOOK = 0x000B
|
||||
CDERR_NOTEMPLATE = 0x0003
|
||||
CDERR_REGISTERMSGFAIL = 0x000C
|
||||
CDERR_STRUCTSIZE = 0x0001
|
||||
)
|
||||
|
||||
// CHOOSECOLOR flags
|
||||
const (
|
||||
CC_ANYCOLOR = 0x00000100
|
||||
CC_ENABLEHOOK = 0x00000010
|
||||
CC_ENABLETEMPLATE = 0x00000020
|
||||
CC_ENABLETEMPLATEHANDLE = 0x00000040
|
||||
CC_FULLOPEN = 0x00000002
|
||||
CC_PREVENTFULLOPEN = 0x00000004
|
||||
CC_RGBINIT = 0x00000001
|
||||
CC_SHOWHELP = 0x00000008
|
||||
CC_SOLIDCOLOR = 0x00000080
|
||||
)
|
||||
|
||||
type CHOOSECOLOR struct {
|
||||
LStructSize uint32
|
||||
HwndOwner HWND
|
||||
HInstance HWND
|
||||
RgbResult COLORREF
|
||||
LpCustColors *COLORREF
|
||||
Flags uint32
|
||||
LCustData uintptr
|
||||
LpfnHook uintptr
|
||||
LpTemplateName *uint16
|
||||
}
|
||||
|
||||
// PrintDlg specific error codes
|
||||
const (
|
||||
PDERR_CREATEICFAILURE = 0x100A
|
||||
PDERR_DEFAULTDIFFERENT = 0x100C
|
||||
PDERR_DNDMMISMATCH = 0x1009
|
||||
PDERR_GETDEVMODEFAIL = 0x1005
|
||||
PDERR_INITFAILURE = 0x1006
|
||||
PDERR_LOADDRVFAILURE = 0x1004
|
||||
PDERR_NODEFAULTPRN = 0x1008
|
||||
PDERR_NODEVICES = 0x1007
|
||||
PDERR_PARSEFAILURE = 0x1002
|
||||
PDERR_PRINTERNOTFOUND = 0x100B
|
||||
PDERR_RETDEFFAILURE = 0x1003
|
||||
PDERR_SETUPFAILURE = 0x1001
|
||||
)
|
||||
|
||||
// ChooseFont specific error codes
|
||||
const (
|
||||
CFERR_MAXLESSTHANMIN = 0x2002
|
||||
CFERR_NOFONTS = 0x2001
|
||||
)
|
||||
|
||||
// GetOpenFileName and GetSaveFileName specific error codes
|
||||
const (
|
||||
FNERR_BUFFERTOOSMALL = 0x3003
|
||||
FNERR_INVALIDFILENAME = 0x3002
|
||||
FNERR_SUBCLASSFAILURE = 0x3001
|
||||
)
|
||||
|
||||
// FindText and ReplaceText specific error codes
|
||||
const (
|
||||
FRERR_BUFFERLENGTHZERO = 0x4001
|
||||
)
|
||||
|
||||
// GetOpenFileName and GetSaveFileName flags
|
||||
const (
|
||||
OFN_ALLOWMULTISELECT = 0x00000200
|
||||
OFN_CREATEPROMPT = 0x00002000
|
||||
OFN_DONTADDTORECENT = 0x02000000
|
||||
OFN_ENABLEHOOK = 0x00000020
|
||||
OFN_ENABLEINCLUDENOTIFY = 0x00400000
|
||||
OFN_ENABLESIZING = 0x00800000
|
||||
OFN_ENABLETEMPLATE = 0x00000040
|
||||
OFN_ENABLETEMPLATEHANDLE = 0x00000080
|
||||
OFN_EXPLORER = 0x00080000
|
||||
OFN_EXTENSIONDIFFERENT = 0x00000400
|
||||
OFN_FILEMUSTEXIST = 0x00001000
|
||||
OFN_FORCESHOWHIDDEN = 0x10000000
|
||||
OFN_HIDEREADONLY = 0x00000004
|
||||
OFN_LONGNAMES = 0x00200000
|
||||
OFN_NOCHANGEDIR = 0x00000008
|
||||
OFN_NODEREFERENCELINKS = 0x00100000
|
||||
OFN_NOLONGNAMES = 0x00040000
|
||||
OFN_NONETWORKBUTTON = 0x00020000
|
||||
OFN_NOREADONLYRETURN = 0x00008000
|
||||
OFN_NOTESTFILECREATE = 0x00010000
|
||||
OFN_NOVALIDATE = 0x00000100
|
||||
OFN_OVERWRITEPROMPT = 0x00000002
|
||||
OFN_PATHMUSTEXIST = 0x00000800
|
||||
OFN_READONLY = 0x00000001
|
||||
OFN_SHAREAWARE = 0x00004000
|
||||
OFN_SHOWHELP = 0x00000010
|
||||
)
|
||||
|
||||
// GetOpenFileName and GetSaveFileName extended flags
|
||||
const (
|
||||
OFN_EX_NOPLACESBAR = 0x00000001
|
||||
)
|
||||
|
||||
// PrintDlg[Ex] result actions
|
||||
const (
|
||||
PD_RESULT_APPLY = 2
|
||||
PD_RESULT_CANCEL = 0
|
||||
PD_RESULT_PRINT = 1
|
||||
)
|
||||
|
||||
// PrintDlg[Ex] flags
|
||||
const (
|
||||
PD_ALLPAGES = 0x00000000
|
||||
PD_COLLATE = 0x00000010
|
||||
PD_CURRENTPAGE = 0x00400000
|
||||
PD_DISABLEPRINTTOFILE = 0x00080000
|
||||
PD_ENABLEPRINTTEMPLATE = 0x00004000
|
||||
PD_ENABLEPRINTTEMPLATEHANDLE = 0x00010000
|
||||
PD_EXCLUSIONFLAGS = 0x01000000
|
||||
PD_HIDEPRINTTOFILE = 0x00100000
|
||||
PD_NOCURRENTPAGE = 0x00800000
|
||||
PD_NOPAGENUMS = 0x00000008
|
||||
PD_NOSELECTION = 0x00000004
|
||||
PD_NOWARNING = 0x00000080
|
||||
PD_PAGENUMS = 0x00000002
|
||||
PD_PRINTTOFILE = 0x00000020
|
||||
PD_RETURNDC = 0x00000100
|
||||
PD_RETURNDEFAULT = 0x00000400
|
||||
PD_RETURNIC = 0x00000200
|
||||
PD_SELECTION = 0x00000001
|
||||
PD_USEDEVMODECOPIES = 0x00040000
|
||||
PD_USEDEVMODECOPIESANDCOLLATE = 0x00040000
|
||||
PD_USELARGETEMPLATE = 0x10000000
|
||||
)
|
||||
|
||||
// PrintDlgEx exclusion flags
|
||||
const (
|
||||
PD_EXCL_COPIESANDCOLLATE = DM_COPIES | DM_COLLATE
|
||||
)
|
||||
|
||||
const START_PAGE_GENERAL = 0xffffffff
|
||||
|
||||
type (
|
||||
LPOFNHOOKPROC uintptr
|
||||
HPROPSHEETPAGE HANDLE
|
||||
LPUNKNOWN uintptr
|
||||
)
|
||||
|
||||
type OPENFILENAME struct {
|
||||
LStructSize uint32
|
||||
HwndOwner HWND
|
||||
HInstance HINSTANCE
|
||||
LpstrFilter *uint16
|
||||
LpstrCustomFilter *uint16
|
||||
NMaxCustFilter uint32
|
||||
NFilterIndex uint32
|
||||
LpstrFile *uint16
|
||||
NMaxFile uint32
|
||||
LpstrFileTitle *uint16
|
||||
NMaxFileTitle uint32
|
||||
LpstrInitialDir *uint16
|
||||
LpstrTitle *uint16
|
||||
Flags uint32
|
||||
NFileOffset uint16
|
||||
NFileExtension uint16
|
||||
LpstrDefExt *uint16
|
||||
LCustData uintptr
|
||||
LpfnHook LPOFNHOOKPROC
|
||||
LpTemplateName *uint16
|
||||
PvReserved unsafe.Pointer
|
||||
DwReserved uint32
|
||||
FlagsEx uint32
|
||||
}
|
||||
|
||||
type PRINTPAGERANGE struct {
|
||||
NFromPage uint32
|
||||
NToPage uint32
|
||||
}
|
||||
|
||||
type DEVNAMES struct {
|
||||
WDriverOffset uint16
|
||||
WDeviceOffset uint16
|
||||
WOutputOffset uint16
|
||||
WDefault uint16
|
||||
}
|
||||
|
||||
type PRINTDLGEX struct {
|
||||
LStructSize uint32
|
||||
HwndOwner HWND
|
||||
HDevMode HGLOBAL
|
||||
HDevNames HGLOBAL
|
||||
HDC HDC
|
||||
Flags uint32
|
||||
Flags2 uint32
|
||||
ExclusionFlags uint32
|
||||
NPageRanges uint32
|
||||
NMaxPageRanges uint32
|
||||
LpPageRanges *PRINTPAGERANGE
|
||||
NMinPage uint32
|
||||
NMaxPage uint32
|
||||
NCopies uint32
|
||||
HInstance HINSTANCE
|
||||
LpPrintTemplateName *uint16
|
||||
LpCallback LPUNKNOWN
|
||||
NPropertyPages uint32
|
||||
LphPropertyPages *HPROPSHEETPAGE
|
||||
NStartPage uint32
|
||||
DwResultAction uint32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libcomdlg32 uintptr
|
||||
|
||||
// Functions
|
||||
chooseColor uintptr
|
||||
commDlgExtendedError uintptr
|
||||
getOpenFileName uintptr
|
||||
getSaveFileName uintptr
|
||||
printDlgEx uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libcomdlg32 = MustLoadLibrary("comdlg32.dll")
|
||||
|
||||
// Functions
|
||||
chooseColor = MustGetProcAddress(libcomdlg32, "ChooseColorW")
|
||||
commDlgExtendedError = MustGetProcAddress(libcomdlg32, "CommDlgExtendedError")
|
||||
getOpenFileName = MustGetProcAddress(libcomdlg32, "GetOpenFileNameW")
|
||||
getSaveFileName = MustGetProcAddress(libcomdlg32, "GetSaveFileNameW")
|
||||
printDlgEx = MustGetProcAddress(libcomdlg32, "PrintDlgExW")
|
||||
}
|
||||
|
||||
func ChooseColor(lpcc *CHOOSECOLOR) bool {
|
||||
ret, _, _ := syscall.Syscall(chooseColor, 1,
|
||||
uintptr(unsafe.Pointer(lpcc)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func CommDlgExtendedError() uint32 {
|
||||
ret, _, _ := syscall.Syscall(commDlgExtendedError, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func GetOpenFileName(lpofn *OPENFILENAME) bool {
|
||||
ret, _, _ := syscall.Syscall(getOpenFileName, 1,
|
||||
uintptr(unsafe.Pointer(lpofn)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func GetSaveFileName(lpofn *OPENFILENAME) bool {
|
||||
ret, _, _ := syscall.Syscall(getSaveFileName, 1,
|
||||
uintptr(unsafe.Pointer(lpofn)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func PrintDlgEx(lppd *PRINTDLGEX) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(printDlgEx, 1,
|
||||
uintptr(unsafe.Pointer(lppd)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
// Copyright 2011 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const DTM_FIRST = 0x1000
|
||||
const DTN_FIRST = ^uint32(739) // -740
|
||||
const DTN_FIRST2 = ^uint32(752) // -753
|
||||
|
||||
const (
|
||||
GDTR_MIN = 0x0001
|
||||
GDTR_MAX = 0x0002
|
||||
)
|
||||
|
||||
const (
|
||||
GDT_ERROR = -1
|
||||
GDT_VALID = 0
|
||||
GDT_NONE = 1
|
||||
)
|
||||
|
||||
// Messages
|
||||
const (
|
||||
DTM_GETSYSTEMTIME = DTM_FIRST + 1
|
||||
DTM_SETSYSTEMTIME = DTM_FIRST + 2
|
||||
DTM_GETRANGE = DTM_FIRST + 3
|
||||
DTM_SETRANGE = DTM_FIRST + 4
|
||||
DTM_SETFORMAT = DTM_FIRST + 50
|
||||
DTM_SETMCCOLOR = DTM_FIRST + 6
|
||||
DTM_GETMCCOLOR = DTM_FIRST + 7
|
||||
DTM_GETMONTHCAL = DTM_FIRST + 8
|
||||
DTM_SETMCFONT = DTM_FIRST + 9
|
||||
DTM_GETMCFONT = DTM_FIRST + 10
|
||||
)
|
||||
|
||||
// Styles
|
||||
const (
|
||||
DTS_UPDOWN = 0x0001
|
||||
DTS_SHOWNONE = 0x0002
|
||||
DTS_SHORTDATEFORMAT = 0x0000
|
||||
DTS_LONGDATEFORMAT = 0x0004
|
||||
DTS_SHORTDATECENTURYFORMAT = 0x000C
|
||||
DTS_TIMEFORMAT = 0x0009
|
||||
DTS_APPCANPARSE = 0x0010
|
||||
DTS_RIGHTALIGN = 0x0020
|
||||
)
|
||||
|
||||
// Notifications
|
||||
const (
|
||||
DTN_DATETIMECHANGE = DTN_FIRST2 - 6
|
||||
DTN_USERSTRING = DTN_FIRST - 5
|
||||
DTN_WMKEYDOWN = DTN_FIRST - 4
|
||||
DTN_FORMAT = DTN_FIRST - 3
|
||||
DTN_FORMATQUERY = DTN_FIRST - 2
|
||||
DTN_DROPDOWN = DTN_FIRST2 - 1
|
||||
DTN_CLOSEUP = DTN_FIRST2
|
||||
)
|
||||
|
||||
// Structs
|
||||
type (
|
||||
NMDATETIMECHANGE struct {
|
||||
Nmhdr NMHDR
|
||||
DwFlags uint32
|
||||
St SYSTEMTIME
|
||||
}
|
||||
|
||||
NMDATETIMESTRING struct {
|
||||
Nmhdr NMHDR
|
||||
PszUserString *uint16
|
||||
St SYSTEMTIME
|
||||
DwFlags uint32
|
||||
}
|
||||
|
||||
NMDATETIMEWMKEYDOWN struct {
|
||||
Nmhdr NMHDR
|
||||
NVirtKey int
|
||||
PszFormat *uint16
|
||||
St SYSTEMTIME
|
||||
}
|
||||
|
||||
NMDATETIMEFORMAT struct {
|
||||
Nmhdr NMHDR
|
||||
PszFormat *uint16
|
||||
St SYSTEMTIME
|
||||
PszDisplay *uint16
|
||||
SzDisplay [64]uint16
|
||||
}
|
||||
|
||||
NMDATETIMEFORMATQUERY struct {
|
||||
Nmhdr NMHDR
|
||||
PszFormat *uint16
|
||||
SzMax SIZE
|
||||
}
|
||||
)
|
|
@ -1,84 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// Edit styles
|
||||
const (
|
||||
ES_LEFT = 0x0000
|
||||
ES_CENTER = 0x0001
|
||||
ES_RIGHT = 0x0002
|
||||
ES_MULTILINE = 0x0004
|
||||
ES_UPPERCASE = 0x0008
|
||||
ES_LOWERCASE = 0x0010
|
||||
ES_PASSWORD = 0x0020
|
||||
ES_AUTOVSCROLL = 0x0040
|
||||
ES_AUTOHSCROLL = 0x0080
|
||||
ES_NOHIDESEL = 0x0100
|
||||
ES_OEMCONVERT = 0x0400
|
||||
ES_READONLY = 0x0800
|
||||
ES_WANTRETURN = 0x1000
|
||||
ES_NUMBER = 0x2000
|
||||
)
|
||||
|
||||
// Edit notifications
|
||||
const (
|
||||
EN_SETFOCUS = 0x0100
|
||||
EN_KILLFOCUS = 0x0200
|
||||
EN_CHANGE = 0x0300
|
||||
EN_UPDATE = 0x0400
|
||||
EN_ERRSPACE = 0x0500
|
||||
EN_MAXTEXT = 0x0501
|
||||
EN_HSCROLL = 0x0601
|
||||
EN_VSCROLL = 0x0602
|
||||
EN_ALIGN_LTR_EC = 0x0700
|
||||
EN_ALIGN_RTL_EC = 0x0701
|
||||
)
|
||||
|
||||
// Edit messages
|
||||
const (
|
||||
EM_GETSEL = 0x00B0
|
||||
EM_SETSEL = 0x00B1
|
||||
EM_GETRECT = 0x00B2
|
||||
EM_SETRECT = 0x00B3
|
||||
EM_SETRECTNP = 0x00B4
|
||||
EM_SCROLL = 0x00B5
|
||||
EM_LINESCROLL = 0x00B6
|
||||
EM_SCROLLCARET = 0x00B7
|
||||
EM_GETMODIFY = 0x00B8
|
||||
EM_SETMODIFY = 0x00B9
|
||||
EM_GETLINECOUNT = 0x00BA
|
||||
EM_LINEINDEX = 0x00BB
|
||||
EM_SETHANDLE = 0x00BC
|
||||
EM_GETHANDLE = 0x00BD
|
||||
EM_GETTHUMB = 0x00BE
|
||||
EM_LINELENGTH = 0x00C1
|
||||
EM_REPLACESEL = 0x00C2
|
||||
EM_GETLINE = 0x00C4
|
||||
EM_LIMITTEXT = 0x00C5
|
||||
EM_CANUNDO = 0x00C6
|
||||
EM_UNDO = 0x00C7
|
||||
EM_FMTLINES = 0x00C8
|
||||
EM_LINEFROMCHAR = 0x00C9
|
||||
EM_SETTABSTOPS = 0x00CB
|
||||
EM_SETPASSWORDCHAR = 0x00CC
|
||||
EM_EMPTYUNDOBUFFER = 0x00CD
|
||||
EM_GETFIRSTVISIBLELINE = 0x00CE
|
||||
EM_SETREADONLY = 0x00CF
|
||||
EM_SETWORDBREAKPROC = 0x00D0
|
||||
EM_GETWORDBREAKPROC = 0x00D1
|
||||
EM_GETPASSWORDCHAR = 0x00D2
|
||||
EM_SETMARGINS = 0x00D3
|
||||
EM_GETMARGINS = 0x00D4
|
||||
EM_SETLIMITTEXT = EM_LIMITTEXT
|
||||
EM_GETLIMITTEXT = 0x00D5
|
||||
EM_POSFROMCHAR = 0x00D6
|
||||
EM_CHARFROMPOS = 0x00D7
|
||||
EM_SETIMESTATUS = 0x00D8
|
||||
EM_GETIMESTATUS = 0x00D9
|
||||
EM_SETCUEBANNER = 0x1501
|
||||
EM_GETCUEBANNER = 0x1502
|
||||
)
|
File diff suppressed because it is too large
Load Diff
|
@ -1,223 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type GpStatus int32
|
||||
|
||||
const (
|
||||
Ok GpStatus = 0
|
||||
GenericError GpStatus = 1
|
||||
InvalidParameter GpStatus = 2
|
||||
OutOfMemory GpStatus = 3
|
||||
ObjectBusy GpStatus = 4
|
||||
InsufficientBuffer GpStatus = 5
|
||||
NotImplemented GpStatus = 6
|
||||
Win32Error GpStatus = 7
|
||||
WrongState GpStatus = 8
|
||||
Aborted GpStatus = 9
|
||||
FileNotFound GpStatus = 10
|
||||
ValueOverflow GpStatus = 11
|
||||
AccessDenied GpStatus = 12
|
||||
UnknownImageFormat GpStatus = 13
|
||||
FontFamilyNotFound GpStatus = 14
|
||||
FontStyleNotFound GpStatus = 15
|
||||
NotTrueTypeFont GpStatus = 16
|
||||
UnsupportedGdiplusVersion GpStatus = 17
|
||||
GdiplusNotInitialized GpStatus = 18
|
||||
PropertyNotFound GpStatus = 19
|
||||
PropertyNotSupported GpStatus = 20
|
||||
ProfileNotFound GpStatus = 21
|
||||
)
|
||||
|
||||
func (s GpStatus) String() string {
|
||||
switch s {
|
||||
case Ok:
|
||||
return "Ok"
|
||||
|
||||
case GenericError:
|
||||
return "GenericError"
|
||||
|
||||
case InvalidParameter:
|
||||
return "InvalidParameter"
|
||||
|
||||
case OutOfMemory:
|
||||
return "OutOfMemory"
|
||||
|
||||
case ObjectBusy:
|
||||
return "ObjectBusy"
|
||||
|
||||
case InsufficientBuffer:
|
||||
return "InsufficientBuffer"
|
||||
|
||||
case NotImplemented:
|
||||
return "NotImplemented"
|
||||
|
||||
case Win32Error:
|
||||
return "Win32Error"
|
||||
|
||||
case WrongState:
|
||||
return "WrongState"
|
||||
|
||||
case Aborted:
|
||||
return "Aborted"
|
||||
|
||||
case FileNotFound:
|
||||
return "FileNotFound"
|
||||
|
||||
case ValueOverflow:
|
||||
return "ValueOverflow"
|
||||
|
||||
case AccessDenied:
|
||||
return "AccessDenied"
|
||||
|
||||
case UnknownImageFormat:
|
||||
return "UnknownImageFormat"
|
||||
|
||||
case FontFamilyNotFound:
|
||||
return "FontFamilyNotFound"
|
||||
|
||||
case FontStyleNotFound:
|
||||
return "FontStyleNotFound"
|
||||
|
||||
case NotTrueTypeFont:
|
||||
return "NotTrueTypeFont"
|
||||
|
||||
case UnsupportedGdiplusVersion:
|
||||
return "UnsupportedGdiplusVersion"
|
||||
|
||||
case GdiplusNotInitialized:
|
||||
return "GdiplusNotInitialized"
|
||||
|
||||
case PropertyNotFound:
|
||||
return "PropertyNotFound"
|
||||
|
||||
case PropertyNotSupported:
|
||||
return "PropertyNotSupported"
|
||||
|
||||
case ProfileNotFound:
|
||||
return "ProfileNotFound"
|
||||
}
|
||||
|
||||
return "Unknown Status Value"
|
||||
}
|
||||
|
||||
type GdiplusStartupInput struct {
|
||||
GdiplusVersion uint32
|
||||
DebugEventCallback uintptr
|
||||
SuppressBackgroundThread BOOL
|
||||
SuppressExternalCodecs BOOL
|
||||
}
|
||||
|
||||
type GdiplusStartupOutput struct {
|
||||
NotificationHook uintptr
|
||||
NotificationUnhook uintptr
|
||||
}
|
||||
|
||||
type GpImage struct{}
|
||||
|
||||
type GpBitmap GpImage
|
||||
|
||||
type ARGB uint32
|
||||
|
||||
var (
|
||||
// Library
|
||||
libgdiplus uintptr
|
||||
|
||||
// Functions
|
||||
gdipCreateBitmapFromFile uintptr
|
||||
gdipCreateBitmapFromHBITMAP uintptr
|
||||
gdipCreateHBITMAPFromBitmap uintptr
|
||||
gdipDisposeImage uintptr
|
||||
gdiplusShutdown uintptr
|
||||
gdiplusStartup uintptr
|
||||
)
|
||||
|
||||
var (
|
||||
token uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libgdiplus = MustLoadLibrary("gdiplus.dll")
|
||||
|
||||
// Functions
|
||||
gdipCreateBitmapFromFile = MustGetProcAddress(libgdiplus, "GdipCreateBitmapFromFile")
|
||||
gdipCreateBitmapFromHBITMAP = MustGetProcAddress(libgdiplus, "GdipCreateBitmapFromHBITMAP")
|
||||
gdipCreateHBITMAPFromBitmap = MustGetProcAddress(libgdiplus, "GdipCreateHBITMAPFromBitmap")
|
||||
gdipDisposeImage = MustGetProcAddress(libgdiplus, "GdipDisposeImage")
|
||||
gdiplusShutdown = MustGetProcAddress(libgdiplus, "GdiplusShutdown")
|
||||
gdiplusStartup = MustGetProcAddress(libgdiplus, "GdiplusStartup")
|
||||
}
|
||||
|
||||
func GdipCreateBitmapFromFile(filename *uint16, bitmap **GpBitmap) GpStatus {
|
||||
ret, _, _ := syscall.Syscall(gdipCreateBitmapFromFile, 2,
|
||||
uintptr(unsafe.Pointer(filename)),
|
||||
uintptr(unsafe.Pointer(bitmap)),
|
||||
0)
|
||||
|
||||
return GpStatus(ret)
|
||||
}
|
||||
|
||||
func GdipCreateBitmapFromHBITMAP(hbm HBITMAP, hpal HPALETTE, bitmap **GpBitmap) GpStatus {
|
||||
ret, _, _ := syscall.Syscall(gdipCreateBitmapFromHBITMAP, 3,
|
||||
uintptr(hbm),
|
||||
uintptr(hpal),
|
||||
uintptr(unsafe.Pointer(bitmap)))
|
||||
|
||||
return GpStatus(ret)
|
||||
}
|
||||
|
||||
func GdipCreateHBITMAPFromBitmap(bitmap *GpBitmap, hbmReturn *HBITMAP, background ARGB) GpStatus {
|
||||
ret, _, _ := syscall.Syscall(gdipCreateHBITMAPFromBitmap, 3,
|
||||
uintptr(unsafe.Pointer(bitmap)),
|
||||
uintptr(unsafe.Pointer(hbmReturn)),
|
||||
uintptr(background))
|
||||
|
||||
return GpStatus(ret)
|
||||
}
|
||||
|
||||
func GdipDisposeImage(image *GpImage) GpStatus {
|
||||
ret, _, _ := syscall.Syscall(gdipDisposeImage, 1,
|
||||
uintptr(unsafe.Pointer(image)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return GpStatus(ret)
|
||||
}
|
||||
|
||||
func GdiplusShutdown() {
|
||||
syscall.Syscall(gdiplusShutdown, 1,
|
||||
token,
|
||||
0,
|
||||
0)
|
||||
}
|
||||
|
||||
func GdiplusStartup(input *GdiplusStartupInput, output *GdiplusStartupOutput) GpStatus {
|
||||
ret, _, _ := syscall.Syscall(gdiplusStartup, 3,
|
||||
uintptr(unsafe.Pointer(&token)),
|
||||
uintptr(unsafe.Pointer(input)),
|
||||
uintptr(unsafe.Pointer(output)))
|
||||
|
||||
return GpStatus(ret)
|
||||
}
|
||||
|
||||
/*GdipSaveImageToFile(image *GpImage, filename *uint16, clsidEncoder *CLSID, encoderParams *EncoderParameters) GpStatus {
|
||||
ret, _, _ := syscall.Syscall6(gdipSaveImageToFile, 4,
|
||||
uintptr(unsafe.Pointer(image)),
|
||||
uintptr(unsafe.Pointer(filename)),
|
||||
uintptr(unsafe.Pointer(clsidEncoder)),
|
||||
uintptr(unsafe.Pointer(encoderParams)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return GpStatus(ret)
|
||||
}*/
|
|
@ -1,40 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const (
|
||||
HDF_SORTDOWN = 0x200
|
||||
HDF_SORTUP = 0x400
|
||||
)
|
||||
|
||||
const (
|
||||
HDI_FORMAT = 4
|
||||
)
|
||||
|
||||
const (
|
||||
HDM_FIRST = 0x1200
|
||||
HDM_GETITEM = HDM_FIRST + 11
|
||||
HDM_SETITEM = HDM_FIRST + 12
|
||||
)
|
||||
|
||||
const (
|
||||
HDS_NOSIZING = 0x0800
|
||||
)
|
||||
|
||||
type HDITEM struct {
|
||||
Mask uint32
|
||||
Cxy int32
|
||||
PszText *uint16
|
||||
Hbm HBITMAP
|
||||
CchTextMax int32
|
||||
Fmt int32
|
||||
LParam uintptr
|
||||
IImage int32
|
||||
IOrder int32
|
||||
Type uint32
|
||||
PvFilter uintptr
|
||||
}
|
|
@ -1,352 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const MAX_PATH = 260
|
||||
|
||||
// Error codes
|
||||
const (
|
||||
ERROR_SUCCESS = 0
|
||||
ERROR_INVALID_FUNCTION = 1
|
||||
ERROR_FILE_NOT_FOUND = 2
|
||||
ERROR_INVALID_PARAMETER = 87
|
||||
ERROR_INSUFFICIENT_BUFFER = 122
|
||||
ERROR_MORE_DATA = 234
|
||||
)
|
||||
|
||||
// GlobalAlloc flags
|
||||
const (
|
||||
GHND = 0x0042
|
||||
GMEM_FIXED = 0x0000
|
||||
GMEM_MOVEABLE = 0x0002
|
||||
GMEM_ZEROINIT = 0x0040
|
||||
GPTR = 0x004
|
||||
)
|
||||
|
||||
// Predefined locale ids
|
||||
const (
|
||||
LOCALE_CUSTOM_DEFAULT LCID = 0x0c00
|
||||
LOCALE_CUSTOM_UI_DEFAULT LCID = 0x1400
|
||||
LOCALE_CUSTOM_UNSPECIFIED LCID = 0x1000
|
||||
LOCALE_INVARIANT LCID = 0x007f
|
||||
LOCALE_USER_DEFAULT LCID = 0x0400
|
||||
LOCALE_SYSTEM_DEFAULT LCID = 0x0800
|
||||
)
|
||||
|
||||
// LCTYPE constants
|
||||
const (
|
||||
LOCALE_SDECIMAL LCTYPE = 14
|
||||
LOCALE_STHOUSAND LCTYPE = 15
|
||||
LOCALE_SISO3166CTRYNAME LCTYPE = 0x5a
|
||||
LOCALE_SISO3166CTRYNAME2 LCTYPE = 0x68
|
||||
LOCALE_SISO639LANGNAME LCTYPE = 0x59
|
||||
LOCALE_SISO639LANGNAME2 LCTYPE = 0x67
|
||||
)
|
||||
|
||||
var (
|
||||
// Library
|
||||
libkernel32 uintptr
|
||||
|
||||
// Functions
|
||||
closeHandle uintptr
|
||||
fileTimeToSystemTime uintptr
|
||||
getConsoleTitle uintptr
|
||||
getConsoleWindow uintptr
|
||||
getLastError uintptr
|
||||
getLocaleInfo uintptr
|
||||
getLogicalDriveStrings uintptr
|
||||
getModuleHandle uintptr
|
||||
getNumberFormat uintptr
|
||||
getThreadLocale uintptr
|
||||
getThreadUILanguage uintptr
|
||||
getVersion uintptr
|
||||
globalAlloc uintptr
|
||||
globalFree uintptr
|
||||
globalLock uintptr
|
||||
globalUnlock uintptr
|
||||
moveMemory uintptr
|
||||
mulDiv uintptr
|
||||
setLastError uintptr
|
||||
systemTimeToFileTime uintptr
|
||||
getProfileString uintptr
|
||||
getPhysicallyInstalledSystemMemory uintptr
|
||||
)
|
||||
|
||||
type (
|
||||
ATOM uint16
|
||||
HANDLE uintptr
|
||||
HGLOBAL HANDLE
|
||||
HINSTANCE HANDLE
|
||||
LCID uint32
|
||||
LCTYPE uint32
|
||||
LANGID uint16
|
||||
)
|
||||
|
||||
type FILETIME struct {
|
||||
DwLowDateTime uint32
|
||||
DwHighDateTime uint32
|
||||
}
|
||||
|
||||
type NUMBERFMT struct {
|
||||
NumDigits uint32
|
||||
LeadingZero uint32
|
||||
Grouping uint32
|
||||
LpDecimalSep *uint16
|
||||
LpThousandSep *uint16
|
||||
NegativeOrder uint32
|
||||
}
|
||||
|
||||
type SYSTEMTIME struct {
|
||||
WYear uint16
|
||||
WMonth uint16
|
||||
WDayOfWeek uint16
|
||||
WDay uint16
|
||||
WHour uint16
|
||||
WMinute uint16
|
||||
WSecond uint16
|
||||
WMilliseconds uint16
|
||||
}
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libkernel32 = MustLoadLibrary("kernel32.dll")
|
||||
|
||||
// Functions
|
||||
closeHandle = MustGetProcAddress(libkernel32, "CloseHandle")
|
||||
fileTimeToSystemTime = MustGetProcAddress(libkernel32, "FileTimeToSystemTime")
|
||||
getConsoleTitle = MustGetProcAddress(libkernel32, "GetConsoleTitleW")
|
||||
getConsoleWindow = MustGetProcAddress(libkernel32, "GetConsoleWindow")
|
||||
getLastError = MustGetProcAddress(libkernel32, "GetLastError")
|
||||
getLocaleInfo = MustGetProcAddress(libkernel32, "GetLocaleInfoW")
|
||||
getLogicalDriveStrings = MustGetProcAddress(libkernel32, "GetLogicalDriveStringsW")
|
||||
getModuleHandle = MustGetProcAddress(libkernel32, "GetModuleHandleW")
|
||||
getNumberFormat = MustGetProcAddress(libkernel32, "GetNumberFormatW")
|
||||
getProfileString = MustGetProcAddress(libkernel32, "GetProfileStringW")
|
||||
getThreadLocale = MustGetProcAddress(libkernel32, "GetThreadLocale")
|
||||
getThreadUILanguage, _ = syscall.GetProcAddress(syscall.Handle(libkernel32), "GetThreadUILanguage")
|
||||
getVersion = MustGetProcAddress(libkernel32, "GetVersion")
|
||||
globalAlloc = MustGetProcAddress(libkernel32, "GlobalAlloc")
|
||||
globalFree = MustGetProcAddress(libkernel32, "GlobalFree")
|
||||
globalLock = MustGetProcAddress(libkernel32, "GlobalLock")
|
||||
globalUnlock = MustGetProcAddress(libkernel32, "GlobalUnlock")
|
||||
moveMemory = MustGetProcAddress(libkernel32, "RtlMoveMemory")
|
||||
mulDiv = MustGetProcAddress(libkernel32, "MulDiv")
|
||||
setLastError = MustGetProcAddress(libkernel32, "SetLastError")
|
||||
systemTimeToFileTime = MustGetProcAddress(libkernel32, "SystemTimeToFileTime")
|
||||
getPhysicallyInstalledSystemMemory = MustGetProcAddress(libkernel32, "GetPhysicallyInstalledSystemMemory")
|
||||
|
||||
}
|
||||
|
||||
func CloseHandle(hObject HANDLE) bool {
|
||||
ret, _, _ := syscall.Syscall(closeHandle, 1,
|
||||
uintptr(hObject),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func FileTimeToSystemTime(lpFileTime *FILETIME, lpSystemTime *SYSTEMTIME) bool {
|
||||
ret, _, _ := syscall.Syscall(fileTimeToSystemTime, 2,
|
||||
uintptr(unsafe.Pointer(lpFileTime)),
|
||||
uintptr(unsafe.Pointer(lpSystemTime)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func GetConsoleTitle(lpConsoleTitle *uint16, nSize uint32) uint32 {
|
||||
ret, _, _ := syscall.Syscall(getConsoleTitle, 2,
|
||||
uintptr(unsafe.Pointer(lpConsoleTitle)),
|
||||
uintptr(nSize),
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func GetConsoleWindow() HWND {
|
||||
ret, _, _ := syscall.Syscall(getConsoleWindow, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return HWND(ret)
|
||||
}
|
||||
|
||||
func GetLastError() uint32 {
|
||||
ret, _, _ := syscall.Syscall(getLastError, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func GetLocaleInfo(Locale LCID, LCType LCTYPE, lpLCData *uint16, cchData int32) int32 {
|
||||
ret, _, _ := syscall.Syscall6(getLocaleInfo, 4,
|
||||
uintptr(Locale),
|
||||
uintptr(LCType),
|
||||
uintptr(unsafe.Pointer(lpLCData)),
|
||||
uintptr(cchData),
|
||||
0,
|
||||
0)
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func GetLogicalDriveStrings(nBufferLength uint32, lpBuffer *uint16) uint32 {
|
||||
ret, _, _ := syscall.Syscall(getLogicalDriveStrings, 2,
|
||||
uintptr(nBufferLength),
|
||||
uintptr(unsafe.Pointer(lpBuffer)),
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func GetModuleHandle(lpModuleName *uint16) HINSTANCE {
|
||||
ret, _, _ := syscall.Syscall(getModuleHandle, 1,
|
||||
uintptr(unsafe.Pointer(lpModuleName)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HINSTANCE(ret)
|
||||
}
|
||||
|
||||
func GetNumberFormat(Locale LCID, dwFlags uint32, lpValue *uint16, lpFormat *NUMBERFMT, lpNumberStr *uint16, cchNumber int32) int32 {
|
||||
ret, _, _ := syscall.Syscall6(getNumberFormat, 6,
|
||||
uintptr(Locale),
|
||||
uintptr(dwFlags),
|
||||
uintptr(unsafe.Pointer(lpValue)),
|
||||
uintptr(unsafe.Pointer(lpFormat)),
|
||||
uintptr(unsafe.Pointer(lpNumberStr)),
|
||||
uintptr(cchNumber))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func GetProfileString(lpAppName, lpKeyName, lpDefault *uint16, lpReturnedString uintptr, nSize uint32) bool {
|
||||
ret, _, _ := syscall.Syscall6(getProfileString, 5,
|
||||
uintptr(unsafe.Pointer(lpAppName)),
|
||||
uintptr(unsafe.Pointer(lpKeyName)),
|
||||
uintptr(unsafe.Pointer(lpDefault)),
|
||||
lpReturnedString,
|
||||
uintptr(nSize),
|
||||
0)
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func GetThreadLocale() LCID {
|
||||
ret, _, _ := syscall.Syscall(getThreadLocale, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return LCID(ret)
|
||||
}
|
||||
|
||||
func GetThreadUILanguage() LANGID {
|
||||
if getThreadUILanguage == 0 {
|
||||
return 0
|
||||
}
|
||||
|
||||
ret, _, _ := syscall.Syscall(getThreadUILanguage, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return LANGID(ret)
|
||||
}
|
||||
|
||||
func GetVersion() int64 {
|
||||
ret, _, _ := syscall.Syscall(getVersion, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
return int64(ret)
|
||||
}
|
||||
|
||||
func GlobalAlloc(uFlags uint32, dwBytes uintptr) HGLOBAL {
|
||||
ret, _, _ := syscall.Syscall(globalAlloc, 2,
|
||||
uintptr(uFlags),
|
||||
dwBytes,
|
||||
0)
|
||||
|
||||
return HGLOBAL(ret)
|
||||
}
|
||||
|
||||
func GlobalFree(hMem HGLOBAL) HGLOBAL {
|
||||
ret, _, _ := syscall.Syscall(globalFree, 1,
|
||||
uintptr(hMem),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HGLOBAL(ret)
|
||||
}
|
||||
|
||||
func GlobalLock(hMem HGLOBAL) unsafe.Pointer {
|
||||
ret, _, _ := syscall.Syscall(globalLock, 1,
|
||||
uintptr(hMem),
|
||||
0,
|
||||
0)
|
||||
|
||||
return unsafe.Pointer(ret)
|
||||
}
|
||||
|
||||
func GlobalUnlock(hMem HGLOBAL) bool {
|
||||
ret, _, _ := syscall.Syscall(globalUnlock, 1,
|
||||
uintptr(hMem),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func MoveMemory(destination, source unsafe.Pointer, length uintptr) {
|
||||
syscall.Syscall(moveMemory, 3,
|
||||
uintptr(unsafe.Pointer(destination)),
|
||||
uintptr(source),
|
||||
uintptr(length))
|
||||
}
|
||||
|
||||
func MulDiv(nNumber, nNumerator, nDenominator int32) int32 {
|
||||
ret, _, _ := syscall.Syscall(mulDiv, 3,
|
||||
uintptr(nNumber),
|
||||
uintptr(nNumerator),
|
||||
uintptr(nDenominator))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func SetLastError(dwErrorCode uint32) {
|
||||
syscall.Syscall(setLastError, 1,
|
||||
uintptr(dwErrorCode),
|
||||
0,
|
||||
0)
|
||||
}
|
||||
|
||||
func SystemTimeToFileTime(lpSystemTime *SYSTEMTIME, lpFileTime *FILETIME) bool {
|
||||
ret, _, _ := syscall.Syscall(systemTimeToFileTime, 2,
|
||||
uintptr(unsafe.Pointer(lpSystemTime)),
|
||||
uintptr(unsafe.Pointer(lpFileTime)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func GetPhysicallyInstalledSystemMemory(totalMemoryInKilobytes *uint64) bool {
|
||||
ret, _, _ := syscall.Syscall(getPhysicallyInstalledSystemMemory, 1,
|
||||
uintptr(unsafe.Pointer(totalMemoryInKilobytes)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// ListBox style
|
||||
const (
|
||||
LBS_NOTIFY = 0x0001
|
||||
LBS_SORT = 0x0002
|
||||
LBS_NOREDRAW = 0x0004
|
||||
LBS_MULTIPLESEL = 0x0008
|
||||
LBS_OWNERDRAWFIXED = 0x0010
|
||||
LBS_OWNERDRAWVARIABLE = 0x0020
|
||||
LBS_HASSTRINGS = 0x0040
|
||||
LBS_USETABSTOPS = 0x0080
|
||||
LBS_NOINTEGRALHEIGHT = 0x0100
|
||||
LBS_MULTICOLUMN = 0x0200
|
||||
LBS_WANTKEYBOARDINPUT = 0x0400
|
||||
LBS_EXTENDEDSEL = 0x0800
|
||||
LBS_DISABLENOSCROLL = 0x1000
|
||||
LBS_NODATA = 0x2000
|
||||
LBS_NOSEL = 0x4000
|
||||
LBS_COMBOBOX = 0x8000
|
||||
LBS_STANDARD = LBS_NOTIFY | LBS_SORT | WS_BORDER | WS_VSCROLL
|
||||
)
|
||||
|
||||
// ListBox messages
|
||||
const (
|
||||
LB_ADDSTRING = 0x0180
|
||||
LB_INSERTSTRING = 0x0181
|
||||
LB_DELETESTRING = 0x0182
|
||||
LB_SELITEMRANGEEX = 0x0183
|
||||
LB_RESETCONTENT = 0x0184
|
||||
LB_SETSEL = 0x0185
|
||||
LB_SETCURSEL = 0x0186
|
||||
LB_GETSEL = 0x0187
|
||||
LB_GETCURSEL = 0x0188
|
||||
LB_GETTEXT = 0x0189
|
||||
LB_GETTEXTLEN = 0x018A
|
||||
LB_GETCOUNT = 0x018B
|
||||
LB_SELECTSTRING = 0x018C
|
||||
LB_DIR = 0x018D
|
||||
LB_GETTOPINDEX = 0x018E
|
||||
LB_FINDSTRING = 0x018F
|
||||
LB_GETSELCOUNT = 0x0190
|
||||
LB_GETSELITEMS = 0x0191
|
||||
LB_SETTABSTOPS = 0x0192
|
||||
LB_GETHORIZONTALEXTENT = 0x0193
|
||||
LB_SETHORIZONTALEXTENT = 0x0194
|
||||
LB_SETCOLUMNWIDTH = 0x0195
|
||||
LB_ADDFILE = 0x0196
|
||||
LB_SETTOPINDEX = 0x0197
|
||||
LB_GETITEMRECT = 0x0198
|
||||
LB_GETITEMDATA = 0x0199
|
||||
LB_SETITEMDATA = 0x019A
|
||||
LB_SELITEMRANGE = 0x019B
|
||||
LB_SETANCHORINDEX = 0x019C
|
||||
LB_GETANCHORINDEX = 0x019D
|
||||
LB_SETCARETINDEX = 0x019E
|
||||
LB_GETCARETINDEX = 0x019F
|
||||
LB_SETITEMHEIGHT = 0x01A0
|
||||
LB_GETITEMHEIGHT = 0x01A1
|
||||
LB_FINDSTRINGEXACT = 0x01A2
|
||||
LB_SETLOCALE = 0x01A5
|
||||
LB_GETLOCALE = 0x01A6
|
||||
LB_SETCOUNT = 0x01A7
|
||||
LB_INITSTORAGE = 0x01A8
|
||||
LB_ITEMFROMPOINT = 0x01A9
|
||||
LB_MULTIPLEADDSTRING = 0x01B1
|
||||
)
|
||||
|
||||
//Listbox Notification Codes
|
||||
const (
|
||||
LBN_ERRSPACE = -2
|
||||
LBN_SELCHANGE = 1
|
||||
LBN_DBLCLK = 2
|
||||
LBN_SELCANCEL = 3
|
||||
LBN_SETFOCUS = 4
|
||||
LBN_KILLFOCUS = 5
|
||||
)
|
||||
const (
|
||||
LB_ERR = -1
|
||||
LB_ERRSPACE = -2
|
||||
)
|
|
@ -1,370 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const (
|
||||
LVSCW_AUTOSIZE = ^uintptr(0)
|
||||
LVSCW_AUTOSIZE_USEHEADER = ^uintptr(1)
|
||||
)
|
||||
|
||||
// LVM_SETITEMCOUNT flags
|
||||
const (
|
||||
LVSICF_NOINVALIDATEALL = 0x0001
|
||||
LVSICF_NOSCROLL = 0x0002
|
||||
)
|
||||
|
||||
// ListView messages
|
||||
const (
|
||||
LVM_FIRST = 0x1000
|
||||
LVM_SETIMAGELIST = LVM_FIRST + 3
|
||||
LVM_GETITEM = LVM_FIRST + 75
|
||||
LVM_SETITEM = LVM_FIRST + 76
|
||||
LVM_INSERTITEM = LVM_FIRST + 77
|
||||
LVM_DELETEITEM = LVM_FIRST + 8
|
||||
LVM_DELETEALLITEMS = LVM_FIRST + 9
|
||||
LVM_GETCALLBACKMASK = LVM_FIRST + 10
|
||||
LVM_SETCALLBACKMASK = LVM_FIRST + 11
|
||||
LVM_GETNEXTITEM = LVM_FIRST + 12
|
||||
LVM_FINDITEM = LVM_FIRST + 83
|
||||
LVM_GETITEMRECT = LVM_FIRST + 14
|
||||
LVM_GETSTRINGWIDTH = LVM_FIRST + 87
|
||||
LVM_HITTEST = LVM_FIRST + 18
|
||||
LVM_ENSUREVISIBLE = LVM_FIRST + 19
|
||||
LVM_SCROLL = LVM_FIRST + 20
|
||||
LVM_REDRAWITEMS = LVM_FIRST + 21
|
||||
LVM_ARRANGE = LVM_FIRST + 22
|
||||
LVM_EDITLABEL = LVM_FIRST + 118
|
||||
LVM_GETEDITCONTROL = LVM_FIRST + 24
|
||||
LVM_GETCOLUMN = LVM_FIRST + 95
|
||||
LVM_SETCOLUMN = LVM_FIRST + 96
|
||||
LVM_INSERTCOLUMN = LVM_FIRST + 97
|
||||
LVM_DELETECOLUMN = LVM_FIRST + 28
|
||||
LVM_GETCOLUMNWIDTH = LVM_FIRST + 29
|
||||
LVM_SETCOLUMNWIDTH = LVM_FIRST + 30
|
||||
LVM_GETHEADER = LVM_FIRST + 31
|
||||
LVM_CREATEDRAGIMAGE = LVM_FIRST + 33
|
||||
LVM_GETVIEWRECT = LVM_FIRST + 34
|
||||
LVM_GETTEXTCOLOR = LVM_FIRST + 35
|
||||
LVM_SETTEXTCOLOR = LVM_FIRST + 36
|
||||
LVM_GETTEXTBKCOLOR = LVM_FIRST + 37
|
||||
LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
|
||||
LVM_GETTOPINDEX = LVM_FIRST + 39
|
||||
LVM_GETCOUNTPERPAGE = LVM_FIRST + 40
|
||||
LVM_GETORIGIN = LVM_FIRST + 41
|
||||
LVM_UPDATE = LVM_FIRST + 42
|
||||
LVM_SETITEMSTATE = LVM_FIRST + 43
|
||||
LVM_GETITEMSTATE = LVM_FIRST + 44
|
||||
LVM_GETITEMTEXT = LVM_FIRST + 115
|
||||
LVM_SETITEMTEXT = LVM_FIRST + 116
|
||||
LVM_SETITEMCOUNT = LVM_FIRST + 47
|
||||
LVM_SORTITEMS = LVM_FIRST + 48
|
||||
LVM_SETITEMPOSITION32 = LVM_FIRST + 49
|
||||
LVM_GETSELECTEDCOUNT = LVM_FIRST + 50
|
||||
LVM_GETITEMSPACING = LVM_FIRST + 51
|
||||
LVM_GETISEARCHSTRING = LVM_FIRST + 117
|
||||
LVM_SETICONSPACING = LVM_FIRST + 53
|
||||
LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54
|
||||
LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55
|
||||
LVM_GETSUBITEMRECT = LVM_FIRST + 56
|
||||
LVM_SUBITEMHITTEST = LVM_FIRST + 57
|
||||
LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58
|
||||
LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59
|
||||
LVM_SETHOTITEM = LVM_FIRST + 60
|
||||
LVM_GETHOTITEM = LVM_FIRST + 61
|
||||
LVM_SETHOTCURSOR = LVM_FIRST + 62
|
||||
LVM_GETHOTCURSOR = LVM_FIRST + 63
|
||||
LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64
|
||||
LVM_SETWORKAREAS = LVM_FIRST + 65
|
||||
LVM_GETWORKAREAS = LVM_FIRST + 70
|
||||
LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73
|
||||
LVM_GETSELECTIONMARK = LVM_FIRST + 66
|
||||
LVM_SETSELECTIONMARK = LVM_FIRST + 67
|
||||
LVM_SETHOVERTIME = LVM_FIRST + 71
|
||||
LVM_GETHOVERTIME = LVM_FIRST + 72
|
||||
LVM_SETTOOLTIPS = LVM_FIRST + 74
|
||||
LVM_GETTOOLTIPS = LVM_FIRST + 78
|
||||
LVM_SORTITEMSEX = LVM_FIRST + 81
|
||||
LVM_SETBKIMAGE = LVM_FIRST + 138
|
||||
LVM_GETBKIMAGE = LVM_FIRST + 139
|
||||
LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140
|
||||
LVM_SETVIEW = LVM_FIRST + 142
|
||||
LVM_GETVIEW = LVM_FIRST + 143
|
||||
LVM_INSERTGROUP = LVM_FIRST + 145
|
||||
LVM_SETGROUPINFO = LVM_FIRST + 147
|
||||
LVM_GETGROUPINFO = LVM_FIRST + 149
|
||||
LVM_REMOVEGROUP = LVM_FIRST + 150
|
||||
LVM_MOVEGROUP = LVM_FIRST + 151
|
||||
LVM_GETGROUPCOUNT = LVM_FIRST + 152
|
||||
LVM_GETGROUPINFOBYINDEX = LVM_FIRST + 153
|
||||
LVM_MOVEITEMTOGROUP = LVM_FIRST + 154
|
||||
LVM_GETGROUPRECT = LVM_FIRST + 98
|
||||
LVM_SETGROUPMETRICS = LVM_FIRST + 155
|
||||
LVM_GETGROUPMETRICS = LVM_FIRST + 156
|
||||
LVM_ENABLEGROUPVIEW = LVM_FIRST + 157
|
||||
LVM_SORTGROUPS = LVM_FIRST + 158
|
||||
LVM_INSERTGROUPSORTED = LVM_FIRST + 159
|
||||
LVM_REMOVEALLGROUPS = LVM_FIRST + 160
|
||||
LVM_HASGROUP = LVM_FIRST + 161
|
||||
LVM_GETGROUPSTATE = LVM_FIRST + 92
|
||||
LVM_GETFOCUSEDGROUP = LVM_FIRST + 93
|
||||
LVM_SETTILEVIEWINFO = LVM_FIRST + 162
|
||||
LVM_GETTILEVIEWINFO = LVM_FIRST + 163
|
||||
LVM_SETTILEINFO = LVM_FIRST + 164
|
||||
LVM_GETTILEINFO = LVM_FIRST + 165
|
||||
LVM_SETINSERTMARK = LVM_FIRST + 166
|
||||
LVM_GETINSERTMARK = LVM_FIRST + 167
|
||||
LVM_INSERTMARKHITTEST = LVM_FIRST + 168
|
||||
LVM_GETINSERTMARKRECT = LVM_FIRST + 169
|
||||
LVM_SETINSERTMARKCOLOR = LVM_FIRST + 170
|
||||
LVM_GETINSERTMARKCOLOR = LVM_FIRST + 171
|
||||
LVM_SETINFOTIP = LVM_FIRST + 173
|
||||
LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174
|
||||
LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175
|
||||
LVM_GETOUTLINECOLOR = LVM_FIRST + 176
|
||||
LVM_SETOUTLINECOLOR = LVM_FIRST + 177
|
||||
LVM_CANCELEDITLABEL = LVM_FIRST + 179
|
||||
LVM_MAPINDEXTOID = LVM_FIRST + 180
|
||||
LVM_MAPIDTOINDEX = LVM_FIRST + 181
|
||||
LVM_ISITEMVISIBLE = LVM_FIRST + 182
|
||||
LVM_GETNEXTITEMINDEX = LVM_FIRST + 211
|
||||
)
|
||||
|
||||
// ListView notifications
|
||||
const (
|
||||
LVN_FIRST = ^uint32(99) // -100
|
||||
|
||||
LVN_ITEMCHANGING = LVN_FIRST - 0
|
||||
LVN_ITEMCHANGED = LVN_FIRST - 1
|
||||
LVN_INSERTITEM = LVN_FIRST - 2
|
||||
LVN_DELETEITEM = LVN_FIRST - 3
|
||||
LVN_DELETEALLITEMS = LVN_FIRST - 4
|
||||
LVN_BEGINLABELEDIT = LVN_FIRST - 75
|
||||
LVN_ENDLABELEDIT = LVN_FIRST - 76
|
||||
LVN_COLUMNCLICK = LVN_FIRST - 8
|
||||
LVN_BEGINDRAG = LVN_FIRST - 9
|
||||
LVN_BEGINRDRAG = LVN_FIRST - 11
|
||||
LVN_ODCACHEHINT = LVN_FIRST - 13
|
||||
LVN_ODFINDITEM = LVN_FIRST - 79
|
||||
LVN_ITEMACTIVATE = LVN_FIRST - 14
|
||||
LVN_ODSTATECHANGED = LVN_FIRST - 15
|
||||
LVN_HOTTRACK = LVN_FIRST - 21
|
||||
LVN_GETDISPINFO = LVN_FIRST - 77
|
||||
LVN_SETDISPINFO = LVN_FIRST - 78
|
||||
LVN_KEYDOWN = LVN_FIRST - 55
|
||||
LVN_MARQUEEBEGIN = LVN_FIRST - 56
|
||||
LVN_GETINFOTIP = LVN_FIRST - 58
|
||||
LVN_INCREMENTALSEARCH = LVN_FIRST - 63
|
||||
LVN_BEGINSCROLL = LVN_FIRST - 80
|
||||
LVN_ENDSCROLL = LVN_FIRST - 81
|
||||
)
|
||||
|
||||
// ListView LVNI constants
|
||||
const (
|
||||
LVNI_ALL = 0
|
||||
LVNI_FOCUSED = 1
|
||||
LVNI_SELECTED = 2
|
||||
LVNI_CUT = 4
|
||||
LVNI_DROPHILITED = 8
|
||||
LVNI_ABOVE = 256
|
||||
LVNI_BELOW = 512
|
||||
LVNI_TOLEFT = 1024
|
||||
LVNI_TORIGHT = 2048
|
||||
)
|
||||
|
||||
// ListView styles
|
||||
const (
|
||||
LVS_ICON = 0x0000
|
||||
LVS_REPORT = 0x0001
|
||||
LVS_SMALLICON = 0x0002
|
||||
LVS_LIST = 0x0003
|
||||
LVS_TYPEMASK = 0x0003
|
||||
LVS_SINGLESEL = 0x0004
|
||||
LVS_SHOWSELALWAYS = 0x0008
|
||||
LVS_SORTASCENDING = 0x0010
|
||||
LVS_SORTDESCENDING = 0x0020
|
||||
LVS_SHAREIMAGELISTS = 0x0040
|
||||
LVS_NOLABELWRAP = 0x0080
|
||||
LVS_AUTOARRANGE = 0x0100
|
||||
LVS_EDITLABELS = 0x0200
|
||||
LVS_OWNERDATA = 0x1000
|
||||
LVS_NOSCROLL = 0x2000
|
||||
LVS_TYPESTYLEMASK = 0xfc00
|
||||
LVS_ALIGNTOP = 0x0000
|
||||
LVS_ALIGNLEFT = 0x0800
|
||||
LVS_ALIGNMASK = 0x0c00
|
||||
LVS_OWNERDRAWFIXED = 0x0400
|
||||
LVS_NOCOLUMNHEADER = 0x4000
|
||||
LVS_NOSORTHEADER = 0x8000
|
||||
)
|
||||
|
||||
// ListView extended styles
|
||||
const (
|
||||
LVS_EX_GRIDLINES = 0x00000001
|
||||
LVS_EX_SUBITEMIMAGES = 0x00000002
|
||||
LVS_EX_CHECKBOXES = 0x00000004
|
||||
LVS_EX_TRACKSELECT = 0x00000008
|
||||
LVS_EX_HEADERDRAGDROP = 0x00000010
|
||||
LVS_EX_FULLROWSELECT = 0x00000020
|
||||
LVS_EX_ONECLICKACTIVATE = 0x00000040
|
||||
LVS_EX_TWOCLICKACTIVATE = 0x00000080
|
||||
LVS_EX_FLATSB = 0x00000100
|
||||
LVS_EX_REGIONAL = 0x00000200
|
||||
LVS_EX_INFOTIP = 0x00000400
|
||||
LVS_EX_UNDERLINEHOT = 0x00000800
|
||||
LVS_EX_UNDERLINECOLD = 0x00001000
|
||||
LVS_EX_MULTIWORKAREAS = 0x00002000
|
||||
LVS_EX_LABELTIP = 0x00004000
|
||||
LVS_EX_BORDERSELECT = 0x00008000
|
||||
LVS_EX_DOUBLEBUFFER = 0x00010000
|
||||
LVS_EX_HIDELABELS = 0x00020000
|
||||
LVS_EX_SINGLEROW = 0x00040000
|
||||
LVS_EX_SNAPTOGRID = 0x00080000
|
||||
LVS_EX_SIMPLESELECT = 0x00100000
|
||||
)
|
||||
|
||||
// ListView column flags
|
||||
const (
|
||||
LVCF_FMT = 0x0001
|
||||
LVCF_WIDTH = 0x0002
|
||||
LVCF_TEXT = 0x0004
|
||||
LVCF_SUBITEM = 0x0008
|
||||
LVCF_IMAGE = 0x0010
|
||||
LVCF_ORDER = 0x0020
|
||||
)
|
||||
|
||||
// ListView column format constants
|
||||
const (
|
||||
LVCFMT_LEFT = 0x0000
|
||||
LVCFMT_RIGHT = 0x0001
|
||||
LVCFMT_CENTER = 0x0002
|
||||
LVCFMT_JUSTIFYMASK = 0x0003
|
||||
LVCFMT_IMAGE = 0x0800
|
||||
LVCFMT_BITMAP_ON_RIGHT = 0x1000
|
||||
LVCFMT_COL_HAS_IMAGES = 0x8000
|
||||
)
|
||||
|
||||
// ListView item flags
|
||||
const (
|
||||
LVIF_TEXT = 0x00000001
|
||||
LVIF_IMAGE = 0x00000002
|
||||
LVIF_PARAM = 0x00000004
|
||||
LVIF_STATE = 0x00000008
|
||||
LVIF_INDENT = 0x00000010
|
||||
LVIF_NORECOMPUTE = 0x00000800
|
||||
LVIF_GROUPID = 0x00000100
|
||||
LVIF_COLUMNS = 0x00000200
|
||||
)
|
||||
|
||||
// ListView item states
|
||||
const (
|
||||
LVIS_FOCUSED = 1
|
||||
LVIS_SELECTED = 2
|
||||
LVIS_CUT = 4
|
||||
LVIS_DROPHILITED = 8
|
||||
LVIS_OVERLAYMASK = 0xF00
|
||||
LVIS_STATEIMAGEMASK = 0xF000
|
||||
)
|
||||
|
||||
// ListView hit test constants
|
||||
const (
|
||||
LVHT_NOWHERE = 0x00000001
|
||||
LVHT_ONITEMICON = 0x00000002
|
||||
LVHT_ONITEMLABEL = 0x00000004
|
||||
LVHT_ONITEMSTATEICON = 0x00000008
|
||||
LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON
|
||||
|
||||
LVHT_ABOVE = 0x00000008
|
||||
LVHT_BELOW = 0x00000010
|
||||
LVHT_TORIGHT = 0x00000020
|
||||
LVHT_TOLEFT = 0x00000040
|
||||
)
|
||||
|
||||
// ListView image list types
|
||||
const (
|
||||
LVSIL_NORMAL = 0
|
||||
LVSIL_SMALL = 1
|
||||
LVSIL_STATE = 2
|
||||
LVSIL_GROUPHEADER = 3
|
||||
)
|
||||
|
||||
type LVCOLUMN struct {
|
||||
Mask uint32
|
||||
Fmt int32
|
||||
Cx int32
|
||||
PszText *uint16
|
||||
CchTextMax int32
|
||||
ISubItem int32
|
||||
IImage int32
|
||||
IOrder int32
|
||||
}
|
||||
|
||||
type LVITEM struct {
|
||||
Mask uint32
|
||||
IItem int32
|
||||
ISubItem int32
|
||||
State uint32
|
||||
StateMask uint32
|
||||
PszText *uint16
|
||||
CchTextMax int32
|
||||
IImage int32
|
||||
LParam uintptr
|
||||
IIndent int32
|
||||
IGroupId int32
|
||||
CColumns uint32
|
||||
PuColumns uint32
|
||||
}
|
||||
|
||||
type LVHITTESTINFO struct {
|
||||
Pt POINT
|
||||
Flags uint32
|
||||
IItem int32
|
||||
ISubItem int32
|
||||
IGroup int32
|
||||
}
|
||||
|
||||
type NMITEMACTIVATE struct {
|
||||
Hdr NMHDR
|
||||
IItem int32
|
||||
ISubItem int32
|
||||
UNewState uint32
|
||||
UOldState uint32
|
||||
UChanged uint32
|
||||
PtAction POINT
|
||||
LParam uintptr
|
||||
UKeyFlags uint32
|
||||
}
|
||||
|
||||
type NMLISTVIEW struct {
|
||||
Hdr NMHDR
|
||||
IItem int32
|
||||
ISubItem int32
|
||||
UNewState uint32
|
||||
UOldState uint32
|
||||
UChanged uint32
|
||||
PtAction POINT
|
||||
LParam uintptr
|
||||
}
|
||||
|
||||
type NMLVCUSTOMDRAW struct {
|
||||
Nmcd NMCUSTOMDRAW
|
||||
ClrText COLORREF
|
||||
ClrTextBk COLORREF
|
||||
ISubItem int32
|
||||
DwItemType uint32
|
||||
ClrFace COLORREF
|
||||
IIconEffect int32
|
||||
IIconPhase int32
|
||||
IPartId int32
|
||||
IStateId int32
|
||||
RcText RECT
|
||||
UAlign uint32
|
||||
}
|
||||
|
||||
type NMLVDISPINFO struct {
|
||||
Hdr NMHDR
|
||||
Item LVITEM
|
||||
}
|
|
@ -1,110 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// Constants for MENUITEMINFO.fMask
|
||||
const (
|
||||
MIIM_STATE = 1
|
||||
MIIM_ID = 2
|
||||
MIIM_SUBMENU = 4
|
||||
MIIM_CHECKMARKS = 8
|
||||
MIIM_TYPE = 16
|
||||
MIIM_DATA = 32
|
||||
MIIM_STRING = 64
|
||||
MIIM_BITMAP = 128
|
||||
MIIM_FTYPE = 256
|
||||
)
|
||||
|
||||
// Constants for MENUITEMINFO.fType
|
||||
const (
|
||||
MFT_BITMAP = 4
|
||||
MFT_MENUBARBREAK = 32
|
||||
MFT_MENUBREAK = 64
|
||||
MFT_OWNERDRAW = 256
|
||||
MFT_RADIOCHECK = 512
|
||||
MFT_RIGHTJUSTIFY = 0x4000
|
||||
MFT_SEPARATOR = 0x800
|
||||
MFT_RIGHTORDER = 0x2000
|
||||
MFT_STRING = 0
|
||||
)
|
||||
|
||||
// Constants for MENUITEMINFO.fState
|
||||
const (
|
||||
MFS_CHECKED = 8
|
||||
MFS_DEFAULT = 4096
|
||||
MFS_DISABLED = 3
|
||||
MFS_ENABLED = 0
|
||||
MFS_GRAYED = 3
|
||||
MFS_HILITE = 128
|
||||
MFS_UNCHECKED = 0
|
||||
MFS_UNHILITE = 0
|
||||
)
|
||||
|
||||
// Constants for MENUITEMINFO.hbmp*
|
||||
const (
|
||||
HBMMENU_CALLBACK = -1
|
||||
HBMMENU_SYSTEM = 1
|
||||
HBMMENU_MBAR_RESTORE = 2
|
||||
HBMMENU_MBAR_MINIMIZE = 3
|
||||
HBMMENU_MBAR_CLOSE = 5
|
||||
HBMMENU_MBAR_CLOSE_D = 6
|
||||
HBMMENU_MBAR_MINIMIZE_D = 7
|
||||
HBMMENU_POPUP_CLOSE = 8
|
||||
HBMMENU_POPUP_RESTORE = 9
|
||||
HBMMENU_POPUP_MAXIMIZE = 10
|
||||
HBMMENU_POPUP_MINIMIZE = 11
|
||||
)
|
||||
|
||||
// MENUINFO mask constants
|
||||
const (
|
||||
MIM_APPLYTOSUBMENUS = 0x80000000
|
||||
MIM_BACKGROUND = 0x00000002
|
||||
MIM_HELPID = 0x00000004
|
||||
MIM_MAXHEIGHT = 0x00000001
|
||||
MIM_MENUDATA = 0x00000008
|
||||
MIM_STYLE = 0x00000010
|
||||
)
|
||||
|
||||
// MENUINFO style constants
|
||||
const (
|
||||
MNS_AUTODISMISS = 0x10000000
|
||||
MNS_CHECKORBMP = 0x04000000
|
||||
MNS_DRAGDROP = 0x20000000
|
||||
MNS_MODELESS = 0x40000000
|
||||
MNS_NOCHECK = 0x80000000
|
||||
MNS_NOTIFYBYPOS = 0x08000000
|
||||
)
|
||||
|
||||
const (
|
||||
MF_BYCOMMAND = 0x00000000
|
||||
MF_BYPOSITION = 0x00000400
|
||||
)
|
||||
|
||||
type MENUITEMINFO struct {
|
||||
CbSize uint32
|
||||
FMask uint32
|
||||
FType uint32
|
||||
FState uint32
|
||||
WID uint32
|
||||
HSubMenu HMENU
|
||||
HbmpChecked HBITMAP
|
||||
HbmpUnchecked HBITMAP
|
||||
DwItemData uintptr
|
||||
DwTypeData *uint16
|
||||
Cch uint32
|
||||
HbmpItem HBITMAP
|
||||
}
|
||||
|
||||
type MENUINFO struct {
|
||||
CbSize uint32
|
||||
FMask uint32
|
||||
DwStyle uint32
|
||||
CyMax uint32
|
||||
HbrBack HBRUSH
|
||||
DwContextHelpID uint32
|
||||
DwMenuData uintptr
|
||||
}
|
|
@ -1,500 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
CLSCTX_INPROC_SERVER = 0x1
|
||||
CLSCTX_INPROC_HANDLER = 0x2
|
||||
CLSCTX_LOCAL_SERVER = 0x4
|
||||
CLSCTX_INPROC_SERVER16 = 0x8
|
||||
CLSCTX_REMOTE_SERVER = 0x10
|
||||
CLSCTX_INPROC_HANDLER16 = 0x20
|
||||
CLSCTX_RESERVED1 = 0x40
|
||||
CLSCTX_RESERVED2 = 0x80
|
||||
CLSCTX_RESERVED3 = 0x100
|
||||
CLSCTX_RESERVED4 = 0x200
|
||||
CLSCTX_NO_CODE_DOWNLOAD = 0x400
|
||||
CLSCTX_RESERVED5 = 0x800
|
||||
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
|
||||
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
|
||||
CLSCTX_NO_FAILURE_LOG = 0x4000
|
||||
CLSCTX_DISABLE_AAA = 0x8000
|
||||
CLSCTX_ENABLE_AAA = 0x10000
|
||||
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
|
||||
CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000
|
||||
CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
|
||||
CLSCTX_ENABLE_CLOAKING = 0x100000
|
||||
CLSCTX_PS_DLL = 0x80000000
|
||||
CLSCTX_ALL = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER
|
||||
)
|
||||
|
||||
// Verbs for IOleObject.DoVerb
|
||||
const (
|
||||
OLEIVERB_PRIMARY = 0
|
||||
OLEIVERB_SHOW = -1
|
||||
OLEIVERB_OPEN = -2
|
||||
OLEIVERB_HIDE = -3
|
||||
OLEIVERB_UIACTIVATE = -4
|
||||
OLEIVERB_INPLACEACTIVATE = -5
|
||||
OLEIVERB_DISCARDUNDOSTATE = -6
|
||||
)
|
||||
|
||||
// OLECLOSE constants
|
||||
const (
|
||||
OLECLOSE_SAVEIFDIRTY = 0
|
||||
OLECLOSE_NOSAVE = 1
|
||||
OLECLOSE_PROMPTSAVE = 2
|
||||
)
|
||||
|
||||
type IID syscall.GUID
|
||||
type CLSID syscall.GUID
|
||||
type REFIID *IID
|
||||
type REFCLSID *CLSID
|
||||
|
||||
var (
|
||||
IID_IClassFactory = IID{0x00000001, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
IID_IConnectionPointContainer = IID{0xB196B284, 0xBAB4, 0x101A, [8]byte{0xB6, 0x9C, 0x00, 0xAA, 0x00, 0x34, 0x1D, 0x07}}
|
||||
IID_IOleClientSite = IID{0x00000118, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
IID_IOleInPlaceObject = IID{0x00000113, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
IID_IOleInPlaceSite = IID{0x00000119, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
IID_IOleObject = IID{0x00000112, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
IID_IUnknown = IID{0x00000000, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
)
|
||||
|
||||
func EqualREFIID(a, b REFIID) bool {
|
||||
if a == b {
|
||||
return true
|
||||
}
|
||||
if a == nil || b == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if a.Data1 != b.Data1 || a.Data2 != b.Data2 || a.Data3 != b.Data3 {
|
||||
return false
|
||||
}
|
||||
|
||||
for i := 0; i < 8; i++ {
|
||||
if a.Data4[i] != b.Data4[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
type IClassFactoryVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
CreateInstance uintptr
|
||||
LockServer uintptr
|
||||
}
|
||||
|
||||
type IClassFactory struct {
|
||||
LpVtbl *IClassFactoryVtbl
|
||||
}
|
||||
|
||||
func (cf *IClassFactory) Release() uint32 {
|
||||
ret, _, _ := syscall.Syscall(cf.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(cf)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func (cf *IClassFactory) CreateInstance(pUnkOuter *IUnknown, riid REFIID, ppvObject *unsafe.Pointer) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(cf.LpVtbl.CreateInstance, 4,
|
||||
uintptr(unsafe.Pointer(cf)),
|
||||
uintptr(unsafe.Pointer(pUnkOuter)),
|
||||
uintptr(unsafe.Pointer(riid)),
|
||||
uintptr(unsafe.Pointer(ppvObject)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IConnectionPointVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetConnectionInterface uintptr
|
||||
GetConnectionPointContainer uintptr
|
||||
Advise uintptr
|
||||
Unadvise uintptr
|
||||
EnumConnections uintptr
|
||||
}
|
||||
|
||||
type IConnectionPoint struct {
|
||||
LpVtbl *IConnectionPointVtbl
|
||||
}
|
||||
|
||||
func (cp *IConnectionPoint) Release() uint32 {
|
||||
ret, _, _ := syscall.Syscall(cp.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(cp)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func (cp *IConnectionPoint) Advise(pUnkSink unsafe.Pointer, pdwCookie *uint32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(cp.LpVtbl.Advise, 3,
|
||||
uintptr(unsafe.Pointer(cp)),
|
||||
uintptr(pUnkSink),
|
||||
uintptr(unsafe.Pointer(pdwCookie)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IConnectionPointContainerVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
EnumConnectionPoints uintptr
|
||||
FindConnectionPoint uintptr
|
||||
}
|
||||
|
||||
type IConnectionPointContainer struct {
|
||||
LpVtbl *IConnectionPointContainerVtbl
|
||||
}
|
||||
|
||||
func (cpc *IConnectionPointContainer) Release() uint32 {
|
||||
ret, _, _ := syscall.Syscall(cpc.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(cpc)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func (cpc *IConnectionPointContainer) FindConnectionPoint(riid REFIID, ppCP **IConnectionPoint) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(cpc.LpVtbl.FindConnectionPoint, 3,
|
||||
uintptr(unsafe.Pointer(cpc)),
|
||||
uintptr(unsafe.Pointer(riid)),
|
||||
uintptr(unsafe.Pointer(ppCP)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IOleClientSiteVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
SaveObject uintptr
|
||||
GetMoniker uintptr
|
||||
GetContainer uintptr
|
||||
ShowObject uintptr
|
||||
OnShowWindow uintptr
|
||||
RequestNewObjectLayout uintptr
|
||||
}
|
||||
|
||||
type IOleClientSite struct {
|
||||
LpVtbl *IOleClientSiteVtbl
|
||||
}
|
||||
|
||||
type IOleInPlaceFrameVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetWindow uintptr
|
||||
ContextSensitiveHelp uintptr
|
||||
GetBorder uintptr
|
||||
RequestBorderSpace uintptr
|
||||
SetBorderSpace uintptr
|
||||
SetActiveObject uintptr
|
||||
InsertMenus uintptr
|
||||
SetMenu uintptr
|
||||
RemoveMenus uintptr
|
||||
SetStatusText uintptr
|
||||
EnableModeless uintptr
|
||||
TranslateAccelerator uintptr
|
||||
}
|
||||
|
||||
type IOleInPlaceFrame struct {
|
||||
LpVtbl *IOleInPlaceFrameVtbl
|
||||
}
|
||||
|
||||
type IOleInPlaceObjectVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetWindow uintptr
|
||||
ContextSensitiveHelp uintptr
|
||||
InPlaceDeactivate uintptr
|
||||
UIDeactivate uintptr
|
||||
SetObjectRects uintptr
|
||||
ReactivateAndUndo uintptr
|
||||
}
|
||||
|
||||
type IOleInPlaceObject struct {
|
||||
LpVtbl *IOleInPlaceObjectVtbl
|
||||
}
|
||||
|
||||
func (obj *IOleInPlaceObject) Release() uint32 {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleInPlaceObject) SetObjectRects(lprcPosRect, lprcClipRect *RECT) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.SetObjectRects, 3,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(unsafe.Pointer(lprcPosRect)),
|
||||
uintptr(unsafe.Pointer(lprcClipRect)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IOleInPlaceSiteVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetWindow uintptr
|
||||
ContextSensitiveHelp uintptr
|
||||
CanInPlaceActivate uintptr
|
||||
OnInPlaceActivate uintptr
|
||||
OnUIActivate uintptr
|
||||
GetWindowContext uintptr
|
||||
Scroll uintptr
|
||||
OnUIDeactivate uintptr
|
||||
OnInPlaceDeactivate uintptr
|
||||
DiscardUndoState uintptr
|
||||
DeactivateAndUndo uintptr
|
||||
OnPosRectChange uintptr
|
||||
}
|
||||
|
||||
type IOleInPlaceSite struct {
|
||||
LpVtbl *IOleInPlaceSiteVtbl
|
||||
}
|
||||
|
||||
type IOleObjectVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
SetClientSite uintptr
|
||||
GetClientSite uintptr
|
||||
SetHostNames uintptr
|
||||
Close uintptr
|
||||
SetMoniker uintptr
|
||||
GetMoniker uintptr
|
||||
InitFromData uintptr
|
||||
GetClipboardData uintptr
|
||||
DoVerb uintptr
|
||||
EnumVerbs uintptr
|
||||
Update uintptr
|
||||
IsUpToDate uintptr
|
||||
GetUserClassID uintptr
|
||||
GetUserType uintptr
|
||||
SetExtent uintptr
|
||||
GetExtent uintptr
|
||||
Advise uintptr
|
||||
Unadvise uintptr
|
||||
EnumAdvise uintptr
|
||||
GetMiscStatus uintptr
|
||||
SetColorScheme uintptr
|
||||
}
|
||||
|
||||
type IOleObject struct {
|
||||
LpVtbl *IOleObjectVtbl
|
||||
}
|
||||
|
||||
func (obj *IOleObject) QueryInterface(riid REFIID, ppvObject *unsafe.Pointer) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.QueryInterface, 3,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(unsafe.Pointer(riid)),
|
||||
uintptr(unsafe.Pointer(ppvObject)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleObject) Release() uint32 {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleObject) SetClientSite(pClientSite *IOleClientSite) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.SetClientSite, 2,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(unsafe.Pointer(pClientSite)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleObject) SetHostNames(szContainerApp, szContainerObj *uint16) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.SetHostNames, 3,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(unsafe.Pointer(szContainerApp)),
|
||||
uintptr(unsafe.Pointer(szContainerObj)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleObject) Close(dwSaveOption uint32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.Close, 2,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(dwSaveOption),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (obj *IOleObject) DoVerb(iVerb int32, lpmsg *MSG, pActiveSite *IOleClientSite, lindex int32, hwndParent HWND, lprcPosRect *RECT) HRESULT {
|
||||
ret, _, _ := syscall.Syscall9(obj.LpVtbl.DoVerb, 7,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(iVerb),
|
||||
uintptr(unsafe.Pointer(lpmsg)),
|
||||
uintptr(unsafe.Pointer(pActiveSite)),
|
||||
uintptr(lindex),
|
||||
uintptr(hwndParent),
|
||||
uintptr(unsafe.Pointer(lprcPosRect)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IUnknownVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
}
|
||||
|
||||
type IUnknown struct {
|
||||
LpVtbl *IUnknownVtbl
|
||||
}
|
||||
|
||||
type OLEINPLACEFRAMEINFO struct {
|
||||
Cb uint32
|
||||
FMDIApp BOOL
|
||||
HwndFrame HWND
|
||||
Haccel HACCEL
|
||||
CAccelEntries uint32
|
||||
}
|
||||
|
||||
type COAUTHIDENTITY struct {
|
||||
User *uint16
|
||||
UserLength uint32
|
||||
Domain *uint16
|
||||
DomainLength uint32
|
||||
Password *uint16
|
||||
PasswordLength uint32
|
||||
Flags uint32
|
||||
}
|
||||
|
||||
type COAUTHINFO struct {
|
||||
dwAuthnSvc uint32
|
||||
dwAuthzSvc uint32
|
||||
pwszServerPrincName *uint16
|
||||
dwAuthnLevel uint32
|
||||
dwImpersonationLevel uint32
|
||||
pAuthIdentityData *COAUTHIDENTITY
|
||||
dwCapabilities uint32
|
||||
}
|
||||
|
||||
type COSERVERINFO struct {
|
||||
dwReserved1 uint32
|
||||
pwszName *uint16
|
||||
pAuthInfo *COAUTHINFO
|
||||
dwReserved2 uint32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libole32 uintptr
|
||||
|
||||
// Functions
|
||||
coCreateInstance uintptr
|
||||
coGetClassObject uintptr
|
||||
coTaskMemFree uintptr
|
||||
oleInitialize uintptr
|
||||
oleSetContainedObject uintptr
|
||||
oleUninitialize uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libole32 = MustLoadLibrary("ole32.dll")
|
||||
|
||||
// Functions
|
||||
coCreateInstance = MustGetProcAddress(libole32, "CoCreateInstance")
|
||||
coGetClassObject = MustGetProcAddress(libole32, "CoGetClassObject")
|
||||
coTaskMemFree = MustGetProcAddress(libole32, "CoTaskMemFree")
|
||||
oleInitialize = MustGetProcAddress(libole32, "OleInitialize")
|
||||
oleSetContainedObject = MustGetProcAddress(libole32, "OleSetContainedObject")
|
||||
oleUninitialize = MustGetProcAddress(libole32, "OleUninitialize")
|
||||
}
|
||||
|
||||
func CoCreateInstance(rclsid REFCLSID, pUnkOuter *IUnknown, dwClsContext uint32, riid REFIID, ppv *unsafe.Pointer) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(coCreateInstance, 5,
|
||||
uintptr(unsafe.Pointer(rclsid)),
|
||||
uintptr(unsafe.Pointer(pUnkOuter)),
|
||||
uintptr(dwClsContext),
|
||||
uintptr(unsafe.Pointer(riid)),
|
||||
uintptr(unsafe.Pointer(ppv)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func CoGetClassObject(rclsid REFCLSID, dwClsContext uint32, pServerInfo *COSERVERINFO, riid REFIID, ppv *unsafe.Pointer) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(coGetClassObject, 5,
|
||||
uintptr(unsafe.Pointer(rclsid)),
|
||||
uintptr(dwClsContext),
|
||||
uintptr(unsafe.Pointer(pServerInfo)),
|
||||
uintptr(unsafe.Pointer(riid)),
|
||||
uintptr(unsafe.Pointer(ppv)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func CoTaskMemFree(pv uintptr) {
|
||||
syscall.Syscall(coTaskMemFree, 1,
|
||||
pv,
|
||||
0,
|
||||
0)
|
||||
}
|
||||
|
||||
func OleInitialize() HRESULT {
|
||||
ret, _, _ := syscall.Syscall(oleInitialize, 1, // WTF, why does 0 not work here?
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func OleSetContainedObject(pUnknown *IUnknown, fContained bool) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(oleSetContainedObject, 2,
|
||||
uintptr(unsafe.Pointer(pUnknown)),
|
||||
uintptr(BoolToBOOL(fContained)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func OleUninitialize() {
|
||||
syscall.Syscall(oleUninitialize, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
}
|
|
@ -1,240 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type DISPID int32
|
||||
|
||||
const (
|
||||
DISPID_BEFORENAVIGATE DISPID = 100
|
||||
DISPID_NAVIGATECOMPLETE DISPID = 101
|
||||
DISPID_STATUSTEXTCHANGE DISPID = 102
|
||||
DISPID_QUIT DISPID = 103
|
||||
DISPID_DOWNLOADCOMPLETE DISPID = 104
|
||||
DISPID_COMMANDSTATECHANGE DISPID = 105
|
||||
DISPID_DOWNLOADBEGIN DISPID = 106
|
||||
DISPID_NEWWINDOW DISPID = 107
|
||||
DISPID_PROGRESSCHANGE DISPID = 108
|
||||
DISPID_WINDOWMOVE DISPID = 109
|
||||
DISPID_WINDOWRESIZE DISPID = 110
|
||||
DISPID_WINDOWACTIVATE DISPID = 111
|
||||
DISPID_PROPERTYCHANGE DISPID = 112
|
||||
DISPID_TITLECHANGE DISPID = 113
|
||||
DISPID_TITLEICONCHANGE DISPID = 114
|
||||
DISPID_FRAMEBEFORENAVIGATE DISPID = 200
|
||||
DISPID_FRAMENAVIGATECOMPLETE DISPID = 201
|
||||
DISPID_FRAMENEWWINDOW DISPID = 204
|
||||
DISPID_BEFORENAVIGATE2 DISPID = 250
|
||||
DISPID_NEWWINDOW2 DISPID = 251
|
||||
DISPID_NAVIGATECOMPLETE2 DISPID = 252
|
||||
DISPID_ONQUIT DISPID = 253
|
||||
DISPID_ONVISIBLE DISPID = 254
|
||||
DISPID_ONTOOLBAR DISPID = 255
|
||||
DISPID_ONMENUBAR DISPID = 256
|
||||
DISPID_ONSTATUSBAR DISPID = 257
|
||||
DISPID_ONFULLSCREEN DISPID = 258
|
||||
DISPID_DOCUMENTCOMPLETE DISPID = 259
|
||||
DISPID_ONTHEATERMODE DISPID = 260
|
||||
DISPID_ONADDRESSBAR DISPID = 261
|
||||
DISPID_WINDOWSETRESIZABLE DISPID = 262
|
||||
DISPID_WINDOWCLOSING DISPID = 263
|
||||
DISPID_WINDOWSETLEFT DISPID = 264
|
||||
DISPID_WINDOWSETTOP DISPID = 265
|
||||
DISPID_WINDOWSETWIDTH DISPID = 266
|
||||
DISPID_WINDOWSETHEIGHT DISPID = 267
|
||||
DISPID_CLIENTTOHOSTWINDOW DISPID = 268
|
||||
DISPID_SETSECURELOCKICON DISPID = 269
|
||||
DISPID_FILEDOWNLOAD DISPID = 270
|
||||
DISPID_NAVIGATEERROR DISPID = 271
|
||||
DISPID_PRIVACYIMPACTEDSTATECHANGE DISPID = 272
|
||||
)
|
||||
|
||||
var (
|
||||
IID_IDispatch = IID{0x00020400, 0x0000, 0x0000, [8]byte{0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}
|
||||
)
|
||||
|
||||
const (
|
||||
DISP_E_MEMBERNOTFOUND = 0x80020003
|
||||
)
|
||||
|
||||
type VARTYPE uint16
|
||||
|
||||
const (
|
||||
VT_EMPTY VARTYPE = 0
|
||||
VT_NULL VARTYPE = 1
|
||||
VT_I2 VARTYPE = 2
|
||||
VT_I4 VARTYPE = 3
|
||||
VT_R4 VARTYPE = 4
|
||||
VT_R8 VARTYPE = 5
|
||||
VT_CY VARTYPE = 6
|
||||
VT_DATE VARTYPE = 7
|
||||
VT_BSTR VARTYPE = 8
|
||||
VT_DISPATCH VARTYPE = 9
|
||||
VT_ERROR VARTYPE = 10
|
||||
VT_BOOL VARTYPE = 11
|
||||
VT_VARIANT VARTYPE = 12
|
||||
VT_UNKNOWN VARTYPE = 13
|
||||
VT_DECIMAL VARTYPE = 14
|
||||
VT_I1 VARTYPE = 16
|
||||
VT_UI1 VARTYPE = 17
|
||||
VT_UI2 VARTYPE = 18
|
||||
VT_UI4 VARTYPE = 19
|
||||
VT_I8 VARTYPE = 20
|
||||
VT_UI8 VARTYPE = 21
|
||||
VT_INT VARTYPE = 22
|
||||
VT_UINT VARTYPE = 23
|
||||
VT_VOID VARTYPE = 24
|
||||
VT_HRESULT VARTYPE = 25
|
||||
VT_PTR VARTYPE = 26
|
||||
VT_SAFEARRAY VARTYPE = 27
|
||||
VT_CARRAY VARTYPE = 28
|
||||
VT_USERDEFINED VARTYPE = 29
|
||||
VT_LPSTR VARTYPE = 30
|
||||
VT_LPWSTR VARTYPE = 31
|
||||
VT_RECORD VARTYPE = 36
|
||||
VT_INT_PTR VARTYPE = 37
|
||||
VT_UINT_PTR VARTYPE = 38
|
||||
VT_FILETIME VARTYPE = 64
|
||||
VT_BLOB VARTYPE = 65
|
||||
VT_STREAM VARTYPE = 66
|
||||
VT_STORAGE VARTYPE = 67
|
||||
VT_STREAMED_OBJECT VARTYPE = 68
|
||||
VT_STORED_OBJECT VARTYPE = 69
|
||||
VT_BLOB_OBJECT VARTYPE = 70
|
||||
VT_CF VARTYPE = 71
|
||||
VT_CLSID VARTYPE = 72
|
||||
VT_VERSIONED_STREAM VARTYPE = 73
|
||||
VT_BSTR_BLOB VARTYPE = 0xfff
|
||||
VT_VECTOR VARTYPE = 0x1000
|
||||
VT_ARRAY VARTYPE = 0x2000
|
||||
VT_BYREF VARTYPE = 0x4000
|
||||
VT_RESERVED VARTYPE = 0x8000
|
||||
VT_ILLEGAL VARTYPE = 0xffff
|
||||
VT_ILLEGALMASKED VARTYPE = 0xfff
|
||||
VT_TYPEMASK VARTYPE = 0xfff
|
||||
)
|
||||
|
||||
type VARIANT struct {
|
||||
Vt VARTYPE
|
||||
reserved [14]byte
|
||||
}
|
||||
|
||||
type VARIANTARG VARIANT
|
||||
|
||||
type VARIANT_BOOL int16
|
||||
|
||||
//type BSTR *uint16
|
||||
|
||||
func StringToBSTR(value string) *uint16 /*BSTR*/ {
|
||||
// IMPORTANT: Don't forget to free the BSTR value when no longer needed!
|
||||
return SysAllocString(value)
|
||||
}
|
||||
|
||||
func BSTRToString(value *uint16 /*BSTR*/) string {
|
||||
// ISSUE: Is this really ok?
|
||||
bstrArrPtr := (*[200000000]uint16)(unsafe.Pointer(value))
|
||||
|
||||
bstrSlice := make([]uint16, SysStringLen(value))
|
||||
copy(bstrSlice, bstrArrPtr[:])
|
||||
|
||||
return syscall.UTF16ToString(bstrSlice)
|
||||
}
|
||||
|
||||
type VAR_I4 struct {
|
||||
vt VARTYPE
|
||||
reserved1 [6]byte
|
||||
lVal int32
|
||||
reserved2 [4]byte
|
||||
}
|
||||
|
||||
func IntToVariantI4(value int32) *VAR_I4 {
|
||||
return &VAR_I4{vt: VT_I4, lVal: value}
|
||||
}
|
||||
|
||||
func VariantI4ToInt(value *VAR_I4) int32 {
|
||||
return value.lVal
|
||||
}
|
||||
|
||||
type VAR_BOOL struct {
|
||||
vt VARTYPE
|
||||
reserved1 [6]byte
|
||||
boolVal VARIANT_BOOL
|
||||
reserved2 [6]byte
|
||||
}
|
||||
|
||||
func BoolToVariantBool(value bool) *VAR_BOOL {
|
||||
return &VAR_BOOL{vt: VT_BOOL, boolVal: VARIANT_BOOL(BoolToBOOL(value))}
|
||||
}
|
||||
|
||||
func VariantBoolToBool(value *VAR_BOOL) bool {
|
||||
return value.boolVal != 0
|
||||
}
|
||||
|
||||
func StringToVariantBSTR(value string) *VAR_BSTR {
|
||||
// IMPORTANT: Don't forget to free the BSTR value when no longer needed!
|
||||
return &VAR_BSTR{vt: VT_BSTR, bstrVal: StringToBSTR(value)}
|
||||
}
|
||||
|
||||
func VariantBSTRToString(value *VAR_BSTR) string {
|
||||
return BSTRToString(value.bstrVal)
|
||||
}
|
||||
|
||||
type DISPPARAMS struct {
|
||||
Rgvarg *VARIANTARG
|
||||
RgdispidNamedArgs *DISPID
|
||||
CArgs int32
|
||||
CNamedArgs int32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
liboleaut32 uintptr
|
||||
|
||||
// Functions
|
||||
sysAllocString uintptr
|
||||
sysFreeString uintptr
|
||||
sysStringLen uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
liboleaut32 = MustLoadLibrary("oleaut32.dll")
|
||||
|
||||
// Functions
|
||||
sysAllocString = MustGetProcAddress(liboleaut32, "SysAllocString")
|
||||
sysFreeString = MustGetProcAddress(liboleaut32, "SysFreeString")
|
||||
sysStringLen = MustGetProcAddress(liboleaut32, "SysStringLen")
|
||||
}
|
||||
|
||||
func SysAllocString(s string) *uint16 /*BSTR*/ {
|
||||
ret, _, _ := syscall.Syscall(sysAllocString, 1,
|
||||
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s))),
|
||||
0,
|
||||
0)
|
||||
|
||||
return (*uint16) /*BSTR*/ (unsafe.Pointer(ret))
|
||||
}
|
||||
|
||||
func SysFreeString(bstr *uint16 /*BSTR*/) {
|
||||
syscall.Syscall(sysFreeString, 1,
|
||||
uintptr(unsafe.Pointer(bstr)),
|
||||
0,
|
||||
0)
|
||||
}
|
||||
|
||||
func SysStringLen(bstr *uint16 /*BSTR*/) uint32 {
|
||||
ret, _, _ := syscall.Syscall(sysStringLen, 1,
|
||||
uintptr(unsafe.Pointer(bstr)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
type VAR_BSTR struct {
|
||||
vt VARTYPE
|
||||
reserved1 [6]byte
|
||||
bstrVal *uint16 /*BSTR*/
|
||||
reserved2 [4]byte
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
type VAR_BSTR struct {
|
||||
vt VARTYPE
|
||||
reserved1 [6]byte
|
||||
bstrVal *uint16 /*BSTR*/
|
||||
}
|
|
@ -1,301 +0,0 @@
|
|||
// Copyright 2011 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// for second parameter of WglSwapLayerBuffers
|
||||
const (
|
||||
WGL_SWAP_MAIN_PLANE = (1 << 0)
|
||||
WGL_SWAP_OVERLAY1 = (1 << 1)
|
||||
WGL_SWAP_OVERLAY2 = (1 << 2)
|
||||
WGL_SWAP_OVERLAY3 = (1 << 3)
|
||||
WGL_SWAP_OVERLAY4 = (1 << 4)
|
||||
WGL_SWAP_OVERLAY5 = (1 << 5)
|
||||
WGL_SWAP_OVERLAY6 = (1 << 6)
|
||||
WGL_SWAP_OVERLAY7 = (1 << 7)
|
||||
WGL_SWAP_OVERLAY8 = (1 << 8)
|
||||
WGL_SWAP_OVERLAY9 = (1 << 9)
|
||||
WGL_SWAP_OVERLAY10 = (1 << 10)
|
||||
WGL_SWAP_OVERLAY11 = (1 << 11)
|
||||
WGL_SWAP_OVERLAY12 = (1 << 12)
|
||||
WGL_SWAP_OVERLAY13 = (1 << 13)
|
||||
WGL_SWAP_OVERLAY14 = (1 << 14)
|
||||
WGL_SWAP_OVERLAY15 = (1 << 15)
|
||||
WGL_SWAP_UNDERLAY1 = (1 << 16)
|
||||
WGL_SWAP_UNDERLAY2 = (1 << 17)
|
||||
WGL_SWAP_UNDERLAY3 = (1 << 18)
|
||||
WGL_SWAP_UNDERLAY4 = (1 << 19)
|
||||
WGL_SWAP_UNDERLAY5 = (1 << 20)
|
||||
WGL_SWAP_UNDERLAY6 = (1 << 21)
|
||||
WGL_SWAP_UNDERLAY7 = (1 << 22)
|
||||
WGL_SWAP_UNDERLAY8 = (1 << 23)
|
||||
WGL_SWAP_UNDERLAY9 = (1 << 24)
|
||||
WGL_SWAP_UNDERLAY10 = (1 << 25)
|
||||
WGL_SWAP_UNDERLAY11 = (1 << 26)
|
||||
WGL_SWAP_UNDERLAY12 = (1 << 27)
|
||||
WGL_SWAP_UNDERLAY13 = (1 << 28)
|
||||
WGL_SWAP_UNDERLAY14 = (1 << 29)
|
||||
WGL_SWAP_UNDERLAY15 = (1 << 30)
|
||||
)
|
||||
|
||||
type (
|
||||
HGLRC HANDLE
|
||||
)
|
||||
|
||||
type LAYERPLANEDESCRIPTOR struct {
|
||||
NSize uint16
|
||||
NVersion uint16
|
||||
DwFlags uint32
|
||||
IPixelType uint8
|
||||
CColorBits uint8
|
||||
CRedBits uint8
|
||||
CRedShift uint8
|
||||
CGreenBits uint8
|
||||
CGreenShift uint8
|
||||
CBlueBits uint8
|
||||
CBlueShift uint8
|
||||
CAlphaBits uint8
|
||||
CAlphaShift uint8
|
||||
CAccumBits uint8
|
||||
CAccumRedBits uint8
|
||||
CAccumGreenBits uint8
|
||||
CAccumBlueBits uint8
|
||||
CAccumAlphaBits uint8
|
||||
CDepthBits uint8
|
||||
CStencilBits uint8
|
||||
CAuxBuffers uint8
|
||||
ILayerType uint8
|
||||
BReserved uint8
|
||||
CrTransparent COLORREF
|
||||
}
|
||||
|
||||
type POINTFLOAT struct {
|
||||
X, Y float32
|
||||
}
|
||||
|
||||
type GLYPHMETRICSFLOAT struct {
|
||||
GmfBlackBoxX float32
|
||||
GmfBlackBoxY float32
|
||||
GmfptGlyphOrigin POINTFLOAT
|
||||
GmfCellIncX float32
|
||||
GmfCellIncY float32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
lib uintptr
|
||||
|
||||
// Functions
|
||||
wglCopyContext uintptr
|
||||
wglCreateContext uintptr
|
||||
wglCreateLayerContext uintptr
|
||||
wglDeleteContext uintptr
|
||||
wglDescribeLayerPlane uintptr
|
||||
wglGetCurrentContext uintptr
|
||||
wglGetCurrentDC uintptr
|
||||
wglGetLayerPaletteEntries uintptr
|
||||
wglGetProcAddress uintptr
|
||||
wglMakeCurrent uintptr
|
||||
wglRealizeLayerPalette uintptr
|
||||
wglSetLayerPaletteEntries uintptr
|
||||
wglShareLists uintptr
|
||||
wglSwapLayerBuffers uintptr
|
||||
wglUseFontBitmaps uintptr
|
||||
wglUseFontOutlines uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
lib = MustLoadLibrary("opengl32.dll")
|
||||
|
||||
// Functions
|
||||
wglCopyContext = MustGetProcAddress(lib, "wglCopyContext")
|
||||
wglCreateContext = MustGetProcAddress(lib, "wglCreateContext")
|
||||
wglCreateLayerContext = MustGetProcAddress(lib, "wglCreateLayerContext")
|
||||
wglDeleteContext = MustGetProcAddress(lib, "wglDeleteContext")
|
||||
wglDescribeLayerPlane = MustGetProcAddress(lib, "wglDescribeLayerPlane")
|
||||
wglGetCurrentContext = MustGetProcAddress(lib, "wglGetCurrentContext")
|
||||
wglGetCurrentDC = MustGetProcAddress(lib, "wglGetCurrentDC")
|
||||
wglGetLayerPaletteEntries = MustGetProcAddress(lib, "wglGetLayerPaletteEntries")
|
||||
wglGetProcAddress = MustGetProcAddress(lib, "wglGetProcAddress")
|
||||
wglMakeCurrent = MustGetProcAddress(lib, "wglMakeCurrent")
|
||||
wglRealizeLayerPalette = MustGetProcAddress(lib, "wglRealizeLayerPalette")
|
||||
wglSetLayerPaletteEntries = MustGetProcAddress(lib, "wglSetLayerPaletteEntries")
|
||||
wglShareLists = MustGetProcAddress(lib, "wglShareLists")
|
||||
wglSwapLayerBuffers = MustGetProcAddress(lib, "wglSwapLayerBuffers")
|
||||
wglUseFontBitmaps = MustGetProcAddress(lib, "wglUseFontBitmapsW")
|
||||
wglUseFontOutlines = MustGetProcAddress(lib, "wglUseFontOutlinesW")
|
||||
}
|
||||
|
||||
func WglCopyContext(hglrcSrc, hglrcDst HGLRC, mask uint) bool {
|
||||
ret, _, _ := syscall.Syscall(wglCopyContext, 3,
|
||||
uintptr(hglrcSrc),
|
||||
uintptr(hglrcDst),
|
||||
uintptr(mask))
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglCreateContext(hdc HDC) HGLRC {
|
||||
ret, _, _ := syscall.Syscall(wglCreateContext, 1,
|
||||
uintptr(hdc),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HGLRC(ret)
|
||||
}
|
||||
|
||||
func WglCreateLayerContext(hdc HDC, iLayerPlane int) HGLRC {
|
||||
ret, _, _ := syscall.Syscall(wglCreateLayerContext, 2,
|
||||
uintptr(hdc),
|
||||
uintptr(iLayerPlane),
|
||||
0)
|
||||
|
||||
return HGLRC(ret)
|
||||
}
|
||||
|
||||
func WglDeleteContext(hglrc HGLRC) bool {
|
||||
ret, _, _ := syscall.Syscall(wglDeleteContext, 1,
|
||||
uintptr(hglrc),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglDescribeLayerPlane(hdc HDC, iPixelFormat, iLayerPlane int, nBytes uint8, plpd *LAYERPLANEDESCRIPTOR) bool {
|
||||
ret, _, _ := syscall.Syscall6(wglDescribeLayerPlane, 5,
|
||||
uintptr(hdc),
|
||||
uintptr(iPixelFormat),
|
||||
uintptr(iLayerPlane),
|
||||
uintptr(nBytes),
|
||||
uintptr(unsafe.Pointer(plpd)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglGetCurrentContext() HGLRC {
|
||||
ret, _, _ := syscall.Syscall(wglGetCurrentContext, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return HGLRC(ret)
|
||||
}
|
||||
|
||||
func WglGetCurrentDC() HDC {
|
||||
ret, _, _ := syscall.Syscall(wglGetCurrentDC, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return HDC(ret)
|
||||
}
|
||||
|
||||
func WglGetLayerPaletteEntries(hdc HDC, iLayerPlane, iStart, cEntries int, pcr *COLORREF) int {
|
||||
ret, _, _ := syscall.Syscall6(wglGetLayerPaletteEntries, 5,
|
||||
uintptr(hdc),
|
||||
uintptr(iLayerPlane),
|
||||
uintptr(iStart),
|
||||
uintptr(cEntries),
|
||||
uintptr(unsafe.Pointer(pcr)),
|
||||
0)
|
||||
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func WglGetProcAddress(lpszProc *byte) uintptr {
|
||||
ret, _, _ := syscall.Syscall(wglGetProcAddress, 1,
|
||||
uintptr(unsafe.Pointer(lpszProc)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uintptr(ret)
|
||||
}
|
||||
|
||||
func WglMakeCurrent(hdc HDC, hglrc HGLRC) bool {
|
||||
ret, _, _ := syscall.Syscall(wglMakeCurrent, 2,
|
||||
uintptr(hdc),
|
||||
uintptr(hglrc),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglRealizeLayerPalette(hdc HDC, iLayerPlane int, bRealize bool) bool {
|
||||
ret, _, _ := syscall.Syscall(wglRealizeLayerPalette, 3,
|
||||
uintptr(hdc),
|
||||
uintptr(iLayerPlane),
|
||||
uintptr(BoolToBOOL(bRealize)))
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglSetLayerPaletteEntries(hdc HDC, iLayerPlane, iStart, cEntries int, pcr *COLORREF) int {
|
||||
ret, _, _ := syscall.Syscall6(wglSetLayerPaletteEntries, 5,
|
||||
uintptr(hdc),
|
||||
uintptr(iLayerPlane),
|
||||
uintptr(iStart),
|
||||
uintptr(cEntries),
|
||||
uintptr(unsafe.Pointer(pcr)),
|
||||
0)
|
||||
|
||||
return int(ret)
|
||||
}
|
||||
|
||||
func WglShareLists(hglrc1, hglrc2 HGLRC) bool {
|
||||
ret, _, _ := syscall.Syscall(wglShareLists, 2,
|
||||
uintptr(hglrc1),
|
||||
uintptr(hglrc2),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglSwapLayerBuffers(hdc HDC, fuPlanes uint) bool {
|
||||
ret, _, _ := syscall.Syscall(wglSwapLayerBuffers, 2,
|
||||
uintptr(hdc),
|
||||
uintptr(fuPlanes),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglUseFontBitmaps(hdc HDC, first, count, listbase uint32) bool {
|
||||
ret, _, _ := syscall.Syscall6(wglUseFontBitmaps, 4,
|
||||
uintptr(hdc),
|
||||
uintptr(first),
|
||||
uintptr(count),
|
||||
uintptr(listbase),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func WglUseFontOutlines(hdc HDC, first, count, listbase uint32, deviation, extrusion float32, format int, pgmf *GLYPHMETRICSFLOAT) bool {
|
||||
ret, _, _ := syscall.Syscall12(wglUseFontBitmaps, 8,
|
||||
uintptr(hdc),
|
||||
uintptr(first),
|
||||
uintptr(count),
|
||||
uintptr(listbase),
|
||||
uintptr(deviation),
|
||||
uintptr(extrusion),
|
||||
uintptr(format),
|
||||
uintptr(unsafe.Pointer(pgmf)),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
|
@ -1,273 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
DOCHOSTUIDBLCLK_DEFAULT = 0
|
||||
DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1
|
||||
DOCHOSTUIDBLCLK_SHOWCODE = 2
|
||||
)
|
||||
|
||||
const (
|
||||
DOCHOSTUIFLAG_DIALOG = 0x1
|
||||
DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x2
|
||||
DOCHOSTUIFLAG_NO3DBORDER = 0x4
|
||||
DOCHOSTUIFLAG_SCROLL_NO = 0x8
|
||||
DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x10
|
||||
DOCHOSTUIFLAG_OPENNEWWIN = 0x20
|
||||
DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x40
|
||||
DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x80
|
||||
DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x100
|
||||
DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x200
|
||||
DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x400
|
||||
DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x800
|
||||
DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x1000
|
||||
DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x2000
|
||||
DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x4000
|
||||
DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x10000
|
||||
DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x20000
|
||||
DOCHOSTUIFLAG_THEME = 0x40000
|
||||
DOCHOSTUIFLAG_NOTHEME = 0x80000
|
||||
DOCHOSTUIFLAG_NOPICS = 0x100000
|
||||
DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x200000
|
||||
DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x400000
|
||||
DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x800000
|
||||
DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1000000
|
||||
)
|
||||
|
||||
// BrowserNavConstants
|
||||
const (
|
||||
NavOpenInNewWindow = 0x1
|
||||
NavNoHistory = 0x2
|
||||
NavNoReadFromCache = 0x4
|
||||
NavNoWriteToCache = 0x8
|
||||
NavAllowAutosearch = 0x10
|
||||
NavBrowserBar = 0x20
|
||||
NavHyperlink = 0x40
|
||||
NavEnforceRestricted = 0x80
|
||||
NavNewWindowsManaged = 0x0100
|
||||
NavUntrustedForDownload = 0x0200
|
||||
NavTrustedForActiveX = 0x0400
|
||||
NavOpenInNewTab = 0x0800
|
||||
NavOpenInBackgroundTab = 0x1000
|
||||
NavKeepWordWheelText = 0x2000
|
||||
NavVirtualTab = 0x4000
|
||||
NavBlockRedirectsXDomain = 0x8000
|
||||
NavOpenNewForegroundTab = 0x10000
|
||||
)
|
||||
|
||||
var (
|
||||
CLSID_WebBrowser = CLSID{0x8856F961, 0x340A, 0x11D0, [8]byte{0xA9, 0x6B, 0x00, 0xC0, 0x4F, 0xD7, 0x05, 0xA2}}
|
||||
DIID_DWebBrowserEvents2 = IID{0x34A715A0, 0x6587, 0x11D0, [8]byte{0x92, 0x4A, 0x00, 0x20, 0xAF, 0xC7, 0xAC, 0x4D}}
|
||||
IID_IWebBrowser2 = IID{0xD30C1661, 0xCDAF, 0x11D0, [8]byte{0x8A, 0x3E, 0x00, 0xC0, 0x4F, 0xC9, 0xE2, 0x6E}}
|
||||
IID_IDocHostUIHandler = IID{0xBD3F23C0, 0xD43E, 0x11CF, [8]byte{0x89, 0x3B, 0x00, 0xAA, 0x00, 0xBD, 0xCE, 0x1A}}
|
||||
)
|
||||
|
||||
type DWebBrowserEvents2Vtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetTypeInfoCount uintptr
|
||||
GetTypeInfo uintptr
|
||||
GetIDsOfNames uintptr
|
||||
Invoke uintptr
|
||||
}
|
||||
|
||||
type DWebBrowserEvents2 struct {
|
||||
LpVtbl *DWebBrowserEvents2Vtbl
|
||||
}
|
||||
|
||||
type IWebBrowser2Vtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
GetTypeInfoCount uintptr
|
||||
GetTypeInfo uintptr
|
||||
GetIDsOfNames uintptr
|
||||
Invoke uintptr
|
||||
GoBack uintptr
|
||||
GoForward uintptr
|
||||
GoHome uintptr
|
||||
GoSearch uintptr
|
||||
Navigate uintptr
|
||||
Refresh uintptr
|
||||
Refresh2 uintptr
|
||||
Stop uintptr
|
||||
Get_Application uintptr
|
||||
Get_Parent uintptr
|
||||
Get_Container uintptr
|
||||
Get_Document uintptr
|
||||
Get_TopLevelContainer uintptr
|
||||
Get_Type uintptr
|
||||
Get_Left uintptr
|
||||
Put_Left uintptr
|
||||
Get_Top uintptr
|
||||
Put_Top uintptr
|
||||
Get_Width uintptr
|
||||
Put_Width uintptr
|
||||
Get_Height uintptr
|
||||
Put_Height uintptr
|
||||
Get_LocationName uintptr
|
||||
Get_LocationURL uintptr
|
||||
Get_Busy uintptr
|
||||
Quit uintptr
|
||||
ClientToWindow uintptr
|
||||
PutProperty uintptr
|
||||
GetProperty uintptr
|
||||
Get_Name uintptr
|
||||
Get_HWND uintptr
|
||||
Get_FullName uintptr
|
||||
Get_Path uintptr
|
||||
Get_Visible uintptr
|
||||
Put_Visible uintptr
|
||||
Get_StatusBar uintptr
|
||||
Put_StatusBar uintptr
|
||||
Get_StatusText uintptr
|
||||
Put_StatusText uintptr
|
||||
Get_ToolBar uintptr
|
||||
Put_ToolBar uintptr
|
||||
Get_MenuBar uintptr
|
||||
Put_MenuBar uintptr
|
||||
Get_FullScreen uintptr
|
||||
Put_FullScreen uintptr
|
||||
Navigate2 uintptr
|
||||
QueryStatusWB uintptr
|
||||
ExecWB uintptr
|
||||
ShowBrowserBar uintptr
|
||||
Get_ReadyState uintptr
|
||||
Get_Offline uintptr
|
||||
Put_Offline uintptr
|
||||
Get_Silent uintptr
|
||||
Put_Silent uintptr
|
||||
Get_RegisterAsBrowser uintptr
|
||||
Put_RegisterAsBrowser uintptr
|
||||
Get_RegisterAsDropTarget uintptr
|
||||
Put_RegisterAsDropTarget uintptr
|
||||
Get_TheaterMode uintptr
|
||||
Put_TheaterMode uintptr
|
||||
Get_AddressBar uintptr
|
||||
Put_AddressBar uintptr
|
||||
Get_Resizable uintptr
|
||||
Put_Resizable uintptr
|
||||
}
|
||||
|
||||
type IWebBrowser2 struct {
|
||||
LpVtbl *IWebBrowser2Vtbl
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Release() HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Release, 1,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Refresh() HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Refresh, 1,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Put_Left(Left int32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Left, 2,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(Left),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Put_Top(Top int32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Top, 2,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(Top),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Put_Width(Width int32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Width, 2,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(Width),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Put_Height(Height int32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Put_Height, 2,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(Height),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Get_LocationURL(pbstrLocationURL **uint16 /*BSTR*/) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(wb2.LpVtbl.Get_LocationURL, 2,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(unsafe.Pointer(pbstrLocationURL)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func (wb2 *IWebBrowser2) Navigate2(URL *VAR_BSTR, Flags *VAR_I4, TargetFrameName *VAR_BSTR, PostData unsafe.Pointer, Headers *VAR_BSTR) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(wb2.LpVtbl.Navigate2, 6,
|
||||
uintptr(unsafe.Pointer(wb2)),
|
||||
uintptr(unsafe.Pointer(URL)),
|
||||
uintptr(unsafe.Pointer(Flags)),
|
||||
uintptr(unsafe.Pointer(TargetFrameName)),
|
||||
uintptr(PostData),
|
||||
uintptr(unsafe.Pointer(Headers)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
type IDocHostUIHandlerVtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
ShowContextMenu uintptr
|
||||
GetHostInfo uintptr
|
||||
ShowUI uintptr
|
||||
HideUI uintptr
|
||||
UpdateUI uintptr
|
||||
EnableModeless uintptr
|
||||
OnDocWindowActivate uintptr
|
||||
OnFrameWindowActivate uintptr
|
||||
ResizeBorder uintptr
|
||||
TranslateAccelerator uintptr
|
||||
GetOptionKeyPath uintptr
|
||||
GetDropTarget uintptr
|
||||
GetExternal uintptr
|
||||
TranslateUrl uintptr
|
||||
FilterDataObject uintptr
|
||||
}
|
||||
|
||||
type IDocHostUIHandler struct {
|
||||
LpVtbl *IDocHostUIHandlerVtbl
|
||||
}
|
||||
|
||||
type DOCHOSTUIINFO struct {
|
||||
CbSize uint32
|
||||
DwFlags uint32
|
||||
DwDoubleClick uint32
|
||||
PchHostCss *uint16
|
||||
PchHostNS *uint16
|
||||
}
|
|
@ -1,297 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type CSIDL uint32
|
||||
type HDROP HANDLE
|
||||
|
||||
const (
|
||||
CSIDL_DESKTOP = 0x00
|
||||
CSIDL_INTERNET = 0x01
|
||||
CSIDL_PROGRAMS = 0x02
|
||||
CSIDL_CONTROLS = 0x03
|
||||
CSIDL_PRINTERS = 0x04
|
||||
CSIDL_PERSONAL = 0x05
|
||||
CSIDL_FAVORITES = 0x06
|
||||
CSIDL_STARTUP = 0x07
|
||||
CSIDL_RECENT = 0x08
|
||||
CSIDL_SENDTO = 0x09
|
||||
CSIDL_BITBUCKET = 0x0A
|
||||
CSIDL_STARTMENU = 0x0B
|
||||
CSIDL_MYDOCUMENTS = 0x0C
|
||||
CSIDL_MYMUSIC = 0x0D
|
||||
CSIDL_MYVIDEO = 0x0E
|
||||
CSIDL_DESKTOPDIRECTORY = 0x10
|
||||
CSIDL_DRIVES = 0x11
|
||||
CSIDL_NETWORK = 0x12
|
||||
CSIDL_NETHOOD = 0x13
|
||||
CSIDL_FONTS = 0x14
|
||||
CSIDL_TEMPLATES = 0x15
|
||||
CSIDL_COMMON_STARTMENU = 0x16
|
||||
CSIDL_COMMON_PROGRAMS = 0x17
|
||||
CSIDL_COMMON_STARTUP = 0x18
|
||||
CSIDL_COMMON_DESKTOPDIRECTORY = 0x19
|
||||
CSIDL_APPDATA = 0x1A
|
||||
CSIDL_PRINTHOOD = 0x1B
|
||||
CSIDL_LOCAL_APPDATA = 0x1C
|
||||
CSIDL_ALTSTARTUP = 0x1D
|
||||
CSIDL_COMMON_ALTSTARTUP = 0x1E
|
||||
CSIDL_COMMON_FAVORITES = 0x1F
|
||||
CSIDL_INTERNET_CACHE = 0x20
|
||||
CSIDL_COOKIES = 0x21
|
||||
CSIDL_HISTORY = 0x22
|
||||
CSIDL_COMMON_APPDATA = 0x23
|
||||
CSIDL_WINDOWS = 0x24
|
||||
CSIDL_SYSTEM = 0x25
|
||||
CSIDL_PROGRAM_FILES = 0x26
|
||||
CSIDL_MYPICTURES = 0x27
|
||||
CSIDL_PROFILE = 0x28
|
||||
CSIDL_SYSTEMX86 = 0x29
|
||||
CSIDL_PROGRAM_FILESX86 = 0x2A
|
||||
CSIDL_PROGRAM_FILES_COMMON = 0x2B
|
||||
CSIDL_PROGRAM_FILES_COMMONX86 = 0x2C
|
||||
CSIDL_COMMON_TEMPLATES = 0x2D
|
||||
CSIDL_COMMON_DOCUMENTS = 0x2E
|
||||
CSIDL_COMMON_ADMINTOOLS = 0x2F
|
||||
CSIDL_ADMINTOOLS = 0x30
|
||||
CSIDL_CONNECTIONS = 0x31
|
||||
CSIDL_COMMON_MUSIC = 0x35
|
||||
CSIDL_COMMON_PICTURES = 0x36
|
||||
CSIDL_COMMON_VIDEO = 0x37
|
||||
CSIDL_RESOURCES = 0x38
|
||||
CSIDL_RESOURCES_LOCALIZED = 0x39
|
||||
CSIDL_COMMON_OEM_LINKS = 0x3A
|
||||
CSIDL_CDBURN_AREA = 0x3B
|
||||
CSIDL_COMPUTERSNEARME = 0x3D
|
||||
CSIDL_FLAG_CREATE = 0x8000
|
||||
CSIDL_FLAG_DONT_VERIFY = 0x4000
|
||||
CSIDL_FLAG_NO_ALIAS = 0x1000
|
||||
CSIDL_FLAG_PER_USER_INIT = 0x8000
|
||||
CSIDL_FLAG_MASK = 0xFF00
|
||||
)
|
||||
|
||||
// NotifyIcon flags
|
||||
const (
|
||||
NIF_MESSAGE = 0x00000001
|
||||
NIF_ICON = 0x00000002
|
||||
NIF_TIP = 0x00000004
|
||||
NIF_STATE = 0x00000008
|
||||
NIF_INFO = 0x00000010
|
||||
)
|
||||
|
||||
// NotifyIcon messages
|
||||
const (
|
||||
NIM_ADD = 0x00000000
|
||||
NIM_MODIFY = 0x00000001
|
||||
NIM_DELETE = 0x00000002
|
||||
NIM_SETFOCUS = 0x00000003
|
||||
NIM_SETVERSION = 0x00000004
|
||||
)
|
||||
|
||||
// NotifyIcon states
|
||||
const (
|
||||
NIS_HIDDEN = 0x00000001
|
||||
NIS_SHAREDICON = 0x00000002
|
||||
)
|
||||
|
||||
// NotifyIcon info flags
|
||||
const (
|
||||
NIIF_NONE = 0x00000000
|
||||
NIIF_INFO = 0x00000001
|
||||
NIIF_WARNING = 0x00000002
|
||||
NIIF_ERROR = 0x00000003
|
||||
NIIF_USER = 0x00000004
|
||||
NIIF_NOSOUND = 0x00000010
|
||||
)
|
||||
|
||||
const NOTIFYICON_VERSION = 3
|
||||
|
||||
// SHGetFileInfo flags
|
||||
const (
|
||||
SHGFI_LARGEICON = 0x000000000
|
||||
SHGFI_SMALLICON = 0x000000001
|
||||
SHGFI_OPENICON = 0x000000002
|
||||
SHGFI_SHELLICONSIZE = 0x000000004
|
||||
SHGFI_PIDL = 0x000000008
|
||||
SHGFI_USEFILEATTRIBUTES = 0x000000010
|
||||
SHGFI_ADDOVERLAYS = 0x000000020
|
||||
SHGFI_OVERLAYINDEX = 0x000000040
|
||||
SHGFI_ICON = 0x000000100
|
||||
SHGFI_DISPLAYNAME = 0x000000200
|
||||
SHGFI_TYPENAME = 0x000000400
|
||||
SHGFI_ATTRIBUTES = 0x000000800
|
||||
SHGFI_ICONLOCATION = 0x000001000
|
||||
SHGFI_EXETYPE = 0x000002000
|
||||
SHGFI_SYSICONINDEX = 0x000004000
|
||||
SHGFI_LINKOVERLAY = 0x000008000
|
||||
SHGFI_SELECTED = 0x000010000
|
||||
SHGFI_ATTR_SPECIFIED = 0x000020000
|
||||
)
|
||||
|
||||
type NOTIFYICONDATA struct {
|
||||
CbSize uint32
|
||||
HWnd HWND
|
||||
UID uint32
|
||||
UFlags uint32
|
||||
UCallbackMessage uint32
|
||||
HIcon HICON
|
||||
SzTip [128]uint16
|
||||
DwState uint32
|
||||
DwStateMask uint32
|
||||
SzInfo [256]uint16
|
||||
UVersion uint32
|
||||
SzInfoTitle [64]uint16
|
||||
DwInfoFlags uint32
|
||||
GuidItem syscall.GUID
|
||||
}
|
||||
|
||||
type SHFILEINFO struct {
|
||||
HIcon HICON
|
||||
IIcon int32
|
||||
DwAttributes uint32
|
||||
SzDisplayName [MAX_PATH]uint16
|
||||
SzTypeName [80]uint16
|
||||
}
|
||||
|
||||
type BROWSEINFO struct {
|
||||
HwndOwner HWND
|
||||
PidlRoot uintptr
|
||||
PszDisplayName *uint16
|
||||
LpszTitle *uint16
|
||||
UlFlags uint32
|
||||
Lpfn uintptr
|
||||
LParam uintptr
|
||||
IImage int32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libshell32 uintptr
|
||||
|
||||
// Functions
|
||||
dragAcceptFiles uintptr
|
||||
dragFinish uintptr
|
||||
dragQueryFile uintptr
|
||||
shBrowseForFolder uintptr
|
||||
shGetFileInfo uintptr
|
||||
shGetPathFromIDList uintptr
|
||||
shGetSpecialFolderPath uintptr
|
||||
shParseDisplayName uintptr
|
||||
shell_NotifyIcon uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libshell32 = MustLoadLibrary("shell32.dll")
|
||||
|
||||
// Functions
|
||||
dragAcceptFiles = MustGetProcAddress(libshell32, "DragAcceptFiles")
|
||||
dragFinish = MustGetProcAddress(libshell32, "DragFinish")
|
||||
dragQueryFile = MustGetProcAddress(libshell32, "DragQueryFileW")
|
||||
shBrowseForFolder = MustGetProcAddress(libshell32, "SHBrowseForFolderW")
|
||||
shGetFileInfo = MustGetProcAddress(libshell32, "SHGetFileInfoW")
|
||||
shGetPathFromIDList = MustGetProcAddress(libshell32, "SHGetPathFromIDListW")
|
||||
shGetSpecialFolderPath = MustGetProcAddress(libshell32, "SHGetSpecialFolderPathW")
|
||||
shParseDisplayName = MustGetProcAddress(libshell32, "SHParseDisplayName")
|
||||
shell_NotifyIcon = MustGetProcAddress(libshell32, "Shell_NotifyIconW")
|
||||
}
|
||||
|
||||
func DragAcceptFiles(hWnd HWND, fAccept bool) bool {
|
||||
ret, _, _ := syscall.Syscall(dragAcceptFiles, 2,
|
||||
uintptr(hWnd),
|
||||
uintptr(BoolToBOOL(fAccept)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func DragQueryFile(hDrop HDROP, iFile uint, lpszFile *uint16, cch uint) uint {
|
||||
ret, _, _ := syscall.Syscall6(dragQueryFile, 4,
|
||||
uintptr(hDrop),
|
||||
uintptr(iFile),
|
||||
uintptr(unsafe.Pointer(lpszFile)),
|
||||
uintptr(cch),
|
||||
0,
|
||||
0)
|
||||
|
||||
return uint(ret)
|
||||
}
|
||||
|
||||
func DragFinish(hDrop HDROP) {
|
||||
syscall.Syscall(dragAcceptFiles, 1,
|
||||
uintptr(hDrop),
|
||||
0,
|
||||
0)
|
||||
}
|
||||
|
||||
func SHBrowseForFolder(lpbi *BROWSEINFO) uintptr {
|
||||
ret, _, _ := syscall.Syscall(shBrowseForFolder, 1,
|
||||
uintptr(unsafe.Pointer(lpbi)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
func SHGetFileInfo(pszPath *uint16, dwFileAttributes uint32, psfi *SHFILEINFO, cbFileInfo, uFlags uint32) uintptr {
|
||||
ret, _, _ := syscall.Syscall6(shGetFileInfo, 5,
|
||||
uintptr(unsafe.Pointer(pszPath)),
|
||||
uintptr(dwFileAttributes),
|
||||
uintptr(unsafe.Pointer(psfi)),
|
||||
uintptr(cbFileInfo),
|
||||
uintptr(uFlags),
|
||||
0)
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
func SHGetPathFromIDList(pidl uintptr, pszPath *uint16) bool {
|
||||
ret, _, _ := syscall.Syscall(shGetPathFromIDList, 2,
|
||||
pidl,
|
||||
uintptr(unsafe.Pointer(pszPath)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func SHGetSpecialFolderPath(hwndOwner HWND, lpszPath *uint16, csidl CSIDL, fCreate bool) bool {
|
||||
ret, _, _ := syscall.Syscall6(shGetSpecialFolderPath, 4,
|
||||
uintptr(hwndOwner),
|
||||
uintptr(unsafe.Pointer(lpszPath)),
|
||||
uintptr(csidl),
|
||||
uintptr(BoolToBOOL(fCreate)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func SHParseDisplayName(pszName *uint16, pbc uintptr, ppidl *uintptr, sfgaoIn uint32, psfgaoOut *uint32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(shParseDisplayName, 5,
|
||||
uintptr(unsafe.Pointer(pszName)),
|
||||
pbc,
|
||||
uintptr(unsafe.Pointer(ppidl)),
|
||||
0,
|
||||
uintptr(unsafe.Pointer(psfgaoOut)),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func Shell_NotifyIcon(dwMessage uint32, lpdata *NOTIFYICONDATA) bool {
|
||||
ret, _, _ := syscall.Syscall(shell_NotifyIcon, 2,
|
||||
uintptr(dwMessage),
|
||||
uintptr(unsafe.Pointer(lpdata)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
var (
|
||||
CLSID_TaskbarList = CLSID{0x56FDF344, 0xFD6D, 0x11d0, [8]byte{0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}}
|
||||
IID_ITaskbarList3 = IID{0xea1afb91, 0x9e28, 0x4b86, [8]byte{0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf}}
|
||||
)
|
||||
|
||||
//TBPFLAG
|
||||
const (
|
||||
TBPF_NOPROGRESS = 0
|
||||
TBPF_INDETERMINATE = 0x1
|
||||
TBPF_NORMAL = 0x2
|
||||
TBPF_ERROR = 0x4
|
||||
TBPF_PAUSED = 0x8
|
||||
)
|
||||
|
||||
type ITaskbarList3Vtbl struct {
|
||||
QueryInterface uintptr
|
||||
AddRef uintptr
|
||||
Release uintptr
|
||||
HrInit uintptr
|
||||
AddTab uintptr
|
||||
DeleteTab uintptr
|
||||
ActivateTab uintptr
|
||||
SetActiveAlt uintptr
|
||||
MarkFullscreenWindow uintptr
|
||||
SetProgressValue uintptr
|
||||
SetProgressState uintptr
|
||||
RegisterTab uintptr
|
||||
UnregisterTab uintptr
|
||||
SetTabOrder uintptr
|
||||
SetTabActive uintptr
|
||||
ThumbBarAddButtons uintptr
|
||||
ThumbBarUpdateButtons uintptr
|
||||
ThumbBarSetImageList uintptr
|
||||
SetOverlayIcon uintptr
|
||||
SetThumbnailTooltip uintptr
|
||||
SetThumbnailClip uintptr
|
||||
}
|
||||
|
||||
type ITaskbarList3 struct {
|
||||
LpVtbl *ITaskbarList3Vtbl
|
||||
}
|
||||
|
||||
func (obj *ITaskbarList3) SetProgressState(hwnd HWND, state int) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(obj.LpVtbl.SetProgressState, 3,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(hwnd),
|
||||
uintptr(state))
|
||||
return HRESULT(ret)
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func (obj *ITaskbarList3) SetProgressValue(hwnd HWND, current uint32, length uint32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetProgressValue, 6,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(hwnd),
|
||||
uintptr(current),
|
||||
0,
|
||||
uintptr(length),
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright 2012 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func (obj *ITaskbarList3) SetProgressValue(hwnd HWND, current uint32, length uint32) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetProgressValue, 4,
|
||||
uintptr(unsafe.Pointer(obj)),
|
||||
uintptr(hwnd),
|
||||
uintptr(current),
|
||||
uintptr(length),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
// Copyright 2013 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// Styles
|
||||
const (
|
||||
SBARS_SIZEGRIP = 0x100
|
||||
SBARS_TOOLTIPS = 0x800
|
||||
)
|
||||
|
||||
// Messages
|
||||
const (
|
||||
SB_SETPARTS = WM_USER + 4
|
||||
SB_GETPARTS = WM_USER + 6
|
||||
SB_GETBORDERS = WM_USER + 7
|
||||
SB_SETMINHEIGHT = WM_USER + 8
|
||||
SB_SIMPLE = WM_USER + 9
|
||||
SB_GETRECT = WM_USER + 10
|
||||
SB_SETTEXT = WM_USER + 11
|
||||
SB_GETTEXTLENGTH = WM_USER + 12
|
||||
SB_GETTEXT = WM_USER + 13
|
||||
SB_ISSIMPLE = WM_USER + 14
|
||||
SB_SETICON = WM_USER + 15
|
||||
SB_SETTIPTEXT = WM_USER + 17
|
||||
SB_GETTIPTEXT = WM_USER + 19
|
||||
SB_GETICON = WM_USER + 20
|
||||
SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
||||
SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
||||
SB_SETBKCOLOR = CCM_SETBKCOLOR
|
||||
)
|
||||
|
||||
// SB_SETTEXT options
|
||||
const (
|
||||
SBT_NOBORDERS = 0x100
|
||||
SBT_POPOUT = 0x200
|
||||
SBT_RTLREADING = 0x400
|
||||
SBT_NOTABPARSING = 0x800
|
||||
SBT_OWNERDRAW = 0x1000
|
||||
)
|
||||
|
||||
const (
|
||||
SBN_FIRST = -880
|
||||
SBN_SIMPLEMODECHANGE = SBN_FIRST - 0
|
||||
)
|
||||
|
||||
const SB_SIMPLEID = 0xff
|
|
@ -1,65 +0,0 @@
|
|||
// Copyright 2017 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const (
|
||||
INVALID_LINK_INDEX = -1
|
||||
MAX_LINKID_TEXT = 48
|
||||
L_MAX_URL_LENGTH = 2048 + 32 + len("://")
|
||||
WC_LINK = "SysLink"
|
||||
)
|
||||
|
||||
const (
|
||||
LWS_TRANSPARENT = 0x0001
|
||||
LWS_IGNORERETURN = 0x0002
|
||||
LWS_NOPREFIX = 0x0004
|
||||
LWS_USEVISUALSTYLE = 0x0008
|
||||
LWS_USECUSTOMTEXT = 0x0010
|
||||
LWS_RIGHT = 0x0020
|
||||
)
|
||||
|
||||
const (
|
||||
LIF_ITEMINDEX = 0x00000001
|
||||
LIF_STATE = 0x00000002
|
||||
LIF_ITEMID = 0x00000004
|
||||
LIF_URL = 0x00000008
|
||||
)
|
||||
|
||||
const (
|
||||
LIS_FOCUSED = 0x00000001
|
||||
LIS_ENABLED = 0x00000002
|
||||
LIS_VISITED = 0x00000004
|
||||
LIS_HOTTRACK = 0x00000008
|
||||
LIS_DEFAULTCOLORS = 0x00000010
|
||||
)
|
||||
|
||||
const (
|
||||
LM_HITTEST = WM_USER + 0x300
|
||||
LM_GETIDEALHEIGHT = WM_USER + 0x301
|
||||
LM_SETITEM = WM_USER + 0x302
|
||||
LM_GETITEM = WM_USER + 0x303
|
||||
LM_GETIDEALSIZE = LM_GETIDEALHEIGHT
|
||||
)
|
||||
|
||||
type LITEM struct {
|
||||
Mask uint32
|
||||
ILink int32
|
||||
State uint32
|
||||
StateMask uint32
|
||||
SzID [MAX_LINKID_TEXT]uint16
|
||||
SzUrl [L_MAX_URL_LENGTH]uint16
|
||||
}
|
||||
|
||||
type LHITTESTINFO struct {
|
||||
Pt POINT
|
||||
Item LITEM
|
||||
}
|
||||
|
||||
type NMLINK struct {
|
||||
Hdr NMHDR
|
||||
Item LITEM
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
// Copyright 2011 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const TCM_FIRST = 0x1300
|
||||
const TCN_FIRST = -550
|
||||
|
||||
const (
|
||||
TCS_SCROLLOPPOSITE = 0x0001
|
||||
TCS_BOTTOM = 0x0002
|
||||
TCS_RIGHT = 0x0002
|
||||
TCS_MULTISELECT = 0x0004
|
||||
TCS_FLATBUTTONS = 0x0008
|
||||
TCS_FORCEICONLEFT = 0x0010
|
||||
TCS_FORCELABELLEFT = 0x0020
|
||||
TCS_HOTTRACK = 0x0040
|
||||
TCS_VERTICAL = 0x0080
|
||||
TCS_TABS = 0x0000
|
||||
TCS_BUTTONS = 0x0100
|
||||
TCS_SINGLELINE = 0x0000
|
||||
TCS_MULTILINE = 0x0200
|
||||
TCS_RIGHTJUSTIFY = 0x0000
|
||||
TCS_FIXEDWIDTH = 0x0400
|
||||
TCS_RAGGEDRIGHT = 0x0800
|
||||
TCS_FOCUSONBUTTONDOWN = 0x1000
|
||||
TCS_OWNERDRAWFIXED = 0x2000
|
||||
TCS_TOOLTIPS = 0x4000
|
||||
TCS_FOCUSNEVER = 0x8000
|
||||
)
|
||||
|
||||
const (
|
||||
TCS_EX_FLATSEPARATORS = 0x00000001
|
||||
TCS_EX_REGISTERDROP = 0x00000002
|
||||
)
|
||||
|
||||
const (
|
||||
TCM_GETIMAGELIST = TCM_FIRST + 2
|
||||
TCM_SETIMAGELIST = TCM_FIRST + 3
|
||||
TCM_GETITEMCOUNT = TCM_FIRST + 4
|
||||
TCM_GETITEM = TCM_FIRST + 60
|
||||
TCM_SETITEM = TCM_FIRST + 61
|
||||
TCM_INSERTITEM = TCM_FIRST + 62
|
||||
TCM_DELETEITEM = TCM_FIRST + 8
|
||||
TCM_DELETEALLITEMS = TCM_FIRST + 9
|
||||
TCM_GETITEMRECT = TCM_FIRST + 10
|
||||
TCM_GETCURSEL = TCM_FIRST + 11
|
||||
TCM_SETCURSEL = TCM_FIRST + 12
|
||||
TCM_HITTEST = TCM_FIRST + 13
|
||||
TCM_SETITEMEXTRA = TCM_FIRST + 14
|
||||
TCM_ADJUSTRECT = TCM_FIRST + 40
|
||||
TCM_SETITEMSIZE = TCM_FIRST + 41
|
||||
TCM_REMOVEIMAGE = TCM_FIRST + 42
|
||||
TCM_SETPADDING = TCM_FIRST + 43
|
||||
TCM_GETROWCOUNT = TCM_FIRST + 44
|
||||
TCM_GETTOOLTIPS = TCM_FIRST + 45
|
||||
TCM_SETTOOLTIPS = TCM_FIRST + 46
|
||||
TCM_GETCURFOCUS = TCM_FIRST + 47
|
||||
TCM_SETCURFOCUS = TCM_FIRST + 48
|
||||
TCM_SETMINTABWIDTH = TCM_FIRST + 49
|
||||
TCM_DESELECTALL = TCM_FIRST + 50
|
||||
TCM_HIGHLIGHTITEM = TCM_FIRST + 51
|
||||
TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52
|
||||
TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53
|
||||
TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
||||
TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
||||
)
|
||||
|
||||
const (
|
||||
TCIF_TEXT = 0x0001
|
||||
TCIF_IMAGE = 0x0002
|
||||
TCIF_RTLREADING = 0x0004
|
||||
TCIF_PARAM = 0x0008
|
||||
TCIF_STATE = 0x0010
|
||||
)
|
||||
|
||||
const (
|
||||
TCIS_BUTTONPRESSED = 0x0001
|
||||
TCIS_HIGHLIGHTED = 0x0002
|
||||
)
|
||||
|
||||
const (
|
||||
TCHT_NOWHERE = 0x0001
|
||||
TCHT_ONITEMICON = 0x0002
|
||||
TCHT_ONITEMLABEL = 0x0004
|
||||
TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL
|
||||
)
|
||||
|
||||
const (
|
||||
TCN_KEYDOWN = TCN_FIRST - 0
|
||||
TCN_SELCHANGE = TCN_FIRST - 1
|
||||
TCN_SELCHANGING = TCN_FIRST - 2
|
||||
TCN_GETOBJECT = TCN_FIRST - 3
|
||||
TCN_FOCUSCHANGE = TCN_FIRST - 4
|
||||
)
|
||||
|
||||
type TCITEMHEADER struct {
|
||||
Mask uint32
|
||||
LpReserved1 uint32
|
||||
LpReserved2 uint32
|
||||
PszText *uint16
|
||||
CchTextMax int32
|
||||
IImage int32
|
||||
}
|
||||
|
||||
type TCITEM struct {
|
||||
Mask uint32
|
||||
DwState uint32
|
||||
DwStateMask uint32
|
||||
PszText *uint16
|
||||
CchTextMax int32
|
||||
IImage int32
|
||||
LParam uintptr
|
||||
}
|
||||
|
||||
type TCHITTESTINFO struct {
|
||||
Pt POINT
|
||||
flags uint32
|
||||
}
|
||||
|
||||
type NMTCKEYDOWN struct {
|
||||
Hdr NMHDR
|
||||
WVKey uint16
|
||||
Flags uint32
|
||||
}
|
|
@ -1,219 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// ToolBar messages
|
||||
const (
|
||||
TB_THUMBPOSITION = 4
|
||||
TB_THUMBTRACK = 5
|
||||
TB_ENDTRACK = 8
|
||||
TB_ENABLEBUTTON = WM_USER + 1
|
||||
TB_CHECKBUTTON = WM_USER + 2
|
||||
TB_PRESSBUTTON = WM_USER + 3
|
||||
TB_HIDEBUTTON = WM_USER + 4
|
||||
TB_INDETERMINATE = WM_USER + 5
|
||||
TB_MARKBUTTON = WM_USER + 6
|
||||
TB_ISBUTTONENABLED = WM_USER + 9
|
||||
TB_ISBUTTONCHECKED = WM_USER + 10
|
||||
TB_ISBUTTONPRESSED = WM_USER + 11
|
||||
TB_ISBUTTONHIDDEN = WM_USER + 12
|
||||
TB_ISBUTTONINDETERMINATE = WM_USER + 13
|
||||
TB_ISBUTTONHIGHLIGHTED = WM_USER + 14
|
||||
TB_SETSTATE = WM_USER + 17
|
||||
TB_GETSTATE = WM_USER + 18
|
||||
TB_ADDBITMAP = WM_USER + 19
|
||||
TB_DELETEBUTTON = WM_USER + 22
|
||||
TB_GETBUTTON = WM_USER + 23
|
||||
TB_BUTTONCOUNT = WM_USER + 24
|
||||
TB_COMMANDTOINDEX = WM_USER + 25
|
||||
TB_SAVERESTORE = WM_USER + 76
|
||||
TB_CUSTOMIZE = WM_USER + 27
|
||||
TB_ADDSTRING = WM_USER + 77
|
||||
TB_GETITEMRECT = WM_USER + 29
|
||||
TB_BUTTONSTRUCTSIZE = WM_USER + 30
|
||||
TB_SETBUTTONSIZE = WM_USER + 31
|
||||
TB_SETBITMAPSIZE = WM_USER + 32
|
||||
TB_AUTOSIZE = WM_USER + 33
|
||||
TB_GETTOOLTIPS = WM_USER + 35
|
||||
TB_SETTOOLTIPS = WM_USER + 36
|
||||
TB_SETPARENT = WM_USER + 37
|
||||
TB_SETROWS = WM_USER + 39
|
||||
TB_GETROWS = WM_USER + 40
|
||||
TB_GETBITMAPFLAGS = WM_USER + 41
|
||||
TB_SETCMDID = WM_USER + 42
|
||||
TB_CHANGEBITMAP = WM_USER + 43
|
||||
TB_GETBITMAP = WM_USER + 44
|
||||
TB_GETBUTTONTEXT = WM_USER + 75
|
||||
TB_REPLACEBITMAP = WM_USER + 46
|
||||
TB_GETBUTTONSIZE = WM_USER + 58
|
||||
TB_SETBUTTONWIDTH = WM_USER + 59
|
||||
TB_SETINDENT = WM_USER + 47
|
||||
TB_SETIMAGELIST = WM_USER + 48
|
||||
TB_GETIMAGELIST = WM_USER + 49
|
||||
TB_LOADIMAGES = WM_USER + 50
|
||||
TB_GETRECT = WM_USER + 51
|
||||
TB_SETHOTIMAGELIST = WM_USER + 52
|
||||
TB_GETHOTIMAGELIST = WM_USER + 53
|
||||
TB_SETDISABLEDIMAGELIST = WM_USER + 54
|
||||
TB_GETDISABLEDIMAGELIST = WM_USER + 55
|
||||
TB_SETSTYLE = WM_USER + 56
|
||||
TB_GETSTYLE = WM_USER + 57
|
||||
TB_SETMAXTEXTROWS = WM_USER + 60
|
||||
TB_GETTEXTROWS = WM_USER + 61
|
||||
TB_GETOBJECT = WM_USER + 62
|
||||
TB_GETBUTTONINFO = WM_USER + 63
|
||||
TB_SETBUTTONINFO = WM_USER + 64
|
||||
TB_INSERTBUTTON = WM_USER + 67
|
||||
TB_ADDBUTTONS = WM_USER + 68
|
||||
TB_HITTEST = WM_USER + 69
|
||||
TB_SETDRAWTEXTFLAGS = WM_USER + 70
|
||||
TB_GETHOTITEM = WM_USER + 71
|
||||
TB_SETHOTITEM = WM_USER + 72
|
||||
TB_SETANCHORHIGHLIGHT = WM_USER + 73
|
||||
TB_GETANCHORHIGHLIGHT = WM_USER + 74
|
||||
TB_GETINSERTMARK = WM_USER + 79
|
||||
TB_SETINSERTMARK = WM_USER + 80
|
||||
TB_INSERTMARKHITTEST = WM_USER + 81
|
||||
TB_MOVEBUTTON = WM_USER + 82
|
||||
TB_GETMAXSIZE = WM_USER + 83
|
||||
TB_SETEXTENDEDSTYLE = WM_USER + 84
|
||||
TB_GETEXTENDEDSTYLE = WM_USER + 85
|
||||
TB_GETPADDING = WM_USER + 86
|
||||
TB_SETPADDING = WM_USER + 87
|
||||
TB_SETINSERTMARKCOLOR = WM_USER + 88
|
||||
TB_GETINSERTMARKCOLOR = WM_USER + 89
|
||||
TB_MAPACCELERATOR = WM_USER + 90
|
||||
TB_GETSTRING = WM_USER + 91
|
||||
TB_GETIDEALSIZE = WM_USER + 99
|
||||
TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME
|
||||
TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME
|
||||
TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
||||
TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
||||
)
|
||||
|
||||
// ToolBar notifications
|
||||
const (
|
||||
TBN_FIRST = -700
|
||||
TBN_DROPDOWN = TBN_FIRST - 10
|
||||
)
|
||||
|
||||
// TBN_DROPDOWN return codes
|
||||
const (
|
||||
TBDDRET_DEFAULT = 0
|
||||
TBDDRET_NODEFAULT = 1
|
||||
TBDDRET_TREATPRESSED = 2
|
||||
)
|
||||
|
||||
// ToolBar state constants
|
||||
const (
|
||||
TBSTATE_CHECKED = 1
|
||||
TBSTATE_PRESSED = 2
|
||||
TBSTATE_ENABLED = 4
|
||||
TBSTATE_HIDDEN = 8
|
||||
TBSTATE_INDETERMINATE = 16
|
||||
TBSTATE_WRAP = 32
|
||||
TBSTATE_ELLIPSES = 0x40
|
||||
TBSTATE_MARKED = 0x0080
|
||||
)
|
||||
|
||||
// ToolBar style constants
|
||||
const (
|
||||
TBSTYLE_BUTTON = 0
|
||||
TBSTYLE_SEP = 1
|
||||
TBSTYLE_CHECK = 2
|
||||
TBSTYLE_GROUP = 4
|
||||
TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK
|
||||
TBSTYLE_DROPDOWN = 8
|
||||
TBSTYLE_AUTOSIZE = 16
|
||||
TBSTYLE_NOPREFIX = 32
|
||||
TBSTYLE_TOOLTIPS = 256
|
||||
TBSTYLE_WRAPABLE = 512
|
||||
TBSTYLE_ALTDRAG = 1024
|
||||
TBSTYLE_FLAT = 2048
|
||||
TBSTYLE_LIST = 4096
|
||||
TBSTYLE_CUSTOMERASE = 8192
|
||||
TBSTYLE_REGISTERDROP = 0x4000
|
||||
TBSTYLE_TRANSPARENT = 0x8000
|
||||
)
|
||||
|
||||
// ToolBar extended style constants
|
||||
const (
|
||||
TBSTYLE_EX_DRAWDDARROWS = 0x00000001
|
||||
TBSTYLE_EX_MIXEDBUTTONS = 8
|
||||
TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16
|
||||
TBSTYLE_EX_DOUBLEBUFFER = 0x80
|
||||
)
|
||||
|
||||
// ToolBar button style constants
|
||||
const (
|
||||
BTNS_BUTTON = TBSTYLE_BUTTON
|
||||
BTNS_SEP = TBSTYLE_SEP
|
||||
BTNS_CHECK = TBSTYLE_CHECK
|
||||
BTNS_GROUP = TBSTYLE_GROUP
|
||||
BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP
|
||||
BTNS_DROPDOWN = TBSTYLE_DROPDOWN
|
||||
BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE
|
||||
BTNS_NOPREFIX = TBSTYLE_NOPREFIX
|
||||
BTNS_WHOLEDROPDOWN = 0x0080
|
||||
BTNS_SHOWTEXT = 0x0040
|
||||
)
|
||||
|
||||
// TBBUTTONINFO mask flags
|
||||
const (
|
||||
TBIF_IMAGE = 0x00000001
|
||||
TBIF_TEXT = 0x00000002
|
||||
TBIF_STATE = 0x00000004
|
||||
TBIF_STYLE = 0x00000008
|
||||
TBIF_LPARAM = 0x00000010
|
||||
TBIF_COMMAND = 0x00000020
|
||||
TBIF_SIZE = 0x00000040
|
||||
TBIF_BYINDEX = 0x80000000
|
||||
)
|
||||
|
||||
type NMMOUSE struct {
|
||||
Hdr NMHDR
|
||||
DwItemSpec uintptr
|
||||
DwItemData uintptr
|
||||
Pt POINT
|
||||
DwHitInfo uintptr
|
||||
}
|
||||
|
||||
type NMTOOLBAR struct {
|
||||
Hdr NMHDR
|
||||
IItem int32
|
||||
TbButton TBBUTTON
|
||||
CchText int32
|
||||
PszText *uint16
|
||||
RcButton RECT
|
||||
}
|
||||
|
||||
type TBBUTTON struct {
|
||||
IBitmap int32
|
||||
IdCommand int32
|
||||
FsState byte
|
||||
FsStyle byte
|
||||
//#ifdef _WIN64
|
||||
// BYTE bReserved[6] // padding for alignment
|
||||
//#elif defined(_WIN32)
|
||||
BReserved [2]byte // padding for alignment
|
||||
//#endif
|
||||
DwData uintptr
|
||||
IString uintptr
|
||||
}
|
||||
|
||||
type TBBUTTONINFO struct {
|
||||
CbSize uint32
|
||||
DwMask uint32
|
||||
IdCommand int32
|
||||
IImage int32
|
||||
FsState byte
|
||||
FsStyle byte
|
||||
Cx uint16
|
||||
LParam uintptr
|
||||
PszText uintptr
|
||||
CchText int32
|
||||
}
|
|
@ -1,97 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// ToolTip styles
|
||||
const (
|
||||
TTS_ALWAYSTIP = 0x01
|
||||
TTS_NOPREFIX = 0x02
|
||||
TTS_NOANIMATE = 0x10
|
||||
TTS_NOFADE = 0x20
|
||||
TTS_BALLOON = 0x40
|
||||
TTS_CLOSE = 0x80
|
||||
)
|
||||
|
||||
// ToolTip messages
|
||||
const (
|
||||
TTM_ACTIVATE = WM_USER + 1
|
||||
TTM_SETDELAYTIME = WM_USER + 3
|
||||
TTM_ADDTOOL = WM_USER + 50
|
||||
TTM_DELTOOL = WM_USER + 51
|
||||
TTM_NEWTOOLRECT = WM_USER + 52
|
||||
TTM_RELAYEVENT = WM_USER + 7
|
||||
TTM_GETTOOLINFO = WM_USER + 53
|
||||
TTM_SETTOOLINFO = WM_USER + 54
|
||||
TTM_HITTEST = WM_USER + 55
|
||||
TTM_GETTEXT = WM_USER + 56
|
||||
TTM_UPDATETIPTEXT = WM_USER + 57
|
||||
TTM_GETTOOLCOUNT = WM_USER + 13
|
||||
TTM_ENUMTOOLS = WM_USER + 58
|
||||
TTM_GETCURRENTTOOL = WM_USER + 59
|
||||
TTM_WINDOWFROMPOINT = WM_USER + 16
|
||||
TTM_TRACKACTIVATE = WM_USER + 17
|
||||
TTM_TRACKPOSITION = WM_USER + 18
|
||||
TTM_SETTIPBKCOLOR = WM_USER + 19
|
||||
TTM_SETTIPTEXTCOLOR = WM_USER + 20
|
||||
TTM_GETDELAYTIME = WM_USER + 21
|
||||
TTM_GETTIPBKCOLOR = WM_USER + 22
|
||||
TTM_GETTIPTEXTCOLOR = WM_USER + 23
|
||||
TTM_SETMAXTIPWIDTH = WM_USER + 24
|
||||
TTM_GETMAXTIPWIDTH = WM_USER + 25
|
||||
TTM_SETMARGIN = WM_USER + 26
|
||||
TTM_GETMARGIN = WM_USER + 27
|
||||
TTM_POP = WM_USER + 28
|
||||
TTM_UPDATE = WM_USER + 29
|
||||
TTM_GETBUBBLESIZE = WM_USER + 30
|
||||
TTM_ADJUSTRECT = WM_USER + 31
|
||||
TTM_SETTITLE = WM_USER + 33
|
||||
TTM_POPUP = WM_USER + 34
|
||||
TTM_GETTITLE = WM_USER + 35
|
||||
)
|
||||
|
||||
// ToolTip flags
|
||||
const (
|
||||
TTF_IDISHWND = 0x0001
|
||||
TTF_CENTERTIP = 0x0002
|
||||
TTF_RTLREADING = 0x0004
|
||||
TTF_SUBCLASS = 0x0010
|
||||
TTF_TRACK = 0x0020
|
||||
TTF_ABSOLUTE = 0x0080
|
||||
TTF_TRANSPARENT = 0x0100
|
||||
TTF_DI_SETITEM = 0x8000
|
||||
)
|
||||
|
||||
// ToolTip icons
|
||||
const (
|
||||
TTI_NONE = 0
|
||||
TTI_INFO = 1
|
||||
TTI_WARNING = 2
|
||||
TTI_ERROR = 3
|
||||
)
|
||||
|
||||
type TOOLINFO struct {
|
||||
CbSize uint32
|
||||
UFlags uint32
|
||||
Hwnd HWND
|
||||
UId uintptr
|
||||
Rect RECT
|
||||
Hinst HINSTANCE
|
||||
LpszText *uint16
|
||||
LParam uintptr
|
||||
LpReserved unsafe.Pointer
|
||||
}
|
||||
|
||||
type TTGETTITLE struct {
|
||||
DwSize uint32
|
||||
UTitleBitmap uint32
|
||||
Cch uint32
|
||||
PszTitle *uint16
|
||||
}
|
|
@ -1,247 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
// TreeView styles
|
||||
const (
|
||||
TVS_HASBUTTONS = 0x0001
|
||||
TVS_HASLINES = 0x0002
|
||||
TVS_LINESATROOT = 0x0004
|
||||
TVS_EDITLABELS = 0x0008
|
||||
TVS_DISABLEDRAGDROP = 0x0010
|
||||
TVS_SHOWSELALWAYS = 0x0020
|
||||
TVS_RTLREADING = 0x0040
|
||||
TVS_NOTOOLTIPS = 0x0080
|
||||
TVS_CHECKBOXES = 0x0100
|
||||
TVS_TRACKSELECT = 0x0200
|
||||
TVS_SINGLEEXPAND = 0x0400
|
||||
TVS_INFOTIP = 0x0800
|
||||
TVS_FULLROWSELECT = 0x1000
|
||||
TVS_NOSCROLL = 0x2000
|
||||
TVS_NONEVENHEIGHT = 0x4000
|
||||
TVS_NOHSCROLL = 0x8000
|
||||
)
|
||||
|
||||
const (
|
||||
TVS_EX_NOSINGLECOLLAPSE = 0x0001
|
||||
TVS_EX_MULTISELECT = 0x0002
|
||||
TVS_EX_DOUBLEBUFFER = 0x0004
|
||||
TVS_EX_NOINDENTSTATE = 0x0008
|
||||
TVS_EX_RICHTOOLTIP = 0x0010
|
||||
TVS_EX_AUTOHSCROLL = 0x0020
|
||||
TVS_EX_FADEINOUTEXPANDOS = 0x0040
|
||||
TVS_EX_PARTIALCHECKBOXES = 0x0080
|
||||
TVS_EX_EXCLUSIONCHECKBOXES = 0x0100
|
||||
TVS_EX_DIMMEDCHECKBOXES = 0x0200
|
||||
TVS_EX_DRAWIMAGEASYNC = 0x0400
|
||||
)
|
||||
|
||||
const (
|
||||
TVIF_TEXT = 0x0001
|
||||
TVIF_IMAGE = 0x0002
|
||||
TVIF_PARAM = 0x0004
|
||||
TVIF_STATE = 0x0008
|
||||
TVIF_HANDLE = 0x0010
|
||||
TVIF_SELECTEDIMAGE = 0x0020
|
||||
TVIF_CHILDREN = 0x0040
|
||||
TVIF_INTEGRAL = 0x0080
|
||||
TVIF_STATEEX = 0x0100
|
||||
TVIF_EXPANDEDIMAGE = 0x0200
|
||||
)
|
||||
|
||||
const (
|
||||
TVIS_SELECTED = 0x0002
|
||||
TVIS_CUT = 0x0004
|
||||
TVIS_DROPHILITED = 0x0008
|
||||
TVIS_BOLD = 0x0010
|
||||
TVIS_EXPANDED = 0x0020
|
||||
TVIS_EXPANDEDONCE = 0x0040
|
||||
TVIS_EXPANDPARTIAL = 0x0080
|
||||
TVIS_OVERLAYMASK = 0x0F00
|
||||
TVIS_STATEIMAGEMASK = 0xF000
|
||||
TVIS_USERMASK = 0xF000
|
||||
)
|
||||
|
||||
const (
|
||||
TVIS_EX_FLAT = 0x0001
|
||||
TVIS_EX_DISABLED = 0x0002
|
||||
TVIS_EX_ALL = 0x0002
|
||||
)
|
||||
|
||||
const (
|
||||
TVI_ROOT = ^HTREEITEM(0xffff)
|
||||
TVI_FIRST = ^HTREEITEM(0xfffe)
|
||||
TVI_LAST = ^HTREEITEM(0xfffd)
|
||||
TVI_SORT = ^HTREEITEM(0xfffc)
|
||||
)
|
||||
|
||||
// TVM_EXPAND action flags
|
||||
const (
|
||||
TVE_COLLAPSE = 0x0001
|
||||
TVE_EXPAND = 0x0002
|
||||
TVE_TOGGLE = 0x0003
|
||||
TVE_EXPANDPARTIAL = 0x4000
|
||||
TVE_COLLAPSERESET = 0x8000
|
||||
)
|
||||
|
||||
const (
|
||||
TVGN_CARET = 9
|
||||
)
|
||||
|
||||
// TreeView messages
|
||||
const (
|
||||
TV_FIRST = 0x1100
|
||||
|
||||
TVM_INSERTITEM = TV_FIRST + 50
|
||||
TVM_DELETEITEM = TV_FIRST + 1
|
||||
TVM_EXPAND = TV_FIRST + 2
|
||||
TVM_GETITEMRECT = TV_FIRST + 4
|
||||
TVM_GETCOUNT = TV_FIRST + 5
|
||||
TVM_GETINDENT = TV_FIRST + 6
|
||||
TVM_SETINDENT = TV_FIRST + 7
|
||||
TVM_GETIMAGELIST = TV_FIRST + 8
|
||||
TVM_SETIMAGELIST = TV_FIRST + 9
|
||||
TVM_GETNEXTITEM = TV_FIRST + 10
|
||||
TVM_SELECTITEM = TV_FIRST + 11
|
||||
TVM_GETITEM = TV_FIRST + 62
|
||||
TVM_SETITEM = TV_FIRST + 63
|
||||
TVM_EDITLABEL = TV_FIRST + 65
|
||||
TVM_GETEDITCONTROL = TV_FIRST + 15
|
||||
TVM_GETVISIBLECOUNT = TV_FIRST + 16
|
||||
TVM_HITTEST = TV_FIRST + 17
|
||||
TVM_CREATEDRAGIMAGE = TV_FIRST + 18
|
||||
TVM_SORTCHILDREN = TV_FIRST + 19
|
||||
TVM_ENSUREVISIBLE = TV_FIRST + 20
|
||||
TVM_SORTCHILDRENCB = TV_FIRST + 21
|
||||
TVM_ENDEDITLABELNOW = TV_FIRST + 22
|
||||
TVM_GETISEARCHSTRING = TV_FIRST + 64
|
||||
TVM_SETTOOLTIPS = TV_FIRST + 24
|
||||
TVM_GETTOOLTIPS = TV_FIRST + 25
|
||||
TVM_SETINSERTMARK = TV_FIRST + 26
|
||||
TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
||||
TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
||||
TVM_SETITEMHEIGHT = TV_FIRST + 27
|
||||
TVM_GETITEMHEIGHT = TV_FIRST + 28
|
||||
TVM_SETBKCOLOR = TV_FIRST + 29
|
||||
TVM_SETTEXTCOLOR = TV_FIRST + 30
|
||||
TVM_GETBKCOLOR = TV_FIRST + 31
|
||||
TVM_GETTEXTCOLOR = TV_FIRST + 32
|
||||
TVM_SETSCROLLTIME = TV_FIRST + 33
|
||||
TVM_GETSCROLLTIME = TV_FIRST + 34
|
||||
TVM_SETINSERTMARKCOLOR = TV_FIRST + 37
|
||||
TVM_GETINSERTMARKCOLOR = TV_FIRST + 38
|
||||
TVM_GETITEMSTATE = TV_FIRST + 39
|
||||
TVM_SETLINECOLOR = TV_FIRST + 40
|
||||
TVM_GETLINECOLOR = TV_FIRST + 41
|
||||
TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42
|
||||
TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43
|
||||
TVM_SETEXTENDEDSTYLE = TV_FIRST + 44
|
||||
TVM_GETEXTENDEDSTYLE = TV_FIRST + 45
|
||||
TVM_SETAUTOSCROLLINFO = TV_FIRST + 59
|
||||
)
|
||||
|
||||
// TreeView notifications
|
||||
const (
|
||||
TVN_FIRST = ^uint32(399)
|
||||
|
||||
TVN_SELCHANGING = TVN_FIRST - 50
|
||||
TVN_SELCHANGED = TVN_FIRST - 51
|
||||
TVN_GETDISPINFO = TVN_FIRST - 52
|
||||
TVN_ITEMEXPANDING = TVN_FIRST - 54
|
||||
TVN_ITEMEXPANDED = TVN_FIRST - 55
|
||||
TVN_BEGINDRAG = TVN_FIRST - 56
|
||||
TVN_BEGINRDRAG = TVN_FIRST - 57
|
||||
TVN_DELETEITEM = TVN_FIRST - 58
|
||||
TVN_BEGINLABELEDIT = TVN_FIRST - 59
|
||||
TVN_ENDLABELEDIT = TVN_FIRST - 60
|
||||
TVN_KEYDOWN = TVN_FIRST - 12
|
||||
TVN_GETINFOTIP = TVN_FIRST - 14
|
||||
TVN_SINGLEEXPAND = TVN_FIRST - 15
|
||||
TVN_ITEMCHANGING = TVN_FIRST - 17
|
||||
TVN_ITEMCHANGED = TVN_FIRST - 19
|
||||
TVN_ASYNCDRAW = TVN_FIRST - 20
|
||||
)
|
||||
|
||||
// TreeView hit test constants
|
||||
const (
|
||||
TVHT_NOWHERE = 1
|
||||
TVHT_ONITEMICON = 2
|
||||
TVHT_ONITEMLABEL = 4
|
||||
TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON
|
||||
TVHT_ONITEMINDENT = 8
|
||||
TVHT_ONITEMBUTTON = 16
|
||||
TVHT_ONITEMRIGHT = 32
|
||||
TVHT_ONITEMSTATEICON = 64
|
||||
TVHT_ABOVE = 256
|
||||
TVHT_BELOW = 512
|
||||
TVHT_TORIGHT = 1024
|
||||
TVHT_TOLEFT = 2048
|
||||
)
|
||||
|
||||
type HTREEITEM HANDLE
|
||||
|
||||
type TVITEM struct {
|
||||
Mask uint32
|
||||
HItem HTREEITEM
|
||||
State uint32
|
||||
StateMask uint32
|
||||
PszText uintptr
|
||||
CchTextMax int32
|
||||
IImage int32
|
||||
ISelectedImage int32
|
||||
CChildren int32
|
||||
LParam uintptr
|
||||
}
|
||||
|
||||
/*type TVITEMEX struct {
|
||||
mask UINT
|
||||
hItem HTREEITEM
|
||||
state UINT
|
||||
stateMask UINT
|
||||
pszText LPWSTR
|
||||
cchTextMax int
|
||||
iImage int
|
||||
iSelectedImage int
|
||||
cChildren int
|
||||
lParam LPARAM
|
||||
iIntegral int
|
||||
uStateEx UINT
|
||||
hwnd HWND
|
||||
iExpandedImage int
|
||||
}*/
|
||||
|
||||
type TVINSERTSTRUCT struct {
|
||||
HParent HTREEITEM
|
||||
HInsertAfter HTREEITEM
|
||||
Item TVITEM
|
||||
// itemex TVITEMEX
|
||||
}
|
||||
|
||||
type NMTREEVIEW struct {
|
||||
Hdr NMHDR
|
||||
Action uint32
|
||||
ItemOld TVITEM
|
||||
ItemNew TVITEM
|
||||
PtDrag POINT
|
||||
}
|
||||
|
||||
type NMTVDISPINFO struct {
|
||||
Hdr NMHDR
|
||||
Item TVITEM
|
||||
}
|
||||
|
||||
type NMTVKEYDOWN struct {
|
||||
Hdr NMHDR
|
||||
WVKey uint16
|
||||
Flags uint32
|
||||
}
|
||||
|
||||
type TVHITTESTINFO struct {
|
||||
Pt POINT
|
||||
Flags uint32
|
||||
HItem HTREEITEM
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
// Copyright 2011 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
const UDN_FIRST = ^uint32(720)
|
||||
|
||||
const (
|
||||
UD_MAXVAL = 0x7fff
|
||||
UD_MINVAL = ^uintptr(UD_MAXVAL - 1)
|
||||
)
|
||||
|
||||
const (
|
||||
UDS_WRAP = 0x0001
|
||||
UDS_SETBUDDYINT = 0x0002
|
||||
UDS_ALIGNRIGHT = 0x0004
|
||||
UDS_ALIGNLEFT = 0x0008
|
||||
UDS_AUTOBUDDY = 0x0010
|
||||
UDS_ARROWKEYS = 0x0020
|
||||
UDS_HORZ = 0x0040
|
||||
UDS_NOTHOUSANDS = 0x0080
|
||||
UDS_HOTTRACK = 0x0100
|
||||
)
|
||||
|
||||
const (
|
||||
UDM_SETRANGE = WM_USER + 101
|
||||
UDM_GETRANGE = WM_USER + 102
|
||||
UDM_SETPOS = WM_USER + 103
|
||||
UDM_GETPOS = WM_USER + 104
|
||||
UDM_SETBUDDY = WM_USER + 105
|
||||
UDM_GETBUDDY = WM_USER + 106
|
||||
UDM_SETACCEL = WM_USER + 107
|
||||
UDM_GETACCEL = WM_USER + 108
|
||||
UDM_SETBASE = WM_USER + 109
|
||||
UDM_GETBASE = WM_USER + 110
|
||||
UDM_SETRANGE32 = WM_USER + 111
|
||||
UDM_GETRANGE32 = WM_USER + 112
|
||||
UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
|
||||
UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
|
||||
UDM_SETPOS32 = WM_USER + 113
|
||||
UDM_GETPOS32 = WM_USER + 114
|
||||
)
|
||||
|
||||
const UDN_DELTAPOS = UDN_FIRST - 1
|
||||
|
||||
type UDACCEL struct {
|
||||
NSec uint32
|
||||
NInc uint32
|
||||
}
|
||||
|
||||
type NMUPDOWN struct {
|
||||
Hdr NMHDR
|
||||
IPos int32
|
||||
IDelta int32
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,260 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// CheckBox parts
|
||||
const (
|
||||
BP_CHECKBOX = 3
|
||||
)
|
||||
|
||||
// CheckBox states
|
||||
const (
|
||||
CBS_UNCHECKEDNORMAL = 1
|
||||
)
|
||||
|
||||
// LISTVIEW parts
|
||||
const (
|
||||
LVP_LISTITEM = 1
|
||||
LVP_LISTGROUP = 2
|
||||
LVP_LISTDETAIL = 3
|
||||
LVP_LISTSORTEDDETAIL = 4
|
||||
LVP_EMPTYTEXT = 5
|
||||
LVP_GROUPHEADER = 6
|
||||
LVP_GROUPHEADERLINE = 7
|
||||
LVP_EXPANDBUTTON = 8
|
||||
LVP_COLLAPSEBUTTON = 9
|
||||
LVP_COLUMNDETAIL = 10
|
||||
)
|
||||
|
||||
// LVP_LISTITEM states
|
||||
const (
|
||||
LISS_NORMAL = 1
|
||||
LISS_HOT = 2
|
||||
LISS_SELECTED = 3
|
||||
LISS_DISABLED = 4
|
||||
LISS_SELECTEDNOTFOCUS = 5
|
||||
LISS_HOTSELECTED = 6
|
||||
)
|
||||
|
||||
// TAB parts
|
||||
const (
|
||||
TABP_TABITEM = 1
|
||||
)
|
||||
|
||||
// TABP_TABITEM states
|
||||
const (
|
||||
TIS_NORMAL = 1
|
||||
TIS_HOT = 2
|
||||
TIS_SELECTED = 3
|
||||
TIS_DISABLED = 4
|
||||
TIS_FOCUSED = 5
|
||||
)
|
||||
|
||||
// TREEVIEW parts
|
||||
const (
|
||||
TVP_TREEITEM = 1
|
||||
TVP_GLYPH = 2
|
||||
TVP_BRANCH = 3
|
||||
TVP_HOTGLYPH = 4
|
||||
)
|
||||
|
||||
// TVP_TREEITEM states
|
||||
const (
|
||||
TREIS_NORMAL = 1
|
||||
TREIS_HOT = 2
|
||||
TREIS_SELECTED = 3
|
||||
TREIS_DISABLED = 4
|
||||
TREIS_SELECTEDNOTFOCUS = 5
|
||||
TREIS_HOTSELECTED = 6
|
||||
)
|
||||
|
||||
// DTTOPTS flags
|
||||
const (
|
||||
DTT_TEXTCOLOR = 1 << 0
|
||||
DTT_BORDERCOLOR = 1 << 1
|
||||
DTT_SHADOWCOLOR = 1 << 2
|
||||
DTT_SHADOWTYPE = 1 << 3
|
||||
DTT_SHADOWOFFSET = 1 << 4
|
||||
DTT_BORDERSIZE = 1 << 5
|
||||
DTT_FONTPROP = 1 << 6
|
||||
DTT_COLORPROP = 1 << 7
|
||||
DTT_STATEID = 1 << 8
|
||||
DTT_CALCRECT = 1 << 9
|
||||
DTT_APPLYOVERLAY = 1 << 10
|
||||
DTT_GLOWSIZE = 1 << 11
|
||||
DTT_CALLBACK = 1 << 12
|
||||
DTT_COMPOSITED = 1 << 13
|
||||
DTT_VALIDBITS = DTT_TEXTCOLOR |
|
||||
DTT_BORDERCOLOR |
|
||||
DTT_SHADOWCOLOR |
|
||||
DTT_SHADOWTYPE |
|
||||
DTT_SHADOWOFFSET |
|
||||
DTT_BORDERSIZE |
|
||||
DTT_FONTPROP |
|
||||
DTT_COLORPROP |
|
||||
DTT_STATEID |
|
||||
DTT_CALCRECT |
|
||||
DTT_APPLYOVERLAY |
|
||||
DTT_GLOWSIZE |
|
||||
DTT_COMPOSITED
|
||||
)
|
||||
|
||||
type HTHEME HANDLE
|
||||
|
||||
type THEMESIZE int
|
||||
|
||||
const (
|
||||
TS_MIN THEMESIZE = iota
|
||||
TS_TRUE
|
||||
TS_DRAW
|
||||
)
|
||||
|
||||
type DTTOPTS struct {
|
||||
DwSize uint32
|
||||
DwFlags uint32
|
||||
CrText COLORREF
|
||||
CrBorder COLORREF
|
||||
CrShadow COLORREF
|
||||
ITextShadowType int
|
||||
PtShadowOffset POINT
|
||||
IBorderSize int
|
||||
IFontPropId int
|
||||
IColorPropId int
|
||||
IStateId int
|
||||
FApplyOverlay BOOL
|
||||
IGlowSize int
|
||||
PfnDrawTextCallback uintptr
|
||||
LParam uintptr
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libuxtheme uintptr
|
||||
|
||||
// Functions
|
||||
closeThemeData uintptr
|
||||
drawThemeBackground uintptr
|
||||
drawThemeTextEx uintptr
|
||||
getThemePartSize uintptr
|
||||
getThemeTextExtent uintptr
|
||||
isAppThemed uintptr
|
||||
openThemeData uintptr
|
||||
setWindowTheme uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libuxtheme = MustLoadLibrary("uxtheme.dll")
|
||||
|
||||
// Functions
|
||||
closeThemeData = MustGetProcAddress(libuxtheme, "CloseThemeData")
|
||||
drawThemeBackground = MustGetProcAddress(libuxtheme, "DrawThemeBackground")
|
||||
drawThemeTextEx = MustGetProcAddress(libuxtheme, "DrawThemeTextEx")
|
||||
getThemePartSize = MustGetProcAddress(libuxtheme, "GetThemePartSize")
|
||||
getThemeTextExtent = MustGetProcAddress(libuxtheme, "GetThemeTextExtent")
|
||||
isAppThemed = MustGetProcAddress(libuxtheme, "IsAppThemed")
|
||||
openThemeData = MustGetProcAddress(libuxtheme, "OpenThemeData")
|
||||
setWindowTheme = MustGetProcAddress(libuxtheme, "SetWindowTheme")
|
||||
}
|
||||
|
||||
func CloseThemeData(hTheme HTHEME) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(closeThemeData, 1,
|
||||
uintptr(hTheme),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func DrawThemeBackground(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pRect, pClipRect *RECT) HRESULT {
|
||||
ret, _, _ := syscall.Syscall6(drawThemeBackground, 6,
|
||||
uintptr(hTheme),
|
||||
uintptr(hdc),
|
||||
uintptr(iPartId),
|
||||
uintptr(iStateId),
|
||||
uintptr(unsafe.Pointer(pRect)),
|
||||
uintptr(unsafe.Pointer(pClipRect)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func DrawThemeTextEx(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pszText *uint16, iCharCount int32, dwFlags uint32, pRect *RECT, pOptions *DTTOPTS) HRESULT {
|
||||
ret, _, _ := syscall.Syscall9(drawThemeTextEx, 9,
|
||||
uintptr(hTheme),
|
||||
uintptr(hdc),
|
||||
uintptr(iPartId),
|
||||
uintptr(iStateId),
|
||||
uintptr(unsafe.Pointer(pszText)),
|
||||
uintptr(iCharCount),
|
||||
uintptr(dwFlags),
|
||||
uintptr(unsafe.Pointer(pRect)),
|
||||
uintptr(unsafe.Pointer(pOptions)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func GetThemePartSize(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, prc *RECT, eSize THEMESIZE, psz *SIZE) HRESULT {
|
||||
ret, _, _ := syscall.Syscall9(getThemePartSize, 7,
|
||||
uintptr(hTheme),
|
||||
uintptr(hdc),
|
||||
uintptr(iPartId),
|
||||
uintptr(iStateId),
|
||||
uintptr(unsafe.Pointer(prc)),
|
||||
uintptr(eSize),
|
||||
uintptr(unsafe.Pointer(psz)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func GetThemeTextExtent(hTheme HTHEME, hdc HDC, iPartId, iStateId int32, pszText *uint16, iCharCount int32, dwTextFlags uint32, pBoundingRect, pExtentRect *RECT) HRESULT {
|
||||
ret, _, _ := syscall.Syscall9(getThemeTextExtent, 9,
|
||||
uintptr(hTheme),
|
||||
uintptr(hdc),
|
||||
uintptr(iPartId),
|
||||
uintptr(iStateId),
|
||||
uintptr(unsafe.Pointer(pszText)),
|
||||
uintptr(iCharCount),
|
||||
uintptr(dwTextFlags),
|
||||
uintptr(unsafe.Pointer(pBoundingRect)),
|
||||
uintptr(unsafe.Pointer(pExtentRect)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
||||
|
||||
func IsAppThemed() bool {
|
||||
ret, _, _ := syscall.Syscall(isAppThemed, 0,
|
||||
0,
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func OpenThemeData(hwnd HWND, pszClassList *uint16) HTHEME {
|
||||
ret, _, _ := syscall.Syscall(openThemeData, 2,
|
||||
uintptr(hwnd),
|
||||
uintptr(unsafe.Pointer(pszClassList)),
|
||||
0)
|
||||
|
||||
return HTHEME(ret)
|
||||
}
|
||||
|
||||
func SetWindowTheme(hwnd HWND, pszSubAppName, pszSubIdList *uint16) HRESULT {
|
||||
ret, _, _ := syscall.Syscall(setWindowTheme, 3,
|
||||
uintptr(hwnd),
|
||||
uintptr(unsafe.Pointer(pszSubAppName)),
|
||||
uintptr(unsafe.Pointer(pszSubIdList)))
|
||||
|
||||
return HRESULT(ret)
|
||||
}
|
|
@ -1,112 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func init() {
|
||||
runtime.LockOSThread()
|
||||
}
|
||||
|
||||
const (
|
||||
S_OK = 0x00000000
|
||||
S_FALSE = 0x00000001
|
||||
E_UNEXPECTED = 0x8000FFFF
|
||||
E_NOTIMPL = 0x80004001
|
||||
E_OUTOFMEMORY = 0x8007000E
|
||||
E_INVALIDARG = 0x80070057
|
||||
E_NOINTERFACE = 0x80004002
|
||||
E_POINTER = 0x80004003
|
||||
E_HANDLE = 0x80070006
|
||||
E_ABORT = 0x80004004
|
||||
E_FAIL = 0x80004005
|
||||
E_ACCESSDENIED = 0x80070005
|
||||
E_PENDING = 0x8000000A
|
||||
)
|
||||
|
||||
const (
|
||||
FALSE = 0
|
||||
TRUE = 1
|
||||
)
|
||||
|
||||
type (
|
||||
BOOL int32
|
||||
HRESULT int32
|
||||
)
|
||||
|
||||
func MustLoadLibrary(name string) uintptr {
|
||||
lib, err := syscall.LoadLibrary(name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return uintptr(lib)
|
||||
}
|
||||
|
||||
func MustGetProcAddress(lib uintptr, name string) uintptr {
|
||||
addr, err := syscall.GetProcAddress(syscall.Handle(lib), name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return uintptr(addr)
|
||||
}
|
||||
|
||||
func SUCCEEDED(hr HRESULT) bool {
|
||||
return hr >= 0
|
||||
}
|
||||
|
||||
func FAILED(hr HRESULT) bool {
|
||||
return hr < 0
|
||||
}
|
||||
|
||||
func MAKEWORD(lo, hi byte) uint16 {
|
||||
return uint16(uint16(lo) | ((uint16(hi)) << 8))
|
||||
}
|
||||
|
||||
func LOBYTE(w uint16) byte {
|
||||
return byte(w)
|
||||
}
|
||||
|
||||
func HIBYTE(w uint16) byte {
|
||||
return byte(w >> 8 & 0xff)
|
||||
}
|
||||
|
||||
func MAKELONG(lo, hi uint16) uint32 {
|
||||
return uint32(uint32(lo) | ((uint32(hi)) << 16))
|
||||
}
|
||||
|
||||
func LOWORD(dw uint32) uint16 {
|
||||
return uint16(dw)
|
||||
}
|
||||
|
||||
func HIWORD(dw uint32) uint16 {
|
||||
return uint16(dw >> 16 & 0xffff)
|
||||
}
|
||||
|
||||
func UTF16PtrToString(s *uint16) string {
|
||||
if s == nil {
|
||||
return ""
|
||||
}
|
||||
return syscall.UTF16ToString((*[1 << 29]uint16)(unsafe.Pointer(s))[0:])
|
||||
}
|
||||
|
||||
func MAKEINTRESOURCE(id uintptr) *uint16 {
|
||||
return (*uint16)(unsafe.Pointer(id))
|
||||
}
|
||||
|
||||
func BoolToBOOL(value bool) BOOL {
|
||||
if value {
|
||||
return 1
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
// Copyright 2010 The win Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// +build windows
|
||||
|
||||
package win
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// EnumPrinters flags
|
||||
const (
|
||||
PRINTER_ENUM_DEFAULT = 0x00000001
|
||||
PRINTER_ENUM_LOCAL = 0x00000002
|
||||
PRINTER_ENUM_CONNECTIONS = 0x00000004
|
||||
PRINTER_ENUM_FAVORITE = 0x00000004
|
||||
PRINTER_ENUM_NAME = 0x00000008
|
||||
PRINTER_ENUM_REMOTE = 0x00000010
|
||||
PRINTER_ENUM_SHARED = 0x00000020
|
||||
PRINTER_ENUM_NETWORK = 0x00000040
|
||||
)
|
||||
|
||||
type PRINTER_INFO_4 struct {
|
||||
PPrinterName *uint16
|
||||
PServerName *uint16
|
||||
Attributes uint32
|
||||
}
|
||||
|
||||
var (
|
||||
// Library
|
||||
libwinspool uintptr
|
||||
|
||||
// Functions
|
||||
deviceCapabilities uintptr
|
||||
documentProperties uintptr
|
||||
enumPrinters uintptr
|
||||
getDefaultPrinter uintptr
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Library
|
||||
libwinspool = MustLoadLibrary("winspool.drv")
|
||||
|
||||
// Functions
|
||||
deviceCapabilities = MustGetProcAddress(libwinspool, "DeviceCapabilitiesW")
|
||||
documentProperties = MustGetProcAddress(libwinspool, "DocumentPropertiesW")
|
||||
enumPrinters = MustGetProcAddress(libwinspool, "EnumPrintersW")
|
||||
getDefaultPrinter = MustGetProcAddress(libwinspool, "GetDefaultPrinterW")
|
||||
}
|
||||
|
||||
func DeviceCapabilities(pDevice, pPort *uint16, fwCapability uint16, pOutput *uint16, pDevMode *DEVMODE) uint32 {
|
||||
ret, _, _ := syscall.Syscall6(deviceCapabilities, 5,
|
||||
uintptr(unsafe.Pointer(pDevice)),
|
||||
uintptr(unsafe.Pointer(pPort)),
|
||||
uintptr(fwCapability),
|
||||
uintptr(unsafe.Pointer(pOutput)),
|
||||
uintptr(unsafe.Pointer(pDevMode)),
|
||||
0)
|
||||
|
||||
return uint32(ret)
|
||||
}
|
||||
|
||||
func DocumentProperties(hWnd HWND, hPrinter HANDLE, pDeviceName *uint16, pDevModeOutput, pDevModeInput *DEVMODE, fMode uint32) int32 {
|
||||
ret, _, _ := syscall.Syscall6(documentProperties, 6,
|
||||
uintptr(hWnd),
|
||||
uintptr(hPrinter),
|
||||
uintptr(unsafe.Pointer(pDeviceName)),
|
||||
uintptr(unsafe.Pointer(pDevModeOutput)),
|
||||
uintptr(unsafe.Pointer(pDevModeInput)),
|
||||
uintptr(fMode))
|
||||
|
||||
return int32(ret)
|
||||
}
|
||||
|
||||
func EnumPrinters(Flags uint32, Name *uint16, Level uint32, pPrinterEnum *byte, cbBuf uint32, pcbNeeded, pcReturned *uint32) bool {
|
||||
ret, _, _ := syscall.Syscall9(enumPrinters, 7,
|
||||
uintptr(Flags),
|
||||
uintptr(unsafe.Pointer(Name)),
|
||||
uintptr(Level),
|
||||
uintptr(unsafe.Pointer(pPrinterEnum)),
|
||||
uintptr(cbBuf),
|
||||
uintptr(unsafe.Pointer(pcbNeeded)),
|
||||
uintptr(unsafe.Pointer(pcReturned)),
|
||||
0,
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
||||
|
||||
func GetDefaultPrinter(pszBuffer *uint16, pcchBuffer *uint32) bool {
|
||||
ret, _, _ := syscall.Syscall(getDefaultPrinter, 2,
|
||||
uintptr(unsafe.Pointer(pszBuffer)),
|
||||
uintptr(unsafe.Pointer(pcchBuffer)),
|
||||
0)
|
||||
|
||||
return ret != 0
|
||||
}
|
Loading…
Reference in New Issue