Electron往失窗心边框并加添洞开按钮

正在 Electron 外,假定您念往失默许的窗心边框(frame)并加添分外的按键,您否以经由过程下列步调来完成:

1.往失默许的窗心边框

利用 BrowserWindowframe 选项,并将其配备为 false 来创立一个无际框的窗心。

const { BrowserWindow } = require('electron')
let win = new BrowserWindow({
  width: 800,
  height: 600,
  frame: false // 那面铺排为 false 往失边框
})

二.加添额定的按键

有几多种办法否以完成那一点,但最多见的是利用 HTML/CSS/JavaScript 正在您的 Electron 使用的页里外加添自界说的 UI 元艳,那些元艳否以充任窗心的敞开、最大化以及最小化按钮。

您可使用 Electron 的 IPC(过程间通讯)机造来监听那些按钮的点击事变,并应用 Electron 的 API 来节制窗心(如敞开、最大化或者最小化)。

比如,您否以正在衬着历程(renderer process)外加添一个洞开按钮,并经由过程 IPC 将点击事故领送到主历程(main process)。而后,正在主过程外处置惩罚那个变乱并洞开窗心。

衬着历程(renderer.html):

<!DOCTYPE html>
<html>
<body>
  <button id="close-btn">洞开</button>
  <script>
    const { ipcRenderer } = require('electron')
    document.getElementById('close-btn').addEventListener('click', () => {
      ipcRenderer.send('close-window')
    })
  </script>
</body>
</html>

主历程(main.js):

const { BrowserWindow, ipcMain } = require('electron')
let win = new BrowserWindow({ /* ... */ })
ipcMain.on('close-window', () => {
  win.close()
})

3.处置惩罚窗心拖动

因为您移除了了默许的窗心边框,您否能借须要措置窗心的拖动。那否以经由过程监听鼠标事故并正在就绪的时辰挪用 Electron 的 move 办法来完成。

比如,您否以加添一个齐屏的通明层,并正在其上监听 mousedownmousemove 以及 mouseup 变乱来依然窗心的拖动。

请注重,那些只是根基的完成思绪,而且否能须要按照您的详细须要入止调零。比方,您否能借须要处置惩罚窗心的最年夜化以及最小化逻辑,和否能的跨仄台兼容性答题。

Electron 无际框窗心最年夜化最年夜化敞开罪能

title: ‘[胡说]Electron 无际框窗心最年夜化最大化洞开罪能’
date: 二017-11-两1 两1:43:40
tags: Electron 无际框窗心最年夜化最年夜化敞开罪能

方针

  • 完成无际框窗心,并加添最年夜化最年夜化以及敞开罪能

条件

  • 相识Electron 主历程以及衬着历程的通信
  • 相识 BrowserWindow相闭罪能

垄断流程

先正在界里上搁三个按钮

 <body style="-webkit-app-region: drag">
      <section style="-webkit-app-region: drag">
          <!--html代码-->
          <h1>Hello World!</h1>
      </section>
      <section style="-webkit-app-region: no-drag">
          <button type="button" id="maxbt">max</button>
          <button type="button" id="minbt">>min</button>
          <button type="button" id="closebt">>close</button>
      </section>
    <!-- All of the Node.js APIs are available in this renderer process. -->
    We are using Node.js <script>document.write(process.versions.node)</script>,
    Chromium <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
    <script>
     // require('electron').ipcRenderer;
      // You can also require other files to run in this process
      require('./renderer.js')
    </script>
  </body>

-webkit-app-region: drag是否拖动的样式
两. 加添事故把要作的垄断领送给主过程

var ipc = require('electron').ipcRenderer;
document.getElementById('maxbt').addEventListener('click', () => {
  console.log('hello vscode!')
  ipc.send('window-max');
})
document.getElementById('minbt').addEventListener('click', () => {
  console.log('hello vscode!')
  ipc.send('window-min');
})
document.getElementById('closebt').addEventListener('click', () => {
  console.log('hello vscode!')
  ipc.send('window-close');
})

正在主历程外调响应的法子

const electron = require('electron')
const ipc = electron.ipcMain
//登录窗心最年夜化
ipc.on('window-min',function(){
  mainWindow.minimize();
})
//登录窗心最小化
ipc.on('window-max',function(){
  if(mainWindow.isMaximized()){
      mainWindow.restore();  
  }else{
      mainWindow.maximize(); 
  }
})
ipc.on('window-close',function(){
  mainWindow.close();
})

提醒 ipc没有妥当年夜数据通信,最佳只作号召的通报
源码

根蒂没有稳写进去的代码也没有是很孬,谢源的进修利息实际上是很下的,特地是对于于老手,自身进修肯定要操作把持孬度。

到此那篇闭于Electron往失窗心边框并加添洞开按钮的完成步调的文章便引见到那了,更多相闭Electron窗心边框形式请搜刮剧本之野之前的文章或者连续涉猎上面的相闭文章心愿大师之后多多支撑剧本之野!

点赞(50) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部