通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>VC编程>>正文 新版上线![旧版]
注:打开慢时请稍等

使用URL Moniker

http://www.iyit.net  日期:2006-5-23 12:27:27  来源:网络转载   点击:

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:理解超链接接口
下一篇:使用Internet信息服务器(IIS)
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

参加讨论】使用URL Moniker:    今天,许多公司特别关注Internet。因此,在不久的将来,访问Internet上的信息,一定会像访问本地硬盘数据一样容易。实际上,随着Internet Explorer 4.0中包含了部分Visual C++ 6.0特性,Microsoft已经向上述目标迈进了一步。你将会发现硬盘和Internet上你最喜欢的站点正共享着一个公用的Explorer视图。
    WEB链接 获取自己需要的信息经常是指访问自己的本地新闻组,以获得其它的程序员的帮助。不必多说,你会发现有些新闻组比别人花更多的时间在讨论URL moniker ;毕竟它还算是一个神秘的课题。例如,microsoft.public.win32 .programmer.ole 新闻组很长时间以来一直在讨论将Moniker捆绑到专用控件上的话题。甚至还有一个新闻组专门用于URL moniker:microsoft.public.activex.programming.urlmonikers。如果你想从新闻组中的人那里获得Visual C++有关的帮助,可以看一看microsoft.public.vc.mfcole。
    当然,数据站点的这种界线模糊倾向(blurring)对用户和程序员都会提供一些新机遇。例如,作为用户你会发现,将你需要的数据放入你需要的应用程序中去进行编辑要省事一点。作为程序员你会发现,现在还有许多别的方法来处理一个程序,并使它产生特殊的效果。
    注释 如果你不是使用Visual C++5.0以上版本来创建本节的例子,那么,就必须安装Activex SDK。SDK提供了能使示例代码正常工作所需的URLMON.H MLINK.LIB和URLMON.LIB文件。
    使应用程序具有特殊效果的一种最普通方法就是给它添加超链接功能,而最容易的添加方法是,在应用程序的工具栏上,放置一个可以使用户进入公司内部网的按钮。同样,你可以使用另一按钮,允许用户选择特定站点或在公司授权的Internet站点列表中进行选择。这正是本节要介绍的内容。样本程序将说明如何给某个典型的应用程序加入两个按钮,从而使用户可以快速简单地链接到Internet上。
    第一步当然是创建一个新的应用程序。就像第11章中的ActiveDocument例子一样,你也可以使用老版本的Microsoft Visual C++编译器来创建这些代码。本节假定你使用的是5.0 以上版本,尽管用4.2 版本创建它相对容易些。由于第2 章已经介绍了使用MFCApplication Wizard创建应用程序的过程,所以这里只进行简短的描述。在创建过程中,你需要选择一些选项才能使例子正常工作。首先,例子的名称为ViewURL(尽管你可以选择自己喜欢的名字)。其次,在Wizard的第1页应选择Single Document 。第三,在Wizard的第4页上应选择Windows Sockets支持。最后,在MFC AppWizard 的第6 页将Base Class域设置为CEditView,这将允许你在示例应用程序的主窗口中编辑文本。
    技巧 还有许多情况像本例一样不需要CRichEditView类的全部功能。与CEditView相比,CRichEditView类不仅相当大,而且使用CRichEditView 类还要求给应用程序添加OLE容器支持功能,这就进一步增大了应用程序的规模。CEditView类既能让你显示无格式文本,又能使应用程序比较小──这正是实用类应用程序一个很重要的考虑因素。
    添加库支持
    一旦Wizard完成了应用程序创建工作后,你就可以开始做进一步的修改了。首先要完成的工作就是给应用程序加入超链接支持。为此,可在STDAFX.H文件中加入下述的#include。
    //Added for URL support.
    #include "URLMon.h"
    该头文件包含了你在使用各种URL moniker有关命令时所需的所有#define语句。本章前面已经介绍了其中一些命令,这里将介绍它们是如何工作的。
    注释 老版本的 Visual C+ + 用户要做的下一件事就是添加一些静态的支持(但是Visual C++ 5.0以上的用户不必做这一步)。HLINK.LIB和 URLMON. LIB 这两个库都在ActiveX SDK的LIB文件夹中。可以利用Visual C+ + 的Insert (插入)| Files Into Project(文件到项目)命令给应用程序添加所需的库支持。通过查看FileView中的包括文件列表,来检查是否真的添加了支持(只需单击显示工作区左边的FileView标志即可)。
    技巧 Microsoft打算将来把HLINK.LIB和URLMON.LIB中的静态库支持放入URLMON.DLL中。一定要在编写支持URL moniker的应用程序之前检查该动态库的支持功能。
    创建所需资源
    现在已经加入了所需的库支持,让我们给工具栏添加一些按钮。单击ResourceView (资源视图),打开Toolbar文件夹,然后双击IDR_MAINFRAME项,就能看到如图12.1 所示的标准工具栏。添加新按钮很容易,你只需单击工具栏末尾的空白按钮,然后开始在绘画区域中显示的空白按钮上绘制。把这个按钮稍微向右移动一点,就能将它与工具栏上已显示的其它按钮区分开。图12.1显示的是这个例子中添加的两个按钮。

    注释 增加按钮可以给用户提供一种可视图化的显示,另外,还要给应用程序添加一些按钮标识信息。简单地双击将要设置的按钮的工具栏(不要单击刚创建的按钮图标),就会看到如下图所示的对话框。对两个按钮使用下表进行的设置。

    技巧 注意Caption包含了一个较长的描述、一个\n以及一个较短的描述。较长的描述将出现在应用程序的状态栏上。较短的描述用于当鼠标停留在该控件时的弹出帮助。一定要用“\n”分隔这两项。在Visual C++应用程序中任何看到弹出式帮助的地方都可以使用这种特殊的输入方法。

    单击第一个按钮将把用户带入公司的主页。按钮已经起作用,在资源方面不必再做什么了。你需要添加的只是完成实际工作的一点代码。但是,第二个按钮将允许用户输入他们自己的站点,如果愿意的话,还可以输入该站点中的某个位置。该按钮还支持那些使用框架的站点上的框架,这就需要添加一个特殊的对话框。打开 ResourceView 中的Dialog 文件夹,用右键单击Dialog 文件夹,就能看到一个关联菜单。 选择Insert Dialog项,就能看到一个名为IDD_DIALOG1 的新对话框添加到了文件夹的列表中(应用程序当前提供的唯一一个对话框是About Box对话框)。
    现在给对话框改名。用右键单击IDD_DIALOG1项,然后从关联菜单中选择Properties。在ID字段中输入IDD_SITE_SELECT,然后单击属性对话框,就能看到新名字出现在Dialog文件夹的对话框中。
    给对话框添加所需控件相当容易。首先要做的是将对话框大小改为25×120像素点(即出现在状态栏右边的当前对话框大小)。这可能要占一点空间,因为用户可能想输入很长的URL。改变对话框大小后,可以添加三个标签和三个编辑控件,如图12.2所示。

    双击每个编辑控件显示它们的属性对话框,设置一个易于记忆的ID。第一个编辑控件的ID 为IDC_URL,第二个编辑控件的ID 为IDC_ANCHOR_NAME,第三个编辑控件的ID 为IDC_FRAME_NAME。稍后将会介绍这些名称的作用。
    定义新类并编写代码
    现在已经定义了所有所需的资源,应该给添加到工具栏中的两个按钮增加代码了。确保已经选择了IDD_SITE_SELECT对话框,然后用View|ClassWizard命令显示ClassWizard 对话框。在这种情况下,你将看到如下图所示的对话框,它表明IDD_SITE_SELECT 是一个新对话框,需要为它创建一个类。

    单击OK,你将看到New Class 对话框。你需要提供的只是类名。示例程序使用的是CSiteSelect,它使得类名及其相关资源很易于识别。本例使用的是缺省的CDialog基类。单击OK完成操作。
    选择ClassWizard的Message Map页,然后从Class Name字段中选择CMainFrame类名。滚动下拉对话框左边的Object IDs直至找到ID_GO_HOME。单击该项,然后单击对话框右边的Message字段中的COMMAND项。单击Addfunction给应用程序添加所需函数。此时会看到Add Member Function对话框。单击OK接受缺省函数名。同样处理ID_GO_SITE 对象标识符。完成之后,MFCClassWizard对话框如下图所示。

    选择OnGoHome项并单击Edit Code。MFC ClassWizard 就会直接进入新函数框架。程序列表12.1显示了该按钮的代码,确保将HlinkSimpleNavigateToString()函数调用的第一个参数与Web服务器的缺省页面地址相匹配。你会看到OnGoSite()函数就在OnGoHome() 函数之后。给它添加程序列表12.2所示的代码。确保在MainFrm.Cpp文件开头包括了SiteSelect.H(如果愿意的话,还可在STDAFX.H文件中包含它)。

    现在已有足够的代码可以将用户送往主页(程序列表12.1)或显示对话框(程序列表12.2)上了。不过还需要给CSiteSelect对话框增加一些代码。当用户单击OK时,你可能想把他们带到他们选择的其它站点。首先要添加一些内存变量来记录用户的输入。再来看一看IDD_SITE_SELECT对话框。按下CTRL键并双击第一个编辑框,就能看到如下图所示的Add Member Variable对话框。
    它允许你给IDC_URL编辑框赋予一个变量。本例中命名为URL(该名字将会在对话框中以m_URL出现)。选择Category域中的Control,把Variable Type域改变成 CEdit ,CEdit就是该例所需的变量类型。单击OK完成操作。同样处理另两个编辑框,并将第二个变量命名为Anchor,第三个命名为Frame。
    有了变量,现在还要添加另一个函数,用View|ClassWizard命令打开MFCClassWizard。对话框应该仍然显示 Message Map 页; 否则的话就选中该页。在 Class Name 域中选择CSiteSelect项,就会看到对话框左边的Object IDs列表变为CSiteSelect对话框提供的内容。选中IDOK对象标识符和Message域中的BN_CLICKED项。单击Add Function,然后单击Add Member Function对话框中的OK。这时MFC ClassWizard对话框如下图所示。
    现在,单击Edit Code显示函数的框架。该函数接收用户在对话框中的输入信息,然后将它们带到Internet上的特定位置。程序列表12.3显示了完成该任务的代码。



    上述代码中有一些小技巧,但大部分C语言程序员使用过这些技巧。首先,要将三个用于保存位置信息的变量置为NULL。这样,即使它们没有什么信息可保存,也能正常运行。这时,代码仍要强制用户提供URL,只有一种情况不必这么做,即,如果你允许用户跳到他们当前所在页的一个锚地,就可以让URL参数仍然是NULL 并简单地让它们指定锚地名称。保存对话框中信息的方法需要使用缓冲变量。但从LPTSTR(指向Windows或Unicode的以NULL结尾的长指针)到LPCWSTR(指向以NULL结尾的Unicode串常量的长指针)的转换很简单。这个特殊例程的核心是调用HLinkSimpleNavigateToString,个函数负责将位置信息转换为真正的URL。
    现在,让我们看一下应用程序是什么样子。和通常一样编译并运行应用程序。如果单击Home Web Page按钮,就能看到Internet Explorer(或其它缺省浏览器)启动了,并把你带到设为主页的任何Internet站点。图12.3显示了本例按下该按钮的结果(图中显示的主页是作者的Internet服务器设置,你的屏幕上应该显示自己的设置)。一定要将程序列表12.1中HLinkSimpleNavigateToString()调用的地址设置为自己的主Web站点,否则就会出现意外结果。

    单击Any Web Page按钮会显示如下图所示的对话框。

    它允许输入一个URL、可选的锚地名或框架名。目标Web页必须支持所指定的锚地名和框架名,否则函数调用会失败。如果输入本地测试机器支持的地址之外的URL值,那么应用程序还需要一个活动的Internet连接。
 相关文章
最新更新 热点排行 推荐新闻
用VC++自制王码五笔输入法安装包 
在线资源指导
实用组件介绍
如何以最佳方式购买组件
ActiveX和OCX组件资源
用VC++自制王码五笔输入法安装包 
在线资源指导
实用组件介绍
如何以最佳方式购买组件
ActiveX和OCX组件资源
建立安装程序
收 集 文 件
理解各种打包类型
打包应用程序
向应用程序增加基于HTML的帮助
VC++实现对远程计算机屏幕的监视
用VC++6.0的Sockets API实现一个聊天室
多线程技术在VC++串口通信程序中的应用
用VC++制作一个简单的局域网消息发送工
用VC 6.0实现串行通信的三种方法
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
新开放QQ免费挂级网站
优秀公益广告作品欣赏(7)
免费在QQ上看在线电影电视听音乐
WEB服务器配置全攻略(三)
QQ珊瑚虫外挂4.0版本发布!
免费把QQ炫铃设为本机QQ的系统提示音
Office2007简体中文版浮出水面 美图抢
微软将在华推分期付款,充值卡PC 可低价
 AMD处理器AM2测试 风扇竟运行7分钟
exeplorer.exe错误的问题的总结、解决
ASP.NET 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
Office2007简体中文版浮出水面 美图抢
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息