- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用我的 Electron 项目(使用 angular 9),制作了一个带有窗口控制按钮(最小化、最大化、恢复等)的自定义标题栏。现在,每当我单击这些按钮(假设最小化)时,窗口就会突然隐藏,而不会显示 Windows 桌面应用程序正常的平滑淡出动画。因此,我制作了另一个虚拟 Electron 项目(没有 Angular 并使用纯 JavaScript)为窗口事件代码创建了 4 个按钮,如下所示的虚拟项目:
index.js
const {app, BrowserWindow, ipcMain} = require('electron') ;
let win ;
app.on('ready', () => {
win = new BrowserWindow({
width: 800,
height: 636,
frame: false,
webPreferences: {
nodeIntegration: true
}
}) ;
win.loadFile('./src/index.html') ;
});
app.on('window-all-closed', () => {
app.quit() ;
})
ipcMain.on('minimize:event', () => {
win.minimize() ;
}) ;
ipcMain.on('maximize:event', () => {
win.maximize() ;
}) ;
ipcMain.on('close:event', () => {
win.close() ;
}) ;
ipcMain.on('restore:event', () => {
win.restore() ;
}) ;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Hello World
<button id="min" click="minimize()">Minimize</button>
<button id="max" click="maximize()">Maximize</button>
<button id="close" click="close()">Close</button>
<button id="res" click="restore()">Restore</button>
<script>
const { ipcRenderer } = require('electron') ;
document.getElementById('min').onclick = function(){
ipcRenderer.send('minimize:event') ;
}
document.getElementById('max').onclick = function(){
ipcRenderer.send('maximize:event') ;
}
document.getElementById('close').onclick = function(){
ipcRenderer.send('close:event') ;
}
document.getElementById('res').onclick = function(){
ipcRenderer.send('restore:event') ;
}
</script>
</body>
</html>
const { app, BrowserWindow, ipcMain } = require('electron') ;
const config = require('./config') ;
let win, settings ;
let gotSingleInstanceAccess = app.requestSingleInstanceLock() ;
if(!gotSingleInstanceAccess){
app.quit() ;
}
app.on('ready', () => {
/// on redy fetch the settings
settings = config.createDefaultSettingsAndReturn() ;
// Create the browser window.
win = new BrowserWindow({
width: settings.appSettings.defaultWidth,
height: settings.appSettings.defaultHeight,
webPreferences: {
nodeIntegration: true,
},
show: false,
frame: false,
transparent: true,
minHeight: settings.appSettings.minHeight,
minWidth: settings.appSettings.minWidth
}) ;
if(!settings.appSettings.trayMode){
if(settings.appSettings.wasMaximized){
win.maximize() ;
}
else{
win.setBounds(settings.windowSettings.windowBounds) ;
}
}
else{
// do for traymode ;
}
win.loadURL('http://localhost:4200') ;
win.on('ready-to-show', () =>{
win.show() ;
}) ;
win.webContents.on('did-fail-load', () => {
win.loadURL('http://localhost:4200')
});
win.on('closed', () => {
win = null ;
})
}) ;
app.on('second-instance', (event,args, cwd) => {
if(win){
if(win.isMinimized()){
win.restore() ;
}
win.focus() ;
}
})
// Quit when all windows are closed.
app.on('window-all-closed', () => {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
console.log('saved settings successfully')
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (win = null) {
createWindow() ;
}
}) ;
ipcMain.on('window:minimize', () => {
win.blur() ;
win.minimize() ;
}) ;
ipcMain.on('window:maximize', () => {
win.maximize() ;
win.resizable = false ;
}) ;
ipcMain.on('window:restore', () => {
win.restore() ;
win.resizable = true ;
}) ;
ipcMain.on('window:close', () => {
win.close() ;
}) ;
import { Injectable } from '@angular/core';
import { WindowSettings } from '../interface/settings';
import { AppStoreService } from './app-store.service';
import { BehaviorSubject } from 'rxjs';
import { ElectronService } from 'ngx-electron';
import { ElectronHelperService } from './electron-helper.service';
@Injectable()
export class AppWindowService {
windowSettings: WindowSettings ;
maxmizeObservable: BehaviorSubject<boolean> ;
constructor(private helper: ElectronHelperService, private electron: ElectronService, private config: AppStoreService) {
this.windowSettings = this.config.store.get('settings.windowSettings') ;
this.maxmizeObservable = new BehaviorSubject<boolean>(this.windowSettings.wasMaximized) ;
}
// showing maximize/restore button
changeMaximizedState(value: boolean){
this.maxmizeObservable.next(value) ;
this.windowSettings.wasMaximized = value ;
}
winMaximize(){
this.windowSettings.windowBounds = this.helper.win.getBounds() ;
this.electron.ipcRenderer.send('window:maximize') ;
}
winRestore(){
this.helper.win.setBounds(this.windowSettings.windowBounds) ;
this.electron.ipcRenderer.send('window:restore') ;
}
winMinimize(){
this.electron.ipcRenderer.send('window:minimize') ;
}
winClose(){
this.electron.ipcRenderer.send('window:close') ;
}
}
最佳答案
因此,经过长时间的反复试验,我发现在我的 Angular 项目中,我有 transparent: true
在 BrowserWindow 配置中删除后,我的项目具有平滑的最小化、最大化和恢复动画。
关于javascript - Electron 应用程序窗口在最小化、最大化和关闭事件时仍然有动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62083708/
我有一个关于 DFA 最小化的问题。所以我使用了众所周知的技术将正则表达式转换为 NFA,然后使用 goto/closure 算法从中构造 DFA。现在的问题是如何将其最小化?我在这里看过有关它的课文
这是我的代码,当鼠标光标悬停在 TPanel 上时,它会“动画化”它。我还有一个代码块来取消它的动画。 procedure Tmain.pStarting1MouseEnter(Sender: TOb
我有图像 slider ,其中图像在超时时相互替换。我使用 jQuery 函数 setInterval() 但有一个小问题,在最小化浏览器窗口后,该函数继续“工作”,并且我恢复浏览器窗口图像的位置以令
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How can I stop a double click of the window title bar
当我在我的 Windows 窗体应用程序中单击最小化按钮时,我不希望它执行经典的 Windows 最小化动画(窗口下降到任务栏)。 据我所知,没有最小化事件,我只能使用调整大小,但我不知道如何检测我是
首先 - 对不起我的英语。 我刚刚创建了 Android 应用程序。它包含几个 Activity ,并在此应用程序的背景下播放音乐。当用户以某种方式(通过单击“后退”按钮、主页按钮或其他方式)离开应用
我需要帮助编写一个程序,该程序以 (X,Y) 的形式给出指定数量的坐标点。将给出的点数是程序中的第一行;它可以通过扫描仪读取。 我需要计算覆盖线 x = a 和 y = b 的所有点的最小面积。因此,
我需要一个 Activity 返回到上一个 Activity ,但如果再次单击该按钮,它将恢复上次的 Activity 。这是所需的过程:我点击一个按钮, Activity 开始。如果我点击“后退”按
随着这个动画变得越来越复杂,我不断添加参数,以便它们在每次回调时可用。目前共有 6 个。 例如,现在我想在显示消息时禁用输入框,因此我必须添加另一个元素 - in_element; 电话: M
这是一个基于对话框的 MFC 应用程序。我并没有故意添加任何关于最小化、最大化和恢复按钮的代码。它可以首先显示那些按钮。但它在长时间运行后就会消失。或者计算机的 sleep 可能导致此问题? 我不知道
如何使用 Windows API 禁用窗口的最大化和/或最小化功能?最大化/最小化框需要变灰并禁用,双击标题栏、拖动到屏幕顶部等也需要不起作用。 最佳答案 您可以调用 SetWindowLong/Se
是否有任何已知的算法帽子可以解决以下问题:我们有一个 session ,有多个同时会谈。用户应标记感兴趣的会谈,然后我们要创建一个会谈时间表,以便我的大多数人都可以参加他们的会谈并最大限度地减少日程冲
目前我负责为一个小项目开发一个(C++)窗口类;目标是将依赖性保持在最低限度。Win32/WinAPI 的实现按预期工作,但是,当涉及到 Linux/XCB 时,我正在努力。 我知道,我可以检查“_N
windows C++编程,如何让事件窗口最大化或最小化? 对于鼠标按下事件,我们使用类似 mi.dwFlags = MOUSEEVENTF_LEFTDOWN 的东西,并使用 SendInput()
我编写了以下获取 2 个参数的构造函数,如果值(x 或 y)为负,它将被初始化为零。 public Point1 ( int x , int y ) { //if one or
我有以下代码,如果我将导航窗口最大化,它运行良好,但是当我最小化它时它停止工作。 更多细节: 当窗口最小化时,“scrollDown & scrollTop”函数停止执行。 'use strict'
我有一个包含一些宏和用户表单的 Excel 文件。 我不希望用户在没有密码的情况下访问文件本身。他们应该只能看到用户表单并通过用户表单输入数据。 这是我目前拥有的代码。 Private Sub Wor
目前,我正在尝试训练一个同时具有复值张量作为输入和输出的网络。作为损失函数,我采用输出与真实值之间逐点差异的范数。 当我尝试最小化损失函数时,tensorflow 的“最小化”函数提示意外的复数。我觉
这个函数是我想要优化的主力。任何关于如何限制其内存使用的想法都会很棒。 function F(len, rNo, n, ratio = 0.5) s = zeros(len); m = co
在 Qt 下的 Windows Mobile 和 Symbian 平台上,如何通过单击应用程序中的某个按钮来最小化我的应用程序? 最佳答案 大概QWidget::setWindowState将适合您,
我是一名优秀的程序员,十分优秀!