electron自定义标题栏的最大化,最小化,关闭窗口

渲染组件代码:

html 复制代码
<template>
  <div class="window-btn">
    <i class="minimize" @click="minimize">
      <img src="../assets/img/最小化.svg" alt="最小化" />
    </i>
    <i v-if="!isMaximized" class="maxiWindow" @click="maximize">
      <img src="../assets/img/最大化.svg" alt="最大化" />
    </i>
    <i v-if="isMaximized" class="resize" @click="restore">
      <img src="../assets/img/最大化.svg" alt="还原" />
    </i>
    <i class="close" @click="close">
      <img src="../assets/img/关闭.svg" alt="关闭" />
    </i>
  </div>
</template>
<script setup>
import { ref } from "vue";
const isMaximized = ref(false);
/* eslint-disable no-undef */
// 关闭窗口
const close = () => {
  electron.ipcRenderer.invoke("close");
};
// 最小化窗口
const minimize = () => {
  electron.ipcRenderer.invoke("minimize");
};
// 最大化窗口
const maximize = () => {
  electron.ipcRenderer.invoke("maximize");
  isMaximized.value = true;
};
// 还原窗口
const restore = () => {
  electron.ipcRenderer.invoke("restore");
  isMaximized.value = false;
};
</script>
<style scoped>
.window-btn {
  min-width: 110px;
  i {
    cursor: pointer;
    img {
      width: 30px;
      height: 30px;
      &:hover {
        background-color: hsla(0, 100%, 50%, 0.489);
      }
    }
  }
}
</style>

主进程代码:

javascript 复制代码
// 关闭窗口
const { dialog } = require('electron')
ipcMain.handle('close', () => {
  // 弹出确认框
  dialog
    .showMessageBox(null, {
      type: 'question',
      buttons: ['取消', '确定'],
      title: '确认关闭窗口',
      message: '确定要关闭窗口吗?'
    })
    .then((result) => {
      if (result.response === 1) {
        // 用户点击了"确定",关闭当前窗口
        BrowserWindow.getFocusedWindow().close()
        // 软件退出
        // app.quit()
      }
    })
})

// 最小化窗口
ipcMain.handle('minimize', () => {
  BrowserWindow.getFocusedWindow().minimize()
})
// 最大化窗口
ipcMain.handle('maximize', () => {
  BrowserWindow.getFocusedWindow().maximize()
})
// 还原窗口
ipcMain.handle('restore', () => {
  BrowserWindow.getFocusedWindow().restore()
})
相关推荐
华仔啊24 分钟前
Vue3 登录页还能这么丝滑?这个 hover 效果太惊艳了
前端·css·vue.js
IT_陈寒27 分钟前
JavaScript引擎优化:5个90%开发者都不知道的V8隐藏性能技巧
前端·人工智能·后端
云和数据.ChenGuang28 分钟前
Component template requires a root element, rather than just错误
前端·javascript·vue.js
mCell1 小时前
为博客添加 RSS 订阅
前端·vitepress·rss
艾小码1 小时前
告别JS初学者噩梦:这样写流程控制和函数才叫优雅
前端·javascript
sdgsdgdsgc3 小时前
Next.js企业级应用开发:SSR、ISR与性能监控方案
开发语言·前端·javascript
哲此一生9843 小时前
搭建Vue3工程(去除不必要的文件)
前端·javascript·vue.js
心止水j3 小时前
spark
javascript·数据库·spark
黑云压城After6 小时前
H5使用环信实现视频或语音通话
前端·javascript·vue.js
未来之窗软件服务7 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法