46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
|
//go:build windows
|
||
|
|
||
|
package wintray
|
||
|
|
||
|
import (
|
||
|
"unsafe"
|
||
|
|
||
|
"golang.org/x/sys/windows"
|
||
|
)
|
||
|
|
||
|
// Contains window class information.
|
||
|
// It is used with the RegisterClassEx and GetClassInfoEx functions.
|
||
|
// https://msdn.microsoft.com/en-us/library/ms633577.aspx
|
||
|
type wndClassEx struct {
|
||
|
Size, Style uint32
|
||
|
WndProc uintptr
|
||
|
ClsExtra, WndExtra int32
|
||
|
Instance, Icon, Cursor, Background windows.Handle
|
||
|
MenuName, ClassName *uint16
|
||
|
IconSm windows.Handle
|
||
|
}
|
||
|
|
||
|
// Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function.
|
||
|
// https://msdn.microsoft.com/en-us/library/ms633587.aspx
|
||
|
func (w *wndClassEx) register() error {
|
||
|
w.Size = uint32(unsafe.Sizeof(*w))
|
||
|
res, _, err := pRegisterClass.Call(uintptr(unsafe.Pointer(w)))
|
||
|
if res == 0 {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Unregisters a window class, freeing the memory required for the class.
|
||
|
// https://msdn.microsoft.com/en-us/library/ms644899.aspx
|
||
|
func (w *wndClassEx) unregister() error {
|
||
|
res, _, err := pUnregisterClass.Call(
|
||
|
uintptr(unsafe.Pointer(w.ClassName)),
|
||
|
uintptr(w.Instance),
|
||
|
)
|
||
|
if res == 0 {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|