元搜索引擎的设计与实现(编辑修改稿)内容摘要:

架和引擎 ,VC++是 WinOS 下开发人员使用的专业 C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台 ),MFC 就是挂在它之上的一个辅助软件开发包。 它是 Win API 与C++的结合 ,API,即微软提供的 WinOS下应用程序的编程语言接口 ,是一种软件编程的规范 ,但不是一种程序开发语言本身。 需要注意的是 MFC 不只是一个功能单纯的界面开发系统 ,它提供的类绝大部分用来进行界面开发 ,关联一个窗口的动作 ,但它提供的类中有好多类不与一个窗口关联 ,即类的作用不是一个界面类 ,不实现对一个窗口对象的控制 (如创建 ,8 销毁 ),而是一些在 WinOS(用 MFC编写的程序绝大部 分都在 WinOS中运行 )中实现内部处理的类。 本文软件开发环境的框架如图 23所示。 图 23 软件开发环境及组成框架 本文实现的软件的主画面如图 24所示。 9 图 24 软件的主画面 功能模块 功能模块在本 软件中起到了承上启下的作用,它承接了界面模块与网页嵌入模块两大模块的交互。 功能模块的具体实现是由 literature news stockmarket weather1四个抽象类完成的,他们分别完成了文学欣赏、新闻阅读、故事行情和天气预报四个功能的抽象。 软件交互界面中网页的嵌入只能通过调用功能模块来完成,因为只有功能模块可以直接调用网页嵌入模块。 这一模块中没有牵扯到任何复杂技术的运用,故不作过多详细解释。 网页嵌入模块 根据微软权威的软件开发指南 MSDN( Microsoft Developer Network)的定义, ActiveX插件以前也叫做 OLE 控件或 OCX 控件,它是一些软件组件或对象,可以将其插入到 WEB10 网页或其它应用程序中。 在因特网上, ActiveX 插件软件的特点是:一般软件需要用户单独下载然后执行安装,而 ActiveX 插件是当用户浏览到特定的网页时, IE浏览器即可自动下载并提示用户安装。 它的安装的一个前提是必须经过用户的同意及确认。 ActiveX提供丰富的各种功能的控件,包括:多媒体控件、数据库控件、网络控件、界面控件、图像控件、压缩控件、图表控件、系统控件、时间控件、打印控 件、综合控件、其它类控件等。 ActiveX 是 Microsoft 对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型( COM)。 在有目录和其它支持的网络中, COM 变成了分布式 COM( DCOM)。 在创建包括 ActiveX 程序时,主要的工作就是组件,一个可以自足的在 ActiveX网络(现在的网络主要包括 Windows 和 Mac)中任意运行的程序。 这个组件就是 ActiveX近控件。 ActiveX 是 Microsoft 为抗衡 Sun Microsystems 的 JAVA 技术而提出的,此控件的功能和 JAVA applet 功能类似。 ActiveX 组件包括如下几类: 1 自动化服务器:可以由其他应用程序编程驱动的组件。 自动化服务器至少包括一个或多个供其他应用程序生成和连接的基于 IDispatch 的接口。 自动化服务器可以含有也可以没有用户界面( UI),这取决于服务器的特性和功能。 2 自动化控制器:那些使用和操纵自动化服务器的应用程序。 3 控件: ActiveX 控件等价于以前的 OLE 控件或 OCX。 一个典型的控件包括设计时和运行时的用户界面,唯一的 IDispatch 接口定义控件的方法和属性,唯一的 IConnectionPoint 接口用于控件可引发的事件。 4 文档: ActiveX 文档,即以前所说的 DocObect,表示一种不仅仅是简单控件或自动化服务器的对象。 ActiveX 文档在结构上是对 OLE 链接和模型的扩展,并对其所在的 容器具有更多控制权。 一个最显著的变化是菜单的显示方式。 一个典型的 OLE 文档的 菜单会与容器菜单合并成一个新的集合,而 ActiveX 文档将替换整个菜单系统,只表 现出文档的特性而不是文档与容器共同的特性。 5 容器: ActiveX 容器是一个可以作为自动化服务器、控件和文档 宿主的应用程序。 例如,对于新建一个工程 MFCWinSock,其操作过程如下, NewProjectsMFC ActiveX ControlWizard, 然后输入 MFCWinSock 工程名。 如 下 图 25所示。 11 图 25 新建工程示例 按 Next,直至 Finsh 出现,再按下 OK,如下图 26: 图 26 工程信息 12 在 加入如下代码 : ifndef WM_MYWINSOCK define WM_MYWINSOCK WM_USER+1888 endif ViewClassWizardAutomationAdd 我们为这个控件添加了一个 Connect()的接口,出于通用性,安全性和扩展性的考虑,我们采用了 VARIANT 类型的参数: struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt。 WORD wReserved1。 WORD wReserved2。 WORD wReserved3。 union { LONG lVal。 BYTE bVal。 SHORT iVal。 FLOAT fltVal。 DOUBLE dblVal。 VARIANT_BOOL boolVal。 _VARIANT_BOOL bool。 SCODE scode。 CY cyVal。 DATE date。 13 BSTR bstrVal。 IUnknown __RPC_FAR *punkVal。 IDispatch __RPC_FAR *pdispVal。 SAFEARRAY __RPC_FAR *parray。 BYTE __RPC_FAR *pbVal。 SHORT __RPC_FAR *piVal。 LONG __RPC_FAR *plVal。 FLOAT __RPC_FAR *pfltVal。 DOUBLE __RPC_FAR *pdblVal。 VARIANT_BOOL __RPC_FAR *pboolVal。 _VARIANT_BOOL __RPC_FAR *pbool。 SCODE __RPC_FAR *pscode。 CY __RPC_FAR *pcyVal。 DATE __RPC_FAR *pdate。 BSTR __RPC_FAR *pbstrVal。 IUnknown __RPC_FAR *__RPC_FAR *ppunkVal。 IDispatch __RPC_FAR *__RPC_FAR *ppdispVal。 SAFEARRAY __RPC_FAR *__RPC_FAR *pparray。 VARIANT __RPC_FAR *pvarVal。 PVOID byref。 CHAR cVal。 USHORT uiVal。 ULONG ulVal。 INT intVal。 UINT uintVal。 DECIMAL __RPC_FAR *pdecVal。 CHAR __RPC_FAR *pcVal。 USHORT __RPC_FAR *。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。