mirror of
https://gitee.com/energye/energy.git
synced 2024-12-02 11:47:37 +08:00
增加VF组件窗口边框和标题栏显示/隐藏配置
This commit is contained in:
parent
c467ce6009
commit
f0112dfec6
@ -24,9 +24,9 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
//LCLBrowserWindow 基于CEF lcl 窗口组件
|
||||
// LCLBrowserWindow 基于CEF lcl 窗口组件
|
||||
//
|
||||
//该窗口使用CEF和LCL组件实现,CEF<=1.106.xx版本 在windows、MacOSX可正常使用, Linux无法输入中文, CEF>=2.107.xx版本linux强制使用 ViewsFrameworkBrowserWindow 窗口组件
|
||||
// 该窗口使用CEF和LCL组件实现,CEF<=1.106.xx版本 在windows、MacOSX可正常使用, Linux无法输入中文, CEF>=2.107.xx版本linux强制使用 ViewsFrameworkBrowserWindow 窗口组件
|
||||
type LCLBrowserWindow struct {
|
||||
*lcl.TForm //
|
||||
chromium IChromium //
|
||||
@ -54,9 +54,9 @@ type LCLBrowserWindow struct {
|
||||
cwcap *customWindowCaption //自定义窗口标题栏
|
||||
}
|
||||
|
||||
//创建一个 LCL 带有 chromium 窗口
|
||||
// 创建一个 LCL 带有 chromium 窗口
|
||||
//
|
||||
//该窗口默认不具备默认事件处理能力, 通过 EnableDefaultEvent 函数注册事件处理
|
||||
// 该窗口默认不具备默认事件处理能力, 通过 EnableDefaultEvent 函数注册事件处理
|
||||
func NewLCLBrowserWindow(config *tCefChromiumConfig, windowProperty WindowProperty, owner ...lcl.IComponent) *LCLBrowserWindow {
|
||||
var window = NewLCLWindow(windowProperty, owner...)
|
||||
window.ChromiumCreate(config, windowProperty.Url)
|
||||
@ -69,7 +69,7 @@ func NewLCLBrowserWindow(config *tCefChromiumConfig, windowProperty WindowProper
|
||||
return window
|
||||
}
|
||||
|
||||
//创建一个LCL window窗口
|
||||
// 创建一个LCL window窗口
|
||||
func NewLCLWindow(windowProperty WindowProperty, owner ...lcl.IComponent) *LCLBrowserWindow {
|
||||
var window = &LCLBrowserWindow{}
|
||||
if len(owner) > 0 {
|
||||
@ -91,7 +91,7 @@ func NewLCLWindow(windowProperty WindowProperty, owner ...lcl.IComponent) *LCLBr
|
||||
return window
|
||||
}
|
||||
|
||||
//设置属性
|
||||
// 设置属性
|
||||
func (m *LCLBrowserWindow) setProperty() {
|
||||
m.SetTitle(m.windowProperty.Title)
|
||||
if m.windowProperty.IconFS != "" {
|
||||
@ -113,7 +113,7 @@ func (m *LCLBrowserWindow) setProperty() {
|
||||
if m.windowProperty.AlwaysOnTop {
|
||||
m.SetFormStyle(types.FsSystemStayOnTop)
|
||||
}
|
||||
if m.windowProperty._EnableHideCaption {
|
||||
if m.windowProperty.EnableHideCaption {
|
||||
m.HideTitle()
|
||||
} else {
|
||||
if !m.windowProperty.EnableMinimize {
|
||||
@ -333,7 +333,7 @@ func (m *LCLBrowserWindow) SetVisible(value bool) {
|
||||
m.TForm.SetVisible(value)
|
||||
}
|
||||
|
||||
//以默认的方式展示在任务栏上
|
||||
// 以默认的方式展示在任务栏上
|
||||
func (m *LCLBrowserWindow) SetDefaultInTaskBar() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -341,7 +341,7 @@ func (m *LCLBrowserWindow) SetDefaultInTaskBar() {
|
||||
m.TForm.SetShowInTaskBar(types.StDefault)
|
||||
}
|
||||
|
||||
//展示在任务栏上
|
||||
// 展示在任务栏上
|
||||
func (m *LCLBrowserWindow) SetShowInTaskBar() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -349,7 +349,7 @@ func (m *LCLBrowserWindow) SetShowInTaskBar() {
|
||||
m.TForm.SetShowInTaskBar(types.StAlways)
|
||||
}
|
||||
|
||||
//不会展示在任务栏上
|
||||
// 不会展示在任务栏上
|
||||
func (m *LCLBrowserWindow) SetNotInTaskBar() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -357,16 +357,16 @@ func (m *LCLBrowserWindow) SetNotInTaskBar() {
|
||||
m.TForm.SetShowInTaskBar(types.StNever)
|
||||
}
|
||||
|
||||
//返回chromium的父组件对象,该对象不是window组件对象,属于window的一个子组件
|
||||
// 返回chromium的父组件对象,该对象不是window组件对象,属于window的一个子组件
|
||||
//
|
||||
//在windows下它是 TCEFWindowParent, linux或macOSx下它是 TCEFLinkedWindowParent
|
||||
// 在windows下它是 TCEFWindowParent, linux或macOSx下它是 TCEFLinkedWindowParent
|
||||
//
|
||||
//通过函数可调整该组件的属性
|
||||
// 通过函数可调整该组件的属性
|
||||
func (m *LCLBrowserWindow) WindowParent() ITCefWindowParent {
|
||||
return m.windowParent
|
||||
}
|
||||
|
||||
//返回窗口关闭状态
|
||||
// 返回窗口关闭状态
|
||||
func (m *LCLBrowserWindow) IsClosing() bool {
|
||||
return m.isClosing
|
||||
}
|
||||
@ -428,7 +428,7 @@ func (m *LCLBrowserWindow) putChromiumWindowInfo() {
|
||||
BrowserWindow.putWindowInfo(m.windowId, m)
|
||||
}
|
||||
|
||||
//默认的chromium事件
|
||||
// 默认的chromium事件
|
||||
func (m *LCLBrowserWindow) defaultChromiumEvent() {
|
||||
if m.WindowType() != consts.WT_DEV_TOOLS {
|
||||
AddGoForm(m.windowId, m.Instance())
|
||||
@ -449,7 +449,7 @@ func (m *LCLBrowserWindow) FormCreate() {
|
||||
m.SetName(fmt.Sprintf("energy_window_name_%d", time.Now().UnixNano()/1e6))
|
||||
}
|
||||
|
||||
//默认窗口活动/关闭处理事件
|
||||
// 默认窗口活动/关闭处理事件
|
||||
func (m *LCLBrowserWindow) defaultWindowEvent() {
|
||||
if m.WindowType() != consts.WT_DEV_TOOLS {
|
||||
m.TForm.SetOnActivate(m.activate)
|
||||
@ -458,19 +458,19 @@ func (m *LCLBrowserWindow) defaultWindowEvent() {
|
||||
m.TForm.SetOnShow(m.show)
|
||||
}
|
||||
|
||||
//默认的窗口关闭事件
|
||||
// 默认的窗口关闭事件
|
||||
func (m *LCLBrowserWindow) defaultWindowCloseEvent() {
|
||||
m.TForm.SetOnClose(m.close)
|
||||
m.TForm.SetOnCloseQuery(m.closeQuery)
|
||||
}
|
||||
|
||||
//启用默认关闭事件行为-该窗口将被关闭
|
||||
// 启用默认关闭事件行为-该窗口将被关闭
|
||||
func (m *LCLBrowserWindow) EnableDefaultCloseEvent() {
|
||||
m.defaultWindowCloseEvent()
|
||||
m.registerDefaultChromiumCloseEvent()
|
||||
}
|
||||
|
||||
//启用所有默认事件行为
|
||||
// 启用所有默认事件行为
|
||||
func (m *LCLBrowserWindow) EnableAllDefaultEvent() {
|
||||
m.defaultWindowCloseEvent()
|
||||
m.defaultChromiumEvent()
|
||||
@ -501,7 +501,7 @@ func (m *LCLBrowserWindow) SetOnCloseQuery(fn TCloseQueryEvent) {
|
||||
m.onCloseQuery = fn
|
||||
}
|
||||
|
||||
//每次激活窗口之后执行一次
|
||||
// 每次激活窗口之后执行一次
|
||||
func (m *LCLBrowserWindow) SetOnActivateAfter(fn lcl.TNotifyEvent) {
|
||||
m.onActivateAfter = fn
|
||||
}
|
||||
@ -543,7 +543,7 @@ func (m *LCLBrowserWindow) CloseBrowserWindow() {
|
||||
})
|
||||
}
|
||||
|
||||
//禁用口透明
|
||||
// 禁用口透明
|
||||
func (m *LCLBrowserWindow) DisableTransparent() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -552,7 +552,7 @@ func (m *LCLBrowserWindow) DisableTransparent() {
|
||||
m.SetAlphaBlendValue(255)
|
||||
}
|
||||
|
||||
//使窗口透明 value 0 ~ 255
|
||||
// 使窗口透明 value 0 ~ 255
|
||||
func (m *LCLBrowserWindow) EnableTransparent(value uint8) {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -561,7 +561,7 @@ func (m *LCLBrowserWindow) EnableTransparent(value uint8) {
|
||||
m.SetAlphaBlendValue(value)
|
||||
}
|
||||
|
||||
//禁用最小化按钮
|
||||
// 禁用最小化按钮
|
||||
func (m *LCLBrowserWindow) DisableMinimize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -571,7 +571,7 @@ func (m *LCLBrowserWindow) DisableMinimize() {
|
||||
m.EnabledMinimize(m.WindowProperty().EnableMinimize)
|
||||
}
|
||||
|
||||
//禁用最大化按钮
|
||||
// 禁用最大化按钮
|
||||
func (m *LCLBrowserWindow) DisableMaximize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -581,18 +581,18 @@ func (m *LCLBrowserWindow) DisableMaximize() {
|
||||
m.EnabledMaximize(m.WindowProperty().EnableMaximize)
|
||||
}
|
||||
|
||||
//禁用调整窗口大小
|
||||
// 禁用调整窗口大小
|
||||
func (m *LCLBrowserWindow) DisableResize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
}
|
||||
m.WindowProperty().EnableResize = false
|
||||
if !m.WindowProperty()._EnableHideCaption {
|
||||
if !m.WindowProperty().EnableHideCaption {
|
||||
m.TForm.SetBorderStyle(types.BsSingle)
|
||||
}
|
||||
}
|
||||
|
||||
//禁用系统菜单-同时禁用最小化,最大化,关闭按钮
|
||||
// 禁用系统菜单-同时禁用最小化,最大化,关闭按钮
|
||||
func (m *LCLBrowserWindow) DisableSystemMenu() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -601,7 +601,7 @@ func (m *LCLBrowserWindow) DisableSystemMenu() {
|
||||
m.EnabledSystemMenu(false)
|
||||
}
|
||||
|
||||
//禁用帮助菜单
|
||||
// 禁用帮助菜单
|
||||
func (m *LCLBrowserWindow) DisableHelp() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -609,7 +609,7 @@ func (m *LCLBrowserWindow) DisableHelp() {
|
||||
m.SetBorderIcons(m.BorderIcons().Exclude(types.BiHelp))
|
||||
}
|
||||
|
||||
//启用最小化按钮
|
||||
// 启用最小化按钮
|
||||
func (m *LCLBrowserWindow) EnableMinimize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -619,7 +619,7 @@ func (m *LCLBrowserWindow) EnableMinimize() {
|
||||
m.EnabledMinimize(m.WindowProperty().EnableMinimize)
|
||||
}
|
||||
|
||||
//启用最大化按钮
|
||||
// 启用最大化按钮
|
||||
func (m *LCLBrowserWindow) EnableMaximize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -629,18 +629,18 @@ func (m *LCLBrowserWindow) EnableMaximize() {
|
||||
m.EnabledMaximize(m.WindowProperty().EnableMaximize)
|
||||
}
|
||||
|
||||
//启用调整窗口大小
|
||||
// 启用调整窗口大小
|
||||
func (m *LCLBrowserWindow) EnableResize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
}
|
||||
m.WindowProperty().EnableResize = true
|
||||
if !m.WindowProperty()._EnableHideCaption {
|
||||
if !m.WindowProperty().EnableHideCaption {
|
||||
m.TForm.SetBorderStyle(types.BsSizeable)
|
||||
}
|
||||
}
|
||||
|
||||
//启用系统菜单-同时禁用最小化,最大化,关闭按钮
|
||||
// 启用系统菜单-同时禁用最小化,最大化,关闭按钮
|
||||
func (m *LCLBrowserWindow) EnableSystemMenu() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -649,7 +649,7 @@ func (m *LCLBrowserWindow) EnableSystemMenu() {
|
||||
m.EnabledSystemMenu(true)
|
||||
}
|
||||
|
||||
//启用帮助菜单
|
||||
// 启用帮助菜单
|
||||
func (m *LCLBrowserWindow) EnableHelp() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
@ -920,7 +920,7 @@ func (m *LCLBrowserWindow) closeQuery(sender lcl.IObject, close *bool) {
|
||||
}
|
||||
}
|
||||
|
||||
//默认的chromium关闭事件
|
||||
// 默认的chromium关闭事件
|
||||
func (m *LCLBrowserWindow) registerDefaultChromiumCloseEvent() {
|
||||
var bwEvent = BrowserWindow.browserEvent
|
||||
m.chromium.SetOnClose(func(sender lcl.IObject, browser *ICefBrowser, aAction *TCefCloseBrowsesAction) {
|
||||
|
@ -19,7 +19,7 @@ import (
|
||||
"github.com/energye/golcl/lcl/win"
|
||||
)
|
||||
|
||||
//定义四角和边框范围
|
||||
// 定义四角和边框范围
|
||||
var (
|
||||
angleRange int32 = 10 //四角
|
||||
borderRange int32 = 5 //四边框
|
||||
@ -35,9 +35,9 @@ type customWindowCaption struct {
|
||||
rgn *HRGN //
|
||||
}
|
||||
|
||||
//显示标题栏
|
||||
// 显示标题栏
|
||||
func (m *LCLBrowserWindow) ShowTitle() {
|
||||
m.WindowProperty()._EnableHideCaption = false
|
||||
m.WindowProperty().EnableHideCaption = false
|
||||
//win.SetWindowLong(m.Handle(), win.GWL_STYLE, uintptr(win.GetWindowLong(m.Handle(), win.GWL_STYLE)|win.WS_CAPTION))
|
||||
//win.SetWindowPos(m.Handle(), m.Handle(), 0, 0, 0, 0, win.SWP_NOSIZE|win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED)
|
||||
m.EnabledMaximize(m.WindowProperty().EnableMaximize)
|
||||
@ -45,9 +45,9 @@ func (m *LCLBrowserWindow) ShowTitle() {
|
||||
m.SetBorderStyle(types.BsSizeable)
|
||||
}
|
||||
|
||||
//隐藏标题栏
|
||||
// 隐藏标题栏
|
||||
func (m *LCLBrowserWindow) HideTitle() {
|
||||
m.WindowProperty()._EnableHideCaption = true
|
||||
m.WindowProperty().EnableHideCaption = true
|
||||
//win.SetWindowLong(m.Handle(), win.GWL_STYLE, uintptr(win.GetWindowLong(m.Handle(), win.GWL_STYLE)&^win.WS_CAPTION))
|
||||
//win.SetWindowPos(m.Handle(), 0, 0, 0, m.Width(), m.Height()+500, win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED|win.SWP_DRAWFRAME)
|
||||
//无标题栏情况会导致任务栏不能切换窗口,不知道为什么要这样设置一下
|
||||
@ -78,7 +78,7 @@ func (m *customWindowCaption) free() {
|
||||
}
|
||||
}
|
||||
|
||||
//NC 非客户区鼠标移动
|
||||
// NC 非客户区鼠标移动
|
||||
func (m *customWindowCaption) onNCMouseMove(message *types.TMessage, lResult *types.LRESULT, aHandled *bool) {
|
||||
if m.canCaption { // 当前在标题栏
|
||||
} else if m.canBorder { // 当前在边框
|
||||
@ -87,7 +87,7 @@ func (m *customWindowCaption) onNCMouseMove(message *types.TMessage, lResult *ty
|
||||
}
|
||||
}
|
||||
|
||||
//设置鼠标图标
|
||||
// 设置鼠标图标
|
||||
func (m *customWindowCaption) onSetCursor(message *types.TMessage, lResult *types.LRESULT, aHandled *bool) {
|
||||
if m.canBorder { //当前在边框
|
||||
switch LOWORD(uint32(message.LParam)) {
|
||||
@ -111,7 +111,7 @@ func (m *customWindowCaption) onSetCursor(message *types.TMessage, lResult *type
|
||||
}
|
||||
}
|
||||
|
||||
//鼠标是否在边框
|
||||
// 鼠标是否在边框
|
||||
func (m *customWindowCaption) onCanBorder(x, y int32, rect *types.TRect) (int, bool) {
|
||||
if m.canBorder = x <= rect.Width() && x >= rect.Width()-angleRange && y <= angleRange; m.canBorder { // 右上
|
||||
m.borderWMSZ = WMSZ_TOPRIGHT
|
||||
@ -149,7 +149,7 @@ func (m *customWindowCaption) onCanBorder(x, y int32, rect *types.TRect) (int, b
|
||||
return 0, false
|
||||
}
|
||||
|
||||
//NC 鼠标左键按下
|
||||
// NC 鼠标左键按下
|
||||
func (m *customWindowCaption) onNCLButtonDown(hWND types.HWND, message *types.TMessage, lResult *types.LRESULT, aHandled *bool) {
|
||||
if m.canCaption { // 标题栏
|
||||
x, y := m.toPoint(message)
|
||||
@ -169,14 +169,14 @@ func (m *customWindowCaption) onNCLButtonDown(hWND types.HWND, message *types.TM
|
||||
}
|
||||
}
|
||||
|
||||
//转换XY坐标
|
||||
// 转换XY坐标
|
||||
func (m *customWindowCaption) toPoint(message *types.TMessage) (x, y int32) {
|
||||
return GET_X_LPARAM(message.LParam), GET_Y_LPARAM(message.LParam)
|
||||
}
|
||||
|
||||
//鼠标是否在标题栏区域
|
||||
// 鼠标是否在标题栏区域
|
||||
//
|
||||
//如果启用了css拖拽则校验拖拽区域,否则只返回相对于浏览器窗口的x,y坐标
|
||||
// 如果启用了css拖拽则校验拖拽区域,否则只返回相对于浏览器窗口的x,y坐标
|
||||
func (m *customWindowCaption) isCaption(hWND types.HWND, message *types.TMessage) (int32, int32, bool) {
|
||||
dx, dy := m.toPoint(message)
|
||||
p := &types.TPoint{
|
||||
@ -231,7 +231,7 @@ func (m *LCLBrowserWindow) doOnRenderCompMsg(message *types.TMessage, lResult *t
|
||||
if caption { //窗口标题栏
|
||||
*lResult = HTCAPTION
|
||||
*aHandled = true
|
||||
} else if m.WindowProperty()._EnableHideCaption && m.WindowProperty().EnableResize && m.WindowState() == types.WsNormal { //1.窗口隐藏标题栏 2.启用了调整窗口大小 3.非最大化、最小化、全屏状态
|
||||
} else if m.WindowProperty().EnableHideCaption && m.WindowProperty().EnableResize && m.WindowState() == types.WsNormal { //1.窗口隐藏标题栏 2.启用了调整窗口大小 3.非最大化、最小化、全屏状态
|
||||
rect := m.BoundsRect()
|
||||
if result, handled := m.cwcap.onCanBorder(x, y, &rect); handled {
|
||||
*lResult = types.LRESULT(result)
|
||||
@ -241,7 +241,7 @@ func (m *LCLBrowserWindow) doOnRenderCompMsg(message *types.TMessage, lResult *t
|
||||
}
|
||||
}
|
||||
|
||||
//每一次拖拽区域改变都需要重新设置
|
||||
// 每一次拖拽区域改变都需要重新设置
|
||||
func (m *LCLBrowserWindow) setDraggableRegions() {
|
||||
//在主线程中运行
|
||||
QueueAsyncCall(func(id int) {
|
||||
@ -278,7 +278,7 @@ func (m *LCLBrowserWindow) registerWindowsCompMsgEvent() {
|
||||
})
|
||||
if m.WindowProperty().EnableWebkitAppRegion && m.WindowProperty().EnableWebkitAppRegionDClk {
|
||||
m.windowResize = func(sender lcl.IObject) bool {
|
||||
if m.WindowState() == types.WsMaximized && (m.WindowProperty()._EnableHideCaption || m.BorderStyle() == types.BsNone || m.BorderStyle() == types.BsSingle) {
|
||||
if m.WindowState() == types.WsMaximized && (m.WindowProperty().EnableHideCaption || m.BorderStyle() == types.BsNone || m.BorderStyle() == types.BsSingle) {
|
||||
var monitor = m.Monitor().WorkareaRect()
|
||||
m.SetBounds(monitor.Left, monitor.Top, monitor.Right-monitor.Left, monitor.Bottom-monitor.Top)
|
||||
m.SetWindowState(types.WsMaximized)
|
||||
@ -296,7 +296,7 @@ func (m *LCLBrowserWindow) registerWindowsCompMsgEvent() {
|
||||
//}
|
||||
}
|
||||
|
||||
//for windows maximize and restore
|
||||
// for windows maximize and restore
|
||||
func (m *LCLBrowserWindow) Maximize() {
|
||||
if m.TForm == nil {
|
||||
return
|
||||
|
@ -20,11 +20,11 @@ import (
|
||||
"github.com/energye/golcl/lcl/types"
|
||||
)
|
||||
|
||||
//ViewsFrameworkBrowserWindow 基于CEF views framework 窗口组件
|
||||
// ViewsFrameworkBrowserWindow 基于CEF views framework 窗口组件
|
||||
//
|
||||
//该窗口使用CEF内部实现,在linux下107.xx以后版本默认使用GTK3,但无法使用lcl组件集成到窗口中
|
||||
// 该窗口使用CEF内部实现,在linux下107.xx以后版本默认使用GTK3,但无法使用lcl组件集成到窗口中
|
||||
//
|
||||
//当创建应用配置时 MultiThreadedMessageLoop 和 ExternalMessagePump 属性同时为false(linux系统默认强制false)时启用ViewsFramework窗口
|
||||
// 当创建应用配置时 MultiThreadedMessageLoop 和 ExternalMessagePump 属性同时为false(linux系统默认强制false)时启用ViewsFramework窗口
|
||||
type ViewsFrameworkBrowserWindow struct {
|
||||
isClosing bool //
|
||||
windowType consts.WINDOW_TYPE //0:browser 1:devTools 2:viewSource 默认:0
|
||||
@ -43,7 +43,7 @@ type ViewsFrameworkBrowserWindow struct {
|
||||
regions *TCefDraggableRegions //窗口内html拖拽区域
|
||||
}
|
||||
|
||||
//创建 ViewsFrameworkBrowserWindow 窗口
|
||||
// 创建 ViewsFrameworkBrowserWindow 窗口
|
||||
func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowProperty WindowProperty, owner ...lcl.IComponent) *ViewsFrameworkBrowserWindow {
|
||||
if chromiumConfig == nil {
|
||||
chromiumConfig = NewChromiumConfig()
|
||||
@ -96,7 +96,7 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr
|
||||
return m
|
||||
}
|
||||
|
||||
//ViewsFrameworkBrowserWindow 主窗口初始化
|
||||
// ViewsFrameworkBrowserWindow 主窗口初始化
|
||||
func (m *browser) appContextInitialized(app *TCEFApplication) {
|
||||
if !common.Args.IsMain() {
|
||||
return
|
||||
@ -160,7 +160,7 @@ func (m *ViewsFrameworkBrowserWindow) registerPopupEvent() {
|
||||
})
|
||||
}
|
||||
|
||||
//重置窗口属性-通过事件函数
|
||||
// 重置窗口属性-通过事件函数
|
||||
func (m *ViewsFrameworkBrowserWindow) ResetWindowPropertyForEvent() {
|
||||
wp := m.WindowProperty()
|
||||
m.windowComponent.SetOnGetInitialBounds(func(sender lcl.IObject, window *ICefWindow, aResult *TCefRect) {
|
||||
@ -190,6 +190,9 @@ func (m *ViewsFrameworkBrowserWindow) ResetWindowPropertyForEvent() {
|
||||
m.windowComponent.SetOnCanClose(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = wp.EnableClose
|
||||
})
|
||||
m.windowComponent.SetOnIsFrameless(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = wp.EnableHideCaption
|
||||
})
|
||||
m.windowComponent.SetAlwaysOnTop(wp.AlwaysOnTop)
|
||||
m.windowComponent.SetBounds(NewCefRect(wp.X, wp.Y, wp.Width, wp.Height))
|
||||
}
|
||||
@ -313,7 +316,7 @@ func (m *ViewsFrameworkBrowserWindow) registerDefaultEvent() {
|
||||
}
|
||||
}
|
||||
|
||||
//启用所有默认事件行为
|
||||
// 启用所有默认事件行为
|
||||
func (m *ViewsFrameworkBrowserWindow) EnableAllDefaultEvent() {
|
||||
m.registerPopupEvent()
|
||||
m.registerDefaultEvent()
|
||||
@ -493,7 +496,7 @@ func (m *ViewsFrameworkBrowserWindow) SetCenterWindow(value bool) {
|
||||
m.WindowProperty().EnableCenterWindow = value
|
||||
}
|
||||
|
||||
//返回窗口关闭状态
|
||||
// 返回窗口关闭状态
|
||||
func (m *ViewsFrameworkBrowserWindow) IsClosing() bool {
|
||||
return m.isClosing
|
||||
}
|
||||
@ -508,32 +511,32 @@ func (m *ViewsFrameworkBrowserWindow) SetWindowType(windowType consts.WINDOW_TYP
|
||||
m.windowType = windowType
|
||||
}
|
||||
|
||||
//禁用最小化按钮
|
||||
// 禁用最小化按钮
|
||||
func (m *ViewsFrameworkBrowserWindow) DisableMinimize() {
|
||||
m.WindowProperty().EnableMinimize = false
|
||||
}
|
||||
|
||||
//禁用最大化按钮
|
||||
// 禁用最大化按钮
|
||||
func (m *ViewsFrameworkBrowserWindow) DisableMaximize() {
|
||||
m.WindowProperty().EnableMaximize = false
|
||||
}
|
||||
|
||||
//禁用调整窗口大小
|
||||
// 禁用调整窗口大小
|
||||
func (m *ViewsFrameworkBrowserWindow) DisableResize() {
|
||||
m.WindowProperty().EnableResize = false
|
||||
}
|
||||
|
||||
//启用最小化按钮
|
||||
// 启用最小化按钮
|
||||
func (m *ViewsFrameworkBrowserWindow) EnableMinimize() {
|
||||
m.WindowProperty().EnableMinimize = true
|
||||
}
|
||||
|
||||
//启用最大化按钮
|
||||
// 启用最大化按钮
|
||||
func (m *ViewsFrameworkBrowserWindow) EnableMaximize() {
|
||||
m.WindowProperty().EnableMaximize = true
|
||||
}
|
||||
|
||||
//启用调整窗口大小
|
||||
// 启用调整窗口大小
|
||||
func (m *ViewsFrameworkBrowserWindow) EnableResize() {
|
||||
m.WindowProperty().EnableResize = true
|
||||
}
|
||||
|
@ -12,13 +12,20 @@
|
||||
// 非windows的未实现
|
||||
package cef
|
||||
|
||||
//显示标题栏
|
||||
// 显示标题栏
|
||||
func (m *ViewsFrameworkBrowserWindow) ShowTitle() {
|
||||
m.WindowProperty().EnableHideCaption = false
|
||||
m.WindowComponent().SetOnIsFrameless(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = false
|
||||
})
|
||||
}
|
||||
|
||||
//隐藏标题栏
|
||||
// 隐藏标题栏
|
||||
func (m *ViewsFrameworkBrowserWindow) HideTitle() {
|
||||
|
||||
m.WindowProperty().EnableHideCaption = true
|
||||
m.WindowComponent().SetOnIsFrameless(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = true
|
||||
})
|
||||
}
|
||||
|
||||
func (m *ViewsFrameworkBrowserWindow) SetDefaultInTaskBar() {
|
||||
|
@ -12,23 +12,30 @@
|
||||
package cef
|
||||
|
||||
import (
|
||||
"github.com/energye/golcl/lcl"
|
||||
"github.com/energye/golcl/lcl/win"
|
||||
)
|
||||
|
||||
//显示标题栏
|
||||
// 显示标题栏
|
||||
func (m *ViewsFrameworkBrowserWindow) ShowTitle() {
|
||||
m.WindowProperty()._EnableHideCaption = false
|
||||
handle := m.WindowComponent().WindowHandle()
|
||||
win.SetWindowLong(handle.ToPtr(), win.GWL_STYLE, uintptr(win.GetWindowLong(handle.ToPtr(), win.GWL_STYLE)|win.WS_CAPTION))
|
||||
win.SetWindowPos(handle.ToPtr(), 0, 0, 0, 0, 0, win.SWP_NOSIZE|win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED)
|
||||
m.WindowProperty().EnableHideCaption = false
|
||||
//handle := m.WindowComponent().WindowHandle()
|
||||
//win.SetWindowLong(handle.ToPtr(), win.GWL_STYLE, uintptr(win.GetWindowLong(handle.ToPtr(), win.GWL_STYLE)|win.WS_CAPTION))
|
||||
//win.SetWindowPos(handle.ToPtr(), 0, 0, 0, 0, 0, win.SWP_NOSIZE|win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED)
|
||||
m.WindowComponent().SetOnIsFrameless(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = false
|
||||
})
|
||||
}
|
||||
|
||||
//隐藏标题栏
|
||||
// 隐藏标题栏
|
||||
func (m *ViewsFrameworkBrowserWindow) HideTitle() {
|
||||
m.WindowProperty()._EnableHideCaption = true
|
||||
handle := m.WindowComponent().WindowHandle()
|
||||
win.SetWindowLong(handle.ToPtr(), win.GWL_STYLE, uintptr(win.GetWindowLong(handle.ToPtr(), win.GWL_STYLE)&^win.WS_CAPTION))
|
||||
win.SetWindowPos(handle.ToPtr(), 0, 0, 0, 0, 0, win.SWP_NOSIZE|win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED)
|
||||
m.WindowProperty().EnableHideCaption = true
|
||||
//handle := m.WindowComponent().WindowHandle()
|
||||
//win.SetWindowLong(handle.ToPtr(), win.GWL_STYLE, uintptr(win.GetWindowLong(handle.ToPtr(), win.GWL_STYLE)&^win.WS_CAPTION))
|
||||
//win.SetWindowPos(handle.ToPtr(), 0, 0, 0, 0, 0, win.SWP_NOSIZE|win.SWP_NOMOVE|win.SWP_NOZORDER|win.SWP_NOACTIVATE|win.SWP_FRAMECHANGED)
|
||||
m.WindowComponent().SetOnIsFrameless(func(sender lcl.IObject, window *ICefWindow, aResult *bool) {
|
||||
*aResult = true
|
||||
})
|
||||
}
|
||||
|
||||
func (m *ViewsFrameworkBrowserWindow) SetDefaultInTaskBar() {
|
||||
|
@ -14,7 +14,7 @@ import (
|
||||
"github.com/energye/golcl/lcl/types"
|
||||
)
|
||||
|
||||
//辅助工具
|
||||
// 辅助工具
|
||||
type auxTools struct {
|
||||
devToolsWindow IBrowserWindow //devTools
|
||||
devToolsX int32 //上次改变的窗体位置,宽度
|
||||
@ -29,9 +29,9 @@ type auxTools struct {
|
||||
viewSourceHeight int32 //
|
||||
}
|
||||
|
||||
//窗口属性配置器
|
||||
// 窗口属性配置器
|
||||
//
|
||||
//部分属性配置并不支持所有平台
|
||||
// 部分属性配置并不支持所有平台
|
||||
type WindowProperty struct {
|
||||
IsShowModel bool //是否以模态窗口显示
|
||||
WindowState types.TWindowState //窗口 状态
|
||||
@ -40,7 +40,7 @@ type WindowProperty struct {
|
||||
Url string //默认打开URL
|
||||
Icon string //窗口图标 加载本地图标 local > /app/resources/icon.ico, linux使用png
|
||||
IconFS string //窗口图标 加载emfs内置图标 emfs > resources/icon.ico, linux使用png
|
||||
_EnableHideCaption bool //窗口 是否隐藏标题栏
|
||||
EnableHideCaption bool //窗口 是否隐藏标题栏, VF窗口组件Linux下不能动态控制
|
||||
EnableMinimize bool //窗口 是否启用最小化 default: true
|
||||
EnableMaximize bool //窗口 是否启用最大化 default: true
|
||||
EnableResize bool //窗口 是否允许调整大小 default: true
|
||||
@ -56,9 +56,9 @@ type WindowProperty struct {
|
||||
Height int32 //窗口 高 default: 768
|
||||
}
|
||||
|
||||
//浏览器窗口基础接口
|
||||
// 浏览器窗口基础接口
|
||||
//
|
||||
//定义了常用函数
|
||||
// 定义了常用函数
|
||||
type IBrowserWindow interface {
|
||||
Id() int32 //窗口ID
|
||||
Handle() types.HWND //窗口句柄
|
||||
@ -107,9 +107,9 @@ type IBrowserWindow interface {
|
||||
NewSysTray() ITray //systray系统原生
|
||||
}
|
||||
|
||||
//浏览器 LCLBrowserWindow 窗口接口 继承 IBrowserWindow
|
||||
// 浏览器 LCLBrowserWindow 窗口接口 继承 IBrowserWindow
|
||||
//
|
||||
//定义了LCL常用函数
|
||||
// 定义了LCL常用函数
|
||||
type ILCLBrowserWindow interface {
|
||||
IBrowserWindow
|
||||
BrowserWindow() *LCLBrowserWindow //返回 LCLBrowserWindow 窗口结构
|
||||
@ -124,9 +124,9 @@ type ILCLBrowserWindow interface {
|
||||
NewTray() ITray //创建LCL的系统托盘
|
||||
}
|
||||
|
||||
//浏览器 ViewsFrameworkBrowserWindow 窗口接口 继承 IBrowserWindow
|
||||
// 浏览器 ViewsFrameworkBrowserWindow 窗口接口 继承 IBrowserWindow
|
||||
//
|
||||
//定义了ViewsFramework常用函数
|
||||
// 定义了ViewsFramework常用函数
|
||||
type IViewsFrameworkBrowserWindow interface {
|
||||
IBrowserWindow
|
||||
BrowserWindow() *ViewsFrameworkBrowserWindow //返回 ViewsFrameworkBrowserWindow 窗口结构
|
||||
@ -139,7 +139,7 @@ type IViewsFrameworkBrowserWindow interface {
|
||||
SetOnGetInitialBounds(onGetInitialBounds WindowComponentOnGetInitialBounds) //设置窗口初始bounds
|
||||
}
|
||||
|
||||
//创建一个属性配置器,带有窗口默认属性值
|
||||
// 创建一个属性配置器,带有窗口默认属性值
|
||||
func NewWindowProperty() WindowProperty {
|
||||
return WindowProperty{
|
||||
Title: "Energy",
|
||||
|
Loading…
Reference in New Issue
Block a user