index.js

/**
 * 优雅地加载页面
 * show:false,创建一个隐蔽的窗口
 * win.on("ready-to-show",()=>{
        win.show();
    });//加载完才显示
 */

/**
 * 父子窗口(Mac OS X和Windows有一定差异)
 * 1、子窗口总是在父窗口之上 
 * 2、如果父窗口关闭,子窗口自动关闭
 * 
 * 子窗口相当于父窗口的悬浮窗口
 * Mac OS X和Windows的父子窗口的区别是:
 * 在Mac OS X下,移动父窗口,子窗口会随着父窗口移动
 * 在Windows下子窗口不会移动
 */    

/**
 * 模态窗口(Mac OS X和Windows差异比较大)
 * 模态窗口是指禁用父窗口的子窗口,也就是说,处于模态的子窗口显示后,无法使用父窗口,直到子窗口关闭
 * 1、模态窗口需要是另外一个窗口的子窗口
 * 2、一旦模态窗口显示,父窗口将无法使用
 * 
 * modal=true
 * 
 * Mac OS X 和Windows的模态窗口差异 
 * 1、模态窗口在Mac OS X下会隐藏的标题栏,只能通过close方法关闭模态子窗口
 * 在Windows下,模态子窗口仍然会显示菜单和标题栏
 * 2、在Mac OS X下,模态子窗口显示后,父窗口仍然可以拖动,但无法关闭,在Windows下,模态子窗口显示后父窗口无法拖动
 * 应用:主要用于桌面应用的对话框显示,如设置对话框、打开对话框。
 */

/**用代码关闭多个窗口
 * BrowserWindow对象的close方法用于关闭当前窗口
 * 关闭多窗口的基本原理:将所有窗口的BrowserWindow对象保存起来,只需要调用指定窗口的close方法,就可以关闭指定的一些窗口
 * 
 * global:全局变量,将所有窗口的BrowserWindow对象保存到windows数组中,将该数组保存到global中
 */

/**窗口之间的交互(传递数据)
 * window1和windw2,window1<->window2
 * 窗口之间的交互就是两个窗口之间的双向数据传递
 * 
 * 使用ipc(interProcess Communication,进程间通迅)方式在窗口间传递数据
 * ipcMain和ipcRenderer 
 * ipcMain用于主窗口中
 * ipcRenderer可用于其他窗口
 * 
 * 主窗口:window1,其他窗口:window2
 * 
 * 在Window2中会通过ipcRenderer触发一个事件,用于接收window1传递过来的数据,
 * 在window2关闭时,会通过ipcRenderer给window1发送一个消息,window1通过ipcMain触发一个事件,用于获取window2发过来的数据。
 */
const {app,BrowserWindow} = require('electron');
function createWindow(){
    win = new BrowserWindow({
        //show:false,
        webPreferences:{
            nodeIntegration: true, // 是否集成 Nodejs
            enableRemoteModule: true,
            contextIsolation: false,
        }
    });
    childWin=new BrowserWindow({
        parent:win,width:400,height:300,
        //module:true
    });
    win.loadFile('index.html');
    childWin.loadFile('child.html');
    win.on("ready-to-show",()=>{
        win.show();
    });
    if(process.platform!="darwin"){
        win.setIcon("images\\logn.jpg");
    }
    win.on('closed',()=>{
        console.log('closed')
        win=null;
    });
    childWin.on('closed',()=>{
        console.log('closed')
        childWin=null;
    });
}
app.on('ready',createWindow);
app.on('window-all-closed',()=>{
    console.log('window-all-closed');
    if(process.platform!='darwin'){

    }
});
app.on('activate',()=>{
    console.log('activate');
    if(win==null){
        createWindow();
    }
});
View Code

相关文章: