【第七章7.2】托盘图标 -- 创建托盘图标

贴主:admin 发贴:2024-07-31 08:38 浏量:22
 import win.ui;
import win.ui.menu;
/*DSG{{*/
var winform = win.form(text="托盘图标";left=0;top=0;right=330;bottom=156)
winform.add(
    button={cls="button";text="创建托盘图标";left=97;top=37;right=248;bottom=68;z=1}
)
/*}}*/

//下面创建托盘图标
import win.util.tray;
winform.button.oncommand = function(id,event){ 
    // 创建托盘图标对象并关联当前窗口
    winform.tray = win.util.tray(winform)  
    // 设置鼠标悬停在托盘图标上时的提示文本
    winform.tray.tip = "鼠标提示" 
    
    // 弹出托盘消息通知
    // 注意在单引号包含的转义字符串里只能以 '\n' 表示换行符,其他换行被忽略。
    winform.tray.pop('
Win10 开始由操作系统的『专注』、应用程序的『通知』等设置
决定是否显示模幅提示或折叠消息到通知区。通知消息可使用 dotNet.toastListener 扩展库。'
,"托盘消息通知");
}

// 窗口最小化事件处理函数
winform.onMinimize = function(lParam){
    // 创建托盘图标对象并关联当前窗口
    winform.tray = win.util.tray(winform);
    // 隐藏窗口
    winform.show(false); 
    // 阻止默认消息传递,取消最小化过程
    return true;
}

// 托盘消息处理函数
winform.onTrayMessage = {
    [0x205/*_WM_RBUTTONUP*/  ] = function(wParam){ 
        // 弹出托盘菜单前,将主窗口前置
        // 避免不点击菜单不会消失,父窗口隐藏也要这样做
        win.setForeground(winform.hwnd,true) //参数 2 为 true 避免显示最小化窗口
         
        /*
        下面创建托盘弹出菜单。
        如果程序要开机启动到托盘,最好在这里创建菜单,在用户点击前不要创建菜单,
        避免系统启动时 DPI 缩放前创建的菜单字体偏小(出现这情况的机率很小)。
        如果不想重复创建菜单最好写到一个库里,然后在这里 import 即可避免上述问题。
        */
        import win.ui.menu;
        
        // 创建弹出菜单对象
        winform.popmenu = win.ui.popmenu(winform);
        // 添加菜单项 'open' 及响应函数
        winform.popmenu.add('&open',function(id){
            // 在下面输入菜单响应代码
        });
        // 添加分隔线
        winform.popmenu.add();
        // 添加菜单项 'exit' 及响应函数
        winform.popmenu.add('&exit',function(id){ winform.close() })	    
                
        // 弹出菜单
        winform.popmenu.popup();
        // 关闭菜单
        winform.popmenu.close();
    };
    [0x202/*_WM_LBUTTONUP*/] = function(wParam){ 
        // 鼠标左键单击托盘图标时的处理函数(目前为空)
    };
    [0x203/*_WM_LBUTTONDBLCLK*/] = function(wParam){ 
        // 鼠标左键双击托盘图标时的处理函数(目前为空)
    };
    [0x404/*_PARAM_DESTROY*/] = function(wParam){ 
        // 托盘图标销毁时的处理函数(目前为空)
    };
    [0x405/*_PARAM_CLICKED*/] = function(wParam){ 
        // 托盘图标点击时的处理函数(目前为空)
    };
}

// 显示窗口
winform.show(true);
// 启动界面线程消息循环
win.loopMessage();


简洁版

//创建托盘图标
import win.ui;
/*DSG{{*/
var winform = win.form(text="托盘图标";left=0;top=0;right=620;bottom=346)
winform.add(
button={cls="button";text="创建托盘图标";left=183;top=120;right=423;bottom=163;z=1}
)
/*}}*/

import win.util.tray; // 导入托盘图标库
winform.button.oncommand = function(id,event){
	winform.tray = win.util.tray(winform); //实例化 或者 初始化
	winform.tray.tip = "鼠标提示"; //设置将鼠标放在托盘图标上显示的文字提示 	
	winform.tray.pop('您有新的订单,订单:xxxxxxxx,预计配送时间xx:xx:xx , 请及时联系配送送货,歇歇!',"新订单",,5);//提示消息
}

winform.show(true);
win.loopMessage();


相关回复


    暂无评论!

发表回复