Безрамное окно с элементами управления в электронном виде (Windows)

У вас может быть статический метод, который смотрит на HttpContext.Current и определяет, какой URL использовать (развитие или живой сервер) в зависимости от идентификатора хоста. HttpContext может предложить даже более простой способ сделать это, но это первый вариант, который я нашел, и он отлично работает.

21
задан nakamin 8 March 2016 в 20:01
поделиться

1 ответ

Предполагая, что вам не нужен оконный хром, вы можете сделать это, убрав рамку вокруг Electron и заполнив остальные html / css / js. Я написал статью о том, что вы ищете, в моем блоге здесь: http://www.mylifeforthecode.com/making-the-electron-shell-as-pretty-as-the-visual-studio-shell / . Код, с которого можно начать, также размещен здесь: https://github.com/srakowski/ElectronLikeVS

Подводя итог, необходимо передать frame: false при создании BrowserWindow:

mainWindow = new BrowserWindow({width: 800, height: 600, frame: false});

Затем создайте и добавьте кнопки управления для строки заголовка:

 <div id="title-bar">
      <div id="title">My Life For The Code</div>
      <div id="title-bar-btns">
           <button id="min-btn">-</button>
           <button id="max-btn">+</button>
           <button id="close-btn">x</button>
      </div>
 </div>

Привязка в функциях max / min / close в js:

(function () {

      var remote = require('remote'); 
      var BrowserWindow = remote.require('browser-window'); 

     function init() { 
          document.getElementById("min-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow();
               window.minimize(); 
          });

          document.getElementById("max-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow(); 
               window.maximize(); 
          });

          document.getElementById("close-btn").addEventListener("click", function (e) {
               var window = BrowserWindow.getFocusedWindow();
               window.close();
          }); 
     }; 

     document.onreadystatechange = function () {
          if (document.readyState == "complete") {
               init(); 
          }
     };

})();

Styling окно может быть хитрым, но ключ используют для использования специальных свойств из webkit. Вот некоторые минимальные CSS:

body {
 padding: 0px;
 margin: 0px; 
}

#title-bar {
 -webkit-app-region: drag;
 height: 24px; 
 background-color: darkviolet;
 padding: none;
 margin: 0px; 
}

#title {
 position: fixed;
 top: 0px;
 left: 6px; 
}

#title-bar-btns {
 -webkit-app-region: no-drag;
 position: fixed;
 top: 0px;
 right: 6px;
}

Обратите внимание, что они важны:

-webkit-app-region: drag;
-webkit-app-region: no-drag;

-webkit-app-region: перетаскивание в область «строки заголовка» сделает это так, что Вы можете перетащить его, как это обычно бывает с окнами. Не перетаскивание применяется к кнопкам, чтобы они не вызывали перетаскивания.

62
ответ дан Shawn Rakowski 8 March 2016 в 20:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: