2022-12-07 15:50:59 +08:00
|
|
|
|
//----------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Copyright © yanghy. All Rights Reserved.
|
|
|
|
|
//
|
2023-02-19 23:21:47 +08:00
|
|
|
|
// Licensed under Apache License Version 2.0, January 2004
|
|
|
|
|
//
|
|
|
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
2022-12-07 15:50:59 +08:00
|
|
|
|
//
|
|
|
|
|
//----------------------------------------
|
|
|
|
|
|
2023-05-31 17:41:14 +08:00
|
|
|
|
// CEFWindowParent 组件
|
|
|
|
|
|
2022-10-26 20:31:39 +08:00
|
|
|
|
package cef
|
|
|
|
|
|
|
|
|
|
import (
|
2023-05-31 18:00:34 +08:00
|
|
|
|
"github.com/energye/energy/v2/common"
|
|
|
|
|
"github.com/energye/energy/v2/consts"
|
2022-10-26 20:31:39 +08:00
|
|
|
|
"github.com/energye/golcl/lcl"
|
2023-01-23 20:45:33 +08:00
|
|
|
|
"github.com/energye/golcl/lcl/types"
|
2022-10-26 20:31:39 +08:00
|
|
|
|
)
|
|
|
|
|
|
2023-05-31 17:41:14 +08:00
|
|
|
|
// ICEFWindowParent 接口定义
|
|
|
|
|
type ICEFWindowParent interface {
|
2022-10-26 20:31:39 +08:00
|
|
|
|
lcl.IWinControl
|
2023-05-31 17:41:14 +08:00
|
|
|
|
Instance() uintptr
|
2023-02-20 14:42:17 +08:00
|
|
|
|
Type() consts.TCefWindowHandleType // 组件类型, Windows TCEFWindowParent 组件,MacOSX, Linux TCEFLinkedWindowParent 组件
|
|
|
|
|
SetChromium(chromium IChromium, tag int32) // 设置 IChromium, 只 TCEFLinkedWindowParent 有效
|
|
|
|
|
UpdateSize() // 更新组件大小
|
|
|
|
|
HandleAllocated() bool // 处理所有
|
|
|
|
|
CreateHandle() // 创建句柄
|
|
|
|
|
SetOnEnter(fn lcl.TNotifyEvent) // 进入事件
|
|
|
|
|
SetOnExit(fn lcl.TNotifyEvent) // 退出事件
|
|
|
|
|
DestroyChildWindow() bool // 销毁子窗口
|
|
|
|
|
Free() // 释放
|
|
|
|
|
Handle() types.HWND // 组件句柄
|
|
|
|
|
Name() string // 获取组件名称
|
|
|
|
|
SetName(value string) // 设置组件名称
|
|
|
|
|
SetParent(value lcl.IWinControl) // 设置控件父容器
|
2023-05-31 17:41:14 +08:00
|
|
|
|
RevertCustomAnchors() // 恢复到自定义四角锚点定位
|
|
|
|
|
DefaultAnchors() // 恢复到默认四角锚点定位
|
2023-02-20 14:42:17 +08:00
|
|
|
|
Align() types.TAlign // 获取控件自动调整
|
|
|
|
|
SetAlign(value types.TAlign) // 设置控件自动调整
|
|
|
|
|
Anchors() types.TAnchors // 获取四个角位置的锚点
|
|
|
|
|
SetAnchors(value types.TAnchors) // 设置四个角位置的锚点
|
|
|
|
|
Visible() bool // 获取控件可视
|
|
|
|
|
SetVisible(value bool) // 设置控件可视
|
|
|
|
|
Enabled() bool // 获取是否启用
|
|
|
|
|
SetEnabled(value bool) // 设置是否启用
|
|
|
|
|
Left() int32 // 获取左边距
|
|
|
|
|
SetLeft(value int32) // 设置左边距
|
|
|
|
|
Top() int32 // 获取上边距
|
|
|
|
|
SetTop(value int32) // 设置上边距
|
|
|
|
|
Width() int32 // 获取宽度
|
|
|
|
|
SetWidth(value int32) // 设置宽度
|
|
|
|
|
Height() int32 // 获取高度
|
|
|
|
|
SetHeight(value int32) // 设置高度
|
|
|
|
|
BoundsRect() (result types.TRect) // 获取矩形边界
|
|
|
|
|
SetBoundsRect(value types.TRect) // 设置矩形边界
|
2023-05-31 17:41:14 +08:00
|
|
|
|
point() (x, y int32) // 坐标点
|
|
|
|
|
size() (w, h int32) // 大小
|
2022-10-26 20:31:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-02-20 14:42:17 +08:00
|
|
|
|
// NewCEFWindow 创建CEFWindowParent
|
|
|
|
|
//
|
|
|
|
|
// # Windows return TCEFWindowParent
|
|
|
|
|
//
|
|
|
|
|
// MacOSX, Linux return TCEFLinkedWindowParent
|
2023-05-31 17:41:14 +08:00
|
|
|
|
func NewCEFWindow(owner lcl.IComponent) ICEFWindowParent {
|
2022-11-02 12:47:47 +08:00
|
|
|
|
if common.IsWindows() {
|
2022-10-26 20:31:39 +08:00
|
|
|
|
return NewCEFWindowParent(owner)
|
|
|
|
|
} else {
|
|
|
|
|
return NewCEFLinkedWindowParent(owner)
|
|
|
|
|
}
|
|
|
|
|
}
|