func goTrackbarCallback(barName_, winName_ *C.char, pos C.int) {
	runtime.LockOSThread()
	defer runtime.UnlockOSThread()

	winName := C.GoString(winName_)
	barName := C.GoString(barName_)

	win, ok := allWindows[winName]
	if !ok {
		return
	}

	trackbarHandle, ok := win.trackbarHandle[barName]
	if !ok {
		return
	}
	if trackbarHandle == nil {
		return
	}

	if fa, ok := trackbarHandle.(func(pos int)); ok {
		fa(int(pos))
	} else if fb, ok := trackbarHandle.(func(pos int, param ...interface{})); ok {
		param := win.trackbarParam[barName]
		if param != nil {
			fb(int(pos), param...)
		} else {
			fb(int(pos))
		}
	}
}
func goTrackbarCallback(barName_, winName_ *C.char, pos C.int) {
	runtime.LockOSThread()
	defer runtime.UnlockOSThread()

	winName := C.GoString(winName_)
	barName := C.GoString(barName_)

	win, ok := allWindows[winName]
	if !ok {
		return
	}

	trackbarHandle, ok := win.trackbarHandle[barName]
	if !ok {
		return
	}
	if trackbarHandle == nil {
		return
	}

	if fa, ok := trackbarHandle.(func(pos int)); ok {
		fa(int(pos))
	} else if fb, ok := trackbarHandle.(func(pos int, param ...interface{})); ok {
		param := win.trackbarParam[barName]
		if param != nil {
			fb(int(pos), param...)
		} else {
			fb(int(pos))
		}
	}
}
//export goTrackbarCallback