Windows Mobile 6.5 Widget - 创建一个自定义Menu

发布时间: 2009/6/28 13:00:57

Windows Mobile 6.5 Widget可以使用我们通常最会使用的东西,如HTML,JavaScript,CSS等等进行富应用程序的开发,提高用户体验,还可以使用AJAX进 行插件的开发,对于熟悉JQuery的人,当然也可以使用JQuery进行开发,不过在Windows Mobile系统钟,对于JQuery这种再次封装的框架的性能,不是很好,就连我的当前的WM机皇都感觉特效有点卡卡的,比如show("slow") 这样,还是不是很好。

当然Windows Mobile 6.5 Widget对AJAX的支持已经很不错了,如果使用的是AJAX 4的话,应该很不错,我没试过,国外的一些博客尝试使用AJAX 4,而且是VS2010,而国内的VS2008用的比较多吧,所以就暂时先不尝这个鲜,而且JQuery也支持AJAX,还能够很好的移植,干嘛非要用 AJAX4呢。

言归正传,我们制作一个Widget的时候(前面说了基于浏览器的),而Windows Mobile 6.5本身有一个引擎可以很好的解释我们的Widget,但是本身如果要控制Windows Mobile 6.5 Widget的窗口的话,似乎还需要hook一下。但是这里微软已经有一个引擎可以使用了。可以看下图。(其中JQuery没用)

我们可以看到,左边是默认的情况下,左边的软键盘是退出按钮,右侧的菜单里面也只有退出,而在右边的图片里面我们自定义了一个Click Me按钮,而我说了微软提供了引擎去为我们hook一下窗口,这怎么写呢,可以看下面的代码。

<head>
    <title>Default Page</title>
    <link href="css/css.css" rel="stylesheet" type="text/css" />
    <script src="lib/jquery-1.3.2.min.js" type="text/javascript"></script>
   
    <script. type="text/javascript">
        function clickMeHandler() {
               alert("do something");
            }
       
        function cradled()
        {
            //创建一个menu对象
            var menu = widget.menu;
            //使用id创建一个MenuItem
            var menu1001 = menu.createMenuItem(1001);
            //设置menu对象的属性
            menu1001.text = "Click Me";
            menu1001.onSelect = clickMeHandler;
            //将MenuItem附加到Menu里面
            menu.setSoftKey(menu1001, menu.leftSoftKeyIndex);
        }
    </script>
   
</head>

<body onload="return cradled()">
This is a test page which crate a menu item in the widget!
</body>

上面的代码我已经注释了,通过上面的代码,我们就能够在Windows Mobile 6.5 Widget创建一个自定义的Menu了。但是这个时候你会想,为什么我只能创建在左侧,而右侧的菜单栏中还没有出现呢,如果要在右边的菜单栏出现,我们 就需要添加到右侧,只用使用下面的代码即可。

//附加到最后
menu.append(menu1001);

这样我们就可以添加相应的菜单并添加相应的事件响应了,运行效果如下图所示。

这样我们不用C/C++之类的东西就能够创建一个富应用程序最基本的程序了,如果你需要使用数据库还有调用本地的DLL的话,很复杂,不是不可能, 不过要等我学会了之后才能写,:)。现在看上去还是比较复杂的。另外,今天下了WM6 SDK,发现用C++写的WIN32,MFC,ATL的东西有点小复杂,并且实用价值不大,比如更改一下窗口啊,绘制一下图片啊之类的,而用C#呢,做的 就更少了,只能管理一下联系人,发一下短信,打一下电话什么的,哎,不知道手机开发的前景到底在什么应用上。小迷茫中。。

赞助商