terryfeng 发表于 2013-2-7 16:36:54

Windows Gadget 开发常用的几个系统方法及设置

1.设置窗口关闭方法委托
System.Gadget.onSettingsClosing = settingsClosing;
function settingsClosing(event)   
{   
    if(event.closeAction == event.Action.commit)   
    {   
        saveSettings();   
    }   
    else if (event.closeAction == event.Action.cancel)   
    {   
    }   
    event.cancel = false;   
}
2.写入系统设置
this.rssFeedPath = System.Gadget.Settings.read("rssFeedPath");
3.读取系统设置
System.Gadget.Settings.write("rssFeedPath", _feedPath);
4.参数初始化
function clearViewElements()   
{   
    positionNumbers.innerText = "";   
    for(i=0; i < 4; i++)   
    {   
        if ( g_viewElements !== null )   
        {   
            g_viewElements.FeedItems.innerHTML = "";   
            g_viewElements.FeedItems.href = "";   
            g_viewElements.FeedItems.innerText = "";   
            g_viewElements.FeedItems.setAttribute("name", "");   
            g_viewElements.FeedItems.setAttribute("localId", "");   
        }
        eval("FeedItemName"+i).innerHTML = "";   
        eval("FeedItemName"+i).style.backgroundColor = "";   
        eval("FeedItemName"+i).innerText = "";   
        eval("FeedItemName"+i).setAttribute("title","");
        eval("FeedItemDate"+i).innerHTML = "";   
        eval("FeedItemDate"+i).style.backgroundColor = "";   
        eval("FeedItemDate"+i).innerText = "";   
        eval("FeedItemDate"+i).setAttribute("title","");
        eval("FeedItemLink"+i).style.textOverflow = "";   
        eval("FeedItemLink"+i).style.overflow = "";   
        eval("FeedItemLink"+i).style.whiteSpace = "";   
        eval("FeedItemLink"+i).style.width = "0px";   
    }   
}
5.调试输出
System.Debug.outputString("Start Polling : Pull feeds queued up in bursts"); //DEBUG CODE
6.启动一个定时刷新
function startTimer()   
{   
    if(g_timerFlag)   
    {   
        stopTimer();   
        g_timer = setInterval(setNextViewItems, g_timerMilliSecs);   
    }   
}
 
setTimeout(loadData, 1000);
 
7.停止一个定时刷新
function stopTimer()   
{   
    if(g_timerFlag)   
    {   
        clearInterval(g_timer);   
    }   
}
 
8.指定设置页面文件
 
 
System.Gadget.settingsUI = "settings.html";
 
9.打开Flyout 窗口
System.Gadget.Flyout.show = true;
 
10.键盘按键捕获
<body onkeydown="keyNavigate();" >
function keyNavigate()   
{   
    switch(event.keyCode)   
    {
        case 38:   
        case 104:   
            setPreviousViewItems();   
            break;   
        case 40:   
        case 98:   
            setNextViewItems();   
            break;   
        case 32:   
        case 13:   
            if(event.srcElement.id == "buttonLeftNarrator")   
            {   
                setPreviousViewItems();   
            }   
            else if(event.srcElement.id == "buttonRightNarrator")   
            {   
                setNextViewItems();   
            }   
            break;   
        case 27:   
            hideFlyout();   
            break;   
    }   
}
 
11.鼠标滑轮
<body>
 
function mouseWheeNavigate()   
{   
    if( g_returnFeed == null )   
        return;
    var headlineCount = g_returnFeed.feedItems.length;   
    if(g_totalViewableItems < headlineCount)   
    {   
        headlineCount = g_totalViewableItems;   
    }   
    if(event.wheelDelta < -20)   
    {   
        setNextViewItems();   
    }   
    if(event.wheelDelta > 20)   
    {   
        setPreviousViewItems();   
    }   
}
 
12 获取Flyout 文件对象,并设置内容
var flyoutDiv = System.Gadget.Flyout.document;
flyoutDiv.getElementById("flyoutTitleLink").innerText = tempTitle;   
                flyoutDiv.getElementById("flyoutTitleLink").href = checkHref(g_feedURL);   
                flyoutDiv.getElementById("flyoutTitleLink").setAttribute("title", tempTitle);   
                flyoutDiv.getElementById("flyoutTitleLink").style.textOverflow = "ellipsis";   
                flyoutDiv.getElementById("flyoutTitleLink").style.overflow = "hidden";   
                flyoutDiv.getElementById("flyoutTitleLink").style.whiteSpace = "nowrap";
 
13.窗口 停靠
if(!System.Gadget.docked)   
        {   
            var backgroundToLoad = "url(images/item_hover_floating.png)";   
        }
 
14. Flyout 窗口 文件设置
System.Gadget.Flyout.file = "flyout.html";
 
15.  显示设置页面的方法
System.Gadget.onShowSettings = loadSettings;
 
16. Gadget 是否可见
System.Gadget.visibilityChanged = checkVisibility;
function checkVisibility()   
{   
    isVisible = System.Gadget.visible;   
    if (!isVisible)   
    {   
        stopTimer();   
    }   
    if(isVisible)   
    {   
        startTimer();   
    }   
}
 
17. 初始化配置集合
System.Gadget.settingsUI = "settings.htm";                              // 设置Setting 页面   
System.Gadget.onShowSettings = procSettingsShowEvent;                   // set settings onshow method   
System.Gadget.onSettingsClosed = procSettingsClosedEvent;               // set settings onclosed method
// init dock/undock event methods   
System.Gadget.onUndock = procUndockEvent;                               // set gadget onundock method   
System.Gadget.onDock = procDockEvent;                                   // set gadget ondock method
// init flyout event methods   
System.Gadget.Flyout.file = "flyout.htm";                               // set flyout page   
System.Gadget.Flyout.onShow = procFlyoutShowEvent;                      // set gadget flyout show event   
System.Gadget.Flyout.onHide = procFlyoutHideEvent;         // set gadget flyout hide event
18. 简化开发的最好方法,是下载现有的Gadget,修改其内容实用,下面是地址。
http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=zh-cn
http://vista.gallery.microsoft.com/vista/SideBar.aspx?mkt=en
 
19. 如果Gadget中嵌入Flash
1.要将投影效果去掉
2. 添加透明属性
if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object();   
if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object();
var FusionCharts = infosoftglobal.FusionCharts;
this.addParam('Wmode', 'transparent');
FusionCharts.prototype = {   
    setAttribute: function(name, value){   
        this.attributes = value;   
    },   
    getAttribute: function(name){   
        return this.attributes;   
    },   
    addParam: function(name, value){   
        this.params = value;   
    },   
    getParams: function(){   
        return this.params;   
    }
}
           var params = this.getParams();   
            for(var key in params) {   
             swfNode += '<param name="'+ key +'" value="'+ params +'" />';   
            }
3.使用一个透明背景的Png 图片最背景,达到背景透明的效果,并设置四边框为0,如下
<body    style=" margin:0; width: 200px; height: 200px; background-repeat:no-repeat; background:url(bgbk5.png);">
      function Initialize() {   
            try {   
                System.Gadget.settingsUI = "options.html";   
            } catch (e) { };
        }
4.在重复加载一个Flash,数据源的时候,会有缓存的问题,简单的解决办法就是用时间拼装不重复的访问字符串,已达到每次访问都不一样的目的,避免缓存
   function updateChart(DOMId) {
            var strURL = "http://localhost:9999/Chart/Gallery/Data/Angular5.xml?time=a" + Date.prototype.Format("yyyyMMddhhmmss");   
            var myChart = new FusionCharts("http://localhost:9999/Chart/Charts/AngularGauge.swf", "myChartId", "200", "200", "0", "0");   
            myChart.setDataURL(strURL);   
            myChart.render("chartdiv");   
        }
页: [1]
查看完整版本: Windows Gadget 开发常用的几个系统方法及设置