一种全新的软件界面设计方法[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 aweay 的 blog

 

嗬嗬,是不是很神奇呢,这只是一个应用的例子,其实还有很多软件的界面使用了上面的方法来创建界面,比如norton antivirsu,ms visual studio.netc# builder等。其实深入仔细思考的话,这样的界面最困难的是如何和本地代码交互,为什么在网页里点一个按钮能执行自己的代码呢?有过com编程经验的人,可能会想到用com编写一个外部对象,在网页中使用脚本创建这个对象,然后调用对象的方法似乎可以完成这样的功能?但是这里有很多不好的地方:

1.         需要注册com的本地运行安全,否则ie会有安全警告,这肯定是最终用户不愿意看到的;

2.         用户可以轻松从html代码里获得com对象的使用方法(就像上面用myspy获得代码一样),这样他们可以轻松使用你的com对象完成他们自己的界面,这样不够隐蔽,不安全。

也许还有更多不好的地方,但暂时作者没有想到,因为微软及其他软件公司都不是这样做的,他们也许知道更多。下面我们就来讨论一种既安全又隐蔽的实现方法。

ie4开始,微软提供了一个icustomdoc接口,icustomdocsetuihandler允许用户设置一个基于idochostuihandler的接口来接管界面处理器,在idochostuihandler提供了很多的虚拟方法,需要程序员来重载他们实现不同的定制功能,这里有一篇文章详细介绍了这些信息http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/wbcustomization.asp在这里我们需要重载getexternal方法来扩展ie dom,如果我们成功的扩展了dom,那么我们就这可以这样编写html代码来实现与本地程序交互,例如:

<html>

<head>

<script language="jscript">

function myfunc()

{

    external.helloworld(); //helloworld是我们扩展的方法

}

</script>

</head>

<body>

<input type="button" value="show hello world" onclick="myfunc();" />

</body>

</html>

本文关键:一种全新的软件界面设计方法
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top