文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发数据结构如何在主流开发环境中使用HTML Help文件
精品推荐
特别推荐
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·数据库设计范式深入浅出
·理解软件保护技术之序列号方式
·大型网站必鉴:分销渠道的结构
·你的代码真的很健壮吗
·利用HOOK拦截封包原理
·四种网络游戏外挂的设计方法
·程序语言效率比较
·五子棋算法
·正则表达式从入门到精通
·SQL Server不能启动的常见故障
·Windows应用程序设计的基本术语
·软件本地化与汉化
·Windows中断编程
·windows nt 4.0中文版的开机过程
热点TOP10
·网游外挂编写完全攻略
·兵之利器 软件开发辅助工具纵览
·开发WDM型的USB设备驱动程序
·DCOM揭秘之六
·VS2008 第一次安装心得及使用
·游戏外挂设计技术探讨
·《数据结构》试题下载2004
·饺子馆的物流故事之二——供应链视角下的缺货及品类管理
·代码静态分析工具PC-LINT安装配置
·使用BHO定制你的IE浏览器
·原始套接字透析之Raw Socket基础
·基于CS模式的Winsock网络通讯程序
·程序语言效率比较
·《Windows程序设计》读书笔记之六
·四种网络游戏外挂的设计方法
·用CVSNT与WINCVS实现CVS的架设
·利用HOOK拦截封包原理
·简单对象访问协议(SOAP)初级指南
·带你全面了解数据库应用系统的开发步骤
·UML业务建模实例分析

如何在主流开发环境中使用HTML Help文件

日期:2007年5月3日 作者: 查看:[大字体 中字体 小字体]



湖南长沙 宋彻  

微软公司从Windows 98 开始使用的HTML HELP帮助系统是基于Web 页的更灵活的新一代帮助系统,它的应用已经很广泛。如何制作HTML HELP帮助文件并在主流集成开发环境如DELPHI5、BCB5、VB6、VC6中使用,与具体需求和环境支持程度相关,在此略谈以下心得:
一、制作HTML HELP帮助文件
建议用微软提供的HTML HELP Workshop工具,目前版本1.3以上;也有许多第三方工具,比如HTMLHelp ePublisher / HelpMATIC等等,但是制作中文内容往往容易出现乱码。  
用Workshop建立一个帮助文件工程,在能够编译前,应该有以下步骤:
1. 制作HTML页  
HTML页是帮助文件具体内容的载体,可以包含文字、图形、超链接等,与普通主页设计相同。可用FrontPage 等网页制作工具来设计制作。
2. 制作目录表、索引表
按照内容的相互关系及次序建立目录表,一个目录项对应一个帮助主题,一个帮助主题可对应一个HTML页;设计包含关键字的索引表让用户更快地获得所需的信息,一个关键字可对应一个HTML页。将设计好的HTML页与帮助主题目录项及关键字索引建立对应关系。
一般制作应用程序帮助系统时可根据程序的菜单来组织目录表。主菜单对应目录,而将子菜单对应子目录,叶菜单对应目录项。可给每一个菜单项一个对应关键字。
3. 设置高级特性
定制帮助文件的窗口风格,主要是根据需要选择窗口工具条按钮可用项目,隐藏 / 显示、后退、前进、主页、打印和选项等。
选择全文本搜索支持。
现在已经可以编译了,需要的话进行第4步。
4. 上下文敏感帮助
设置帮助主题编号,以便实现上下文敏感帮助,在程序运行中动态调出帮助内容。
主要的工作是按照应用程序的条理层次设计上下文ID号,建立上下文ID号与帮助主题的一一对应。
上下文ID是一个数值,赋值给需要显示上下文敏感帮助的控件(比如菜单项)的上下文编号属性,如Delphi中控件的HelpContext属性,VB中控件的HelpContextID 属性。当用户按 F1 键时,程序将自动地调用帮助并查找被当前上下文编号所定义的帮助主题内容。当前上下文编号是运行中拥有焦点的控件对象的上下文编号属性值。
编写头文件 *.h (C Header File),定义上下文ID号与帮助主题标志串的映射,标志串可以是中文字符。笔者在应用中用到了该特性,编写的头文件部分内容如下:  
  
... ...  
#define 登录 1  
#define 主界面 2  
#define 退出 3  
#define查号 4  
#define 号码维护 5  
... ...
#define 查号运行流程 400
#define 选择查号 401
#define 查询类别 402
#define 提取资料 403
#define 回复 404
#define 退出查询 405
  
... ...
在Project选项卡中点击HtmlHelp API Information按钮,选择Alias项,添加帮助主题标志串和帮助主题的对应关系;然后选择Map项,添加编好的头文件。这样就建立了上下文ID号与帮助主题的映射关系。
编译完成后生成 .chm 文件,双击它打开浏览制作效果,也可以在WorkShop中View菜单下选择“compiled help files ...”菜单项浏览。在 WorkShop 中 test 菜单下 选择 “HTMLHelp API ...” 菜单项,在弹出窗口中选择 Command 为“HH_HELP_CONTEXT”, Map 栏中输入上下文ID 值就可以浏览做好的上下文敏感帮助内容。
二、编程使用HTML HELP帮助文件
首先要求开发与运行环境使用Win98或Windows更高版本,否则系统无法支持HTML HELP帮助文件。
1. 在VB6中使用HTML HELP帮助
VB6中实现比较简单,或者设计时将编译好的帮助文件名 *.chm 添加到工程属性中(帮助文件名字段);或者运行时代码方式将帮助文件路径名赋值给App.HelpFile属性。如需要上下文敏感帮助,将帮助文件中设计好的上下文ID,逐一赋值给对应显示上下文敏感帮助的控件的HelpContextID 属性即可。
2. 在VC6中使用HTML HELP帮助
VC使用消息处理方式实现HTML HELP帮助。HTML HELP Workshop中包含了htmlhelp.h和htmlhelp.lib库 文 件 。在VC项目中包含这两个文件,处理消息显示帮助时调用函数:
HtmlHelp(hwndCaller:HWND;pszFile:
PChar;uCommand:UINT; dwData:DWORD_PTR ):HWND
3. 在Delphi5中使用HTML HELP帮助
Delphi5并不支持HTML HELP帮助系统,它仍然使用WinHelp。笔者通过反复尝试,发现调用Windows系统目录System32下的HHCTRL.OCX,利用其中的HtmlHelpA函数接口可以自行实现HTML HELP帮助。
公共模块代码如下:
unit HTMLHELPCOMMON
  
interface
uses Windows;
  
type
DWORD_PTR = ^DWORD;
  
Function  
HtmlHelp(hwndCaller:HWND;strFile:String;
uCommand:UINT; dwData:DWORD_PTR ):HWND;
  
procedure CloseHtmlHelp;
  
implementation
uses
SysUtils;
const
HHControlInstance:THandle=0;
dwCookie :DWORD = 0;
var
HtmlHelpA:function ( hwndCaller:HWND; pszFile:PChar ;
uCommand:UINT; dwData:DWORD_PTR ):HWND;stdcall;
  
function HtmlHelp(hwndCaller:HWND;strFile:String;
uCommand:UINT; dwData:DWORD_PTR ):HWND;
var
LFileName:String;
p:PChar;
begin
if HHControlInstance=0 then
begin
LFileName := StringOfChar( ' ', 256);
p := PChar( LFilename );
GetSystemDirectory(p,255);
StrCat(p,'\HHCTRL.OCX');
HHControlInstance := LoadLibrary( P );
if HHControlInstance = 0 then
raise exception.Create('Help system not installed!'#13' HTMLHELP cannot displayed!');
@HtmlHelpA := GetProcAddress( HHControlInstance, 'HtmlHelpA');
if @HtmlHelpA = nil then
raise exception.Create('Function HTMLHELP cannot loaded!');
HtmlHelpA( 0, nil,$001C , (@dwCookie));
end;
result := HtmlHelpA( hwndCaller, PChar( strFile ), uCommand, dwData );
end;
  
procedure CloseHtmlHelp;
begin
if HHControlInstance<>0 then
begin
HtmlHelpA( 0, nil, $001D, DWORD_PTR(dwCookie));
FreeLibrary(HHControlInstance);
end;
end;
  
end.
  
两个函数分别初始化和释放调用接口。其它模块只须按约定调用即可。例如:
HtmlHelp( handle, htmlhelpfilename+'::/welcome.htm',$0000, nil);
显示htmlhelpfilename对应的帮助文件的welcome页面。
上下文敏感帮助需要借用Delphi对WinHelp的支持。当用户按 F1 键时,程序将自动触发OnHelp事件,截获它,编写自己的处理代码即可。
... ...
Application.HelpFile := htmlhelpfilename;
tmpOnHelp := Application.OnHelp;
Application.OnHelp := AppHtmlHelp;
... ...
  
function TForm1.AppHtmlHelp(Command: Word; Data: Longint;  
var CallHelp: Boolean): Boolean;
var ret:integer;Hfile:string;
begin
if not CallHelp then exit;
AppPath := ExtractFilePath(Application.ExeName);
Hfile := AppPath + Application.HelpFile;
case Command of
HELP_FINDER, HELP_CONTENTS:  
ret := HtmlHelp(handle, pchar(Hfile), $0001, nil);
HELP_QUIT:  
ret := HtmlHelp(0, '', $0012, nil);
HELP_CONTEXT:  
ret := HtmlHelp(handle, pchar(Hfile), $000f, DWORD_PTR(data));
end;
result:=ret<>0;
  
CallHelp := False;
end;
这样,我们就有另一种方法调用帮助文件,与传统WinHelp调用方法一样:
application.helpcommand(HELP_FINDER, 0);
application.helpcommand(HELP_quit, 0);
... ...
以上代码用Delphi5企业版开发,在大型应用中运行良好。抛砖引玉,与大家共享。
  
4. 在BCB5中使用HTML HELP帮助
由于Delphi与BCB的同质性,实现方法一致。
另一种在BCB中使用hhctrl.ocx的方法如下:
implib hhctrl.lib hhctrl.ocx:创建库文件,加入工程中,注意包含htmlhelp.h头文件。


[1] [2] 下一页 




上一篇:什么是算法

下一篇:水仙花数

如何在主流开发环境中使用HTML Help文件 相关文章:
·GHOST使用方法(图解)
·Vista系统使用技巧总结
·为什么iexplore.exe在打开网页时CPU使用会100%?
·MPEG、RM、WMV电影文件格式转换指南
·如何在QQ空间加入播放器代码
·非主流ps教程实用的技巧大全
·QQ空间导航代码最新版使用方法
·非主流QQFlash模块和动态横幅
·DataTable控件的使用
·推荐:漂亮的手机上使用的墙纸图片分享下载
如何在主流开发环境中使用HTML Help文件 相关软件:
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·黑客视频教程 VMware虚拟机的安装和使用
·中国少年儿童智力开发百科全书(上中下)高清PDF全彩图书
·黑客视频教程-灰鸽子远控使用教程
·FLASH 8中文使用手册
·使用GPMC随心所欲管理组策略
·Adobe Photoshop CS 2 简体中文使用指南
·Windows环境下32位汇编语言程序设计
·WorkHelper 办公助手v4.886
·最强文件加密锁2007

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot