前言: 近两周被分到一个GIS项目组,本来以为可以好好接触下GIS项目的开发,但是没想到竟然碰到个恶心的需求,要将其中一个属性页面抽取出来,使用VB做成一个可视化的ocx插件,应用到系统中. 悲哀的项目,杯具的客户需求,我可悲命运.
首先声明,本人一没做过vb的项目,二无任何关于注册ocx的经验,三无C#桌面应用开发的经验. 基本上从零开始,但是得到了身边几位同事的指导,基本上把这一连串的内容都组装起来了,感觉还可以,但是哪天某位仁人路过,有啥更好的想法,尽管提啊,欢迎指教.
转入正题,就从我摸索的过程中总结起了啊,有些繁琐.
开发内容简述:
1. 创建一个OCX工程。需求为,做一个数据列表。(够简单吧? 主要内容不是VB的开发)
2. 编译生成一个ocx,分别能在网页中调用与C#桌面应用中使用。
详细步骤如下:
1. 工程开发如下:
(1)、创建一个ActiveX 控件工程;
(2)、将ListView控件添加到控制面板(选择菜单栏中“工程”-> "引用" -> "Microsoft XML,V6.0"、“工程”-> "部件" -> "Microsoft windows Common Controls 6.0"),并且拖一个到UserControl对象上,选择当前Listview对象,在属性框中“通用”->"查看"中选择"3 - lvwReport"
(3)、这一步比较繁琐,就是添加几个事件,UserControl的resize事件与添加一个按钮已经他的测试事件
备注:此处我是启动了一个tomcat服务,将一个xml文件放入其中,然后将服务器Url指向了这个文件,最后解析成一到ListView上的。我的vb工程以及服务器上放置的xml文件参见附件("VB工程以及一个xml文件,内部包含readme详细说明.rar")。
2. Ocx制作与web发布:
(1)、点击菜单栏 “文件”-> "生成xxx.ocx". 到这一步其实已经有了ocx,如果是本地测试使用的话,直接在命令行下"regsvr32 你的ocx路径",就可以注册
(2)、将ocx发布到服务器上,在客户端是需要注册的,并且需要将当前服务站点加为信任站点。首先,利用vb自带的打包工具将工程使用到附加dll或者ocx抽取出来。点击菜单栏“外接程序”-> "外接程序管理器" -> 选择最后一项"打包与展开向导"->点击确定(如果已经设置过,此步骤可以pass);再点击菜单栏“外接程序”->"打包与展开向导",就可以调出打包界面,其中有一是设置包的类型,选择"Internet 软件包"。最后会在你选择生成的路径中看到一个CAB包、html测试页面以及一个support文件夹。下面进入到这个文件夹,新建两个文件分别命名为“setup.bat”,“setup.reg”,添加以下类似内容:(根据自己实际参数填写)
//setup.bat文件内容如下: @echo off taskkill /f /im iexplore.exe copy ocx_gis_property.ocx %windir%\system32\ocx_gis_property.ocx regsvr32 %windir%\system32\ocx_gis_property.ocx "-u" "-s" regsvr32 %windir%\system32\ocx_gis_property.ocx regsvr32 %windir%\system32\ocx_gis_property_view.ocx "-u" "-s" regsvr32 %windir%\system32\ocx_gis_property_view.ocx setup.reg exit //setup.reg (10.20.3.131修改成自己的IP,这个内容主要是开发窗口弹出,添加某个ip站点为新任站点) Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges\Range9] ":Range"="10.20.3.131" "http"=dword:00000002 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2] "1004"=dword:00000000 "1201"=dword:00000000 "CurrentLevel"=dword:00000000 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\New Windows] "PopupMgr"="yes"@H_301_33@(3)、web发布准备工作好后,需要将support下的dll、ocx以及新建的两个文件用winrar压缩成一个自解压格式的exe包,详细教程参见http://zhidao.baidu.com/question/79832407.html(注意:需要将setup.bat添加到解压后直接里面)。现在可以发布了,将之前打包提到的那个测试的html里面的Object对象的CLASSID的键值取出来,用来替换掉你的调用页面中CLASSID的值。我的vb工程抽取的内容参见附件“vb自带的cab包制作的package.rar”,在support目录包含了一个以及制作好的自解压auto_register.exe文件。 将“web服务上调用示例.rar”文件解压到一个tomcat容器的webapp/root下即可,访问时需要使用你setup.reg中注册信任站的ip 譬如我的是http://10.20.3.131:8080/ocx_test/XXXX.htm
3. 在C#桌面应用程序中使用可视化的ocx(其实用vb开发ocx再使用在C#中有点脱裤子放屁了,没办法我是被别人脱下裤子要我放,我还不放干嘛呢)。
(1)、引入ocx插件到工程。这个摸索了良久,主要还是对visual 开发的不熟悉造成的. 首先需要将ocx插件注册到本地,我比较土,还是用的"regsvr32 ocx路径"执行一下,然后右击"工具栏"->选择"选择项(I)",会弹出工具箱项选择框,切换到"COM组件"tab页下,选择你刚才注册的ocx(太多的话,根据路径排序下再找看看).添加成功的话,左边会出现你刚才添加ocx控件,拖到你设计界面上,设置下就可以了.如果你直接用我开发的这个vb的OCX demo的话,在使用的时候,记得看下readme文件,设置好weburl等等参数,否则无法正常调用的。
(2)、如果本地运行没问题话,就可以直接发布了。详细的安装包制作过程参照下这个吧“http://developer.51cto.com/art/200908/144459.htm”,图形化介绍,试了一次就出来了。
哎~~~ 写了良久,做个记录以后自己再回头看看,要是各位看的不明白,或者写的太easy,那就把它当成个屁放掉吧~~~
呵呵。(靠找分类,不知道该放在哪了,随便放一个 到JavaEye了)
朋友的网站 http://woods2010.cn.alibaba.com/专业电子器件代购
原文链接:https://www.f2er.com/vb/262384.html