解决方案 | aardio的plus控件实现无边框悬浮窗带按钮带置顶

复制代码
import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=312;bottom=50;border="none";menu=false;title=false)
winform.add(
bkplus={cls="bkplus";left=2;top=5;right=205;bottom=46;background="\res\bg_备份.jpg";z=1};
plus={cls="plus";text="截图";left=50;top=7;right=135;bottom=44;background="\res\btn.png";color=16711680;font=LOGFONT(h=-16;name='微软雅黑');notify=1;z=2};
plus2={cls="plus";text="截图OCR";left=146;top=7;right=249;bottom=44;background="\res\btn.png";color=255;font=LOGFONT(h=-16;name='微软雅黑';weight=700);notify=1;z=3};
plus3={cls="plus";left=265;top=12;right=291;bottom=38;background="\res\ontop.png";notify=1;z=4};
plus4={cls="plus";left=7;top=13;right=34;bottom=40;background="\res\ico.png";z=5}
)
/*}}*/

// 按钮点击事件
winform.plus.oncommand = function(id, event) {
    win.msgbox("你点击了按钮!", "提示");
}


// 设置窗口背景图片
winform.bkplus.onDrawBackground = function(graphics, rc) {
    // 如果需要自定义绘制背景,可以在这里添加代码
}

// 创建圆角无边框窗口
import win.region.round;
win.region.round(winform,,,8,8); // 设置圆角半径为8

// 添加圆角阴影
import win.ui.shadow;
win.ui.shadow(winform,,5,5); // 设置阴影效果

// 窗口点击事件(用于拖动窗口)
winform.wndproc = function(hwnd, message, wParam, lParam) {
    select(message) {
        case 0x201/*_WM_LBUTTONDOWN*/ {
            // 点击左键移动窗体
             winform.hitCaption();
        }
        case 0x205/*_WM_RBUTTONUP*/ {
            // 右键菜单
            var popmenu = win.ui.popmenu(winform);
            popmenu.add('置顶', function(id) { 
                win.setTopmost(winform.hwnd, true);
            })
            popmenu.add('取消置顶并且退出', function(id) { 
                win.setTopmost(winform.hwnd, false);
                win.close(winform.hwnd);
            })
            popmenu.add('退出', function(id) { 
                win.close(winform.hwnd);
            })     
            popmenu.popup();
        }    
    }
}

 
// 获取屏幕的工作区大小
var screenWidth, screenHeight = win.getScreen() ;

// 获取窗口的宽度和高度
var winWidth = winform.right - winform.left;
var winHeight = winform.bottom - winform.top;

// 计算窗口的左上角坐标,使其位于屏幕的中间顶部
var winX = (screenWidth - winWidth) / 2;
var winY = 0; // 顶部

// 设置窗口的位置
winform.setPos(winX, winY, winWidth, winHeight);


// 显示窗口并进入消息循环

winform.plus2.skin(
    background = { 
        hover = "/res/images/btn-hover.png";
        focus = "/res/images/btn-focus.jpg";
        active = "/res/images/btn-active.png";
        disabled = "/res/images/btn-disabled.png"; 
    }
)
winform.plus2.oncommand = function(id,event){
    win.msgbox("你点击了按钮2!", "提示");
}

winform.plus3.skin(
    background = { 
        hover = "/res/images/btn-hover.png";
        focus = "/res/images/btn-focus.jpg";
        active = "/res/images/btn-active.png";
        disabled = "/res/images/btn-disabled.png"; 
    }
)
winform.plus3.oncommand = function(id, event) {
    // 判断当前窗口是否置顶
    var hwnd =win.getForeground()          //获取前台窗口句柄
        var 是否置顶 = win.getStyleEx(hwnd ,0x8/*_WS_EX_TOPMOST*/ )
        
        
    if (是否置顶) {
        // 如果已经置顶,则取消置顶
        win.setTopmost(winform.hwnd, false);
        win.msgbox("已经取消置顶!你还可以通过主窗口空白处右键进行置顶设置!");
        
         
    } else {
        // 如果没有置顶,则置顶
        win.setTopmost(winform.hwnd, true);
          
        win.msgbox("已经设置本窗口置顶!你还可以主窗口空白处通过右键进行置顶设置!")
       
    }
}
win.setTopmost(winform.hwnd, true);
winform.show();
win.loopMessage();
复制代码

 

 

 

posted @   IssacNew  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示