aardio 文档

aardio 范例: 系统窗口背景色设置工具

//系统窗口背景色
import win.ui;
import win.ui.ctrl.pick;
/*DSG{{*/
var winform = win.form(text="系统窗口背景色设置工具";right=742;bottom=472;bgcolor=16777215;border="thin";composited=1;exmode="toolwindow";max=false;min=false)
winform.add(
chkSaveReg={cls="checkbox";text="在注册表中保存窗口背景色设置,以避免重启或注销后失效";left=20;top=9;right=386;bottom=31;bgcolor=16777215;z=2};
colorPick={cls="pick";text="自定义控件";left=17;top=47;right=718;bottom=450;z=1}
)
/*}}*/

//颜色改变时触发此事件
winform.colorPick.onColorChange = function(clr){

    if( winform.timerSetSysColor ) winform.clearInterval(winform.timerSetSysColor)
    winform.timerSetSysColor = winform.setTimeout( 
        function(){
            var r,g,b,a = color.getRgba(clr);
            var rgb = color.rgb(r,g,b);

            if( a != 0xFF) {
                winform.colorPick.setColor(clr,true);  
            }

            ::User32.SetSysColors(1, 
                { int elements[] = { 0x5/*_COLOR_WINDOW*/ };  } , 
                {INT colors[] = {rgb};}
            );   

            if( winform.chkSaveReg.checked ){
                import win.reg;
                var reg = win.reg("HKEY_CURRENT_USER\Control Panel\Colors");
                reg.setSzValue("Window",string.format("%d %d %d",r,g,b));
                reg.close();
            }
        },300)
 }

//可选指定初始颜色
winform.colorPick.setColor(  ::User32.GetSysColor(0x5/*_COLOR_WINDOW*/),true );

winform.chkSaveReg.oncommand = function(id,event){
    if( winform.chkSaveReg.checked ){
        import win.reg;
        var reg = win.reg("HKEY_CURRENT_USER\Control Panel\Colors"); 
        reg.setSzValue("Window",string.format("%d %d %d", winform.colorPick.getRgba() ));
        reg.close();
    }
}

import ide;
win.setOwner(winform.hwnd,ide.getMainHwnd());  
winform.onClose = function(hwnd,message,wParam,lParam){
    win.setOwner(winform.hwnd,0)
}

winform.show() 
win.loopMessage();

Markdown 格式