delphi 调用 chm文件

 

发信人: leenb (NB), 信区: BorlandDev
标  题: Re: delphi中如何调用chm帮助文件
发信站: 哈工大紫丁香 (2003年04月19日19:58:44 星期六), 站内信件
 
如果只是简单的调用,可以用:  
uses shellapi  
...  
begin  
ShellExecute(handle,nil,'indexsyy.chm',nil,nil,SW_SHOWNORMAL);  
end;  
 
如果要实现较复杂的功能:  
unit Unit1;  
 
interface  
 
uses  
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  
StdCtrls;  
 
const  
HH_DISPLAY_TOC = $0001;  
HH_DISPLAY_TOPIC = $0000;  
HH_CLOSE_ALL = $0012;  
HH_DISPLAY_INDEX = $0002;  
HH_HELP_CONTEXT = $000F;  
HH_DISPLAY_SEARCH= $0003;  
HH_DISPLAY_TEXT_POPUP = $000E;  
 
type  
HH_FTS_Query = record  
cbStruct : integer; // sizeof structure  
fUniCodeStrings : bool; // true if all strings are unicode  
pszSearchQuery : PChar; // string with the search query  
iProximity : longint; // word proximity  
fStemmedSearch : bool; // true for stemmed search only  
fTitleOnly : bool; // true for title search only  
fExecute : bool; // true to initiate the search  
pszWindow : PChar; // window to display in  
end; // HH_FTS_Query  
 
HH_POPUP = record  
cbStruct: integer; // sizeof this structure  
hinst: longint; // instance handle for string resource  
idString: UINT; // string resource id, or text id if pszFile is specified in  
HtmlHelp call  
pszText: LPCTSTR; // used if idString is zero  
pt: TPOINT; // top center of popup window  
clrForeground: COLORREF; // use -1 for default  
clrBackground: COLORREF; // use -1 for default  
rcMargins: TRECT; // amount of space between edges of window and text, -1 for  
each member to ignore  
pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE  
end;  
 
 
type  
TForm1 = class(TForm)  
Button1: TButton;  
Button2: TButton;  
Button3: TButton;  
Button4: TButton;  
Button5: TButton;  
procedure Button1Click(Sender: TObject);  
procedure Button2Click(Sender: TObject);  
procedure Button3Click(Sender: TObject);  
procedure Button4Click(Sender: TObject);  
procedure Button5Click(Sender: TObject);  
private  
{ Private declarations }  
public  
{ Public declarations }  
end;  
 
var  
Form1: TForm1;  
 
implementation  
 
{$R *.DFM}  
 
function HtmlHelp(hwndCaller: HWND; pszfile: PChar; uCommand: UINT;  
dwData: PDWORD): HWND; stdcall; external 'hhctrl.ocx' Name 'HtmlHelpA';  
 
procedure TForm1.Button1Click(Sender: TObject);  
begin  
{  
调用缺省主题帮助  
此调用方式用于没有上下文ID号的情形,dwData可指定一个在CHM文件内的缺省htm文件,  
 
也可取Nil,这是HtmlHelp API最基本的一种用法。  
}  
HtmlHelp(handle,pchar('help.chm'),HH_DISPLAY_TOPIC,PDWORD(pchar('article.htm'))
);  
//或:HtmlHelp(handle,pchar('help.chm'),HH_DISPLAY_TOPIC,nil);  
end;  
 
procedure TForm1.Button2Click(Sender: TObject);  
begin  
{  
调用关键字帮助  
此调用方式中dwData取索引文件(.hhk)中存在的关键字。  
}  
HtmlHelp(handle,pchar('help.chm'),HH_DISPLAY_INDEX,PDWORD(pchar('ambaSio')));  
end;  
 
procedure TForm1.Button3Click(Sender: TObject);  
var  
dw: DWORD;  
begin  
{  
调用上下文敏感帮助  
此调用方式用于含有映射信息的CHM文件, dwData取映射表中存在的ID号。  
}  
dw := 10;  
HtmlHelp(handle,pchar('>help.chm'),HH_HELP_CONTEXT,PDWORD(@dw));  
//这种方式我没试出来,可能是我的chm文件不含映射信息的缘故。  
end;  
 
procedure TForm1.Button4Click(Sender: TObject);  
var  
query: HH_FTS_Query;  
begin  
{  
调用全文搜索帮助  
}  
with query do  
begin  
cbStruct := sizeof(HH_FTS_Query);  
fUniCodeStrings := false;  
iProximity := 10;  
fStemmedSearch := true;  
fExecute := true;  
fTitleOnly := false;  
pszWindow := 'MainWin';  
pszSearchQuery := 'd';  
end;  
HtmlHelp(handle,pchar('help.chm'),HH_DISPLAY_SEARCH,PDWORD(@query));  
end;  
 
procedure TForm1.Button5Click(Sender: TObject);  
var  
popup: HH_POPUP;  
begin  
{  
调用弹出式帮助  
PszFile通常取NULL,也可以指定一个CHM和一个在该CHM文件中的TEXT文件,DwData用  
于指定一个指向HH_POPUP结构的指针。  
}  
with popup do  
begin  
cbStruct := sizeof(HH_POPUP);  
hinst:= 0;  
idString:=1;  
pszText:=nil;  
//pt:= pt;  
GetCursorPos(pt);  
clrForeground:=COLORREF(-1);  
clrBackground:=COLORREF(-1);  
rcMargins.Left := 0;  
rcMargins.Top := 0;  
rcMargins.Right := 25;  
rcMargins.Bottom := 25;  
pszFont:=LPCTSTR('BOLD');  
end;  
HtmlHelp(handle,pchar('test.chm'),HH_DISPLAY_TEXT_POPUP,PDWORD(@popup));  
//这个我也没搞太明白,能出现Popup,但无帮助内容。  
end;  
 
end.  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 Delphi快速入门(一)  第一章 Delphi快速入门(二)  第一章 Delphi快速入门(三)  第一章 Delphi快速入门(四)  第一章 Delphi快速入门(五)  第二章 Delphi面向对象的编程方法(一)  第二章 Delphi面向对象的编程方法(二)  第二章 Delphi面向对象的编程方法(三)  第二章 Delphi面向对象的编程方法(四)  第三章 字符串列表及应用(一)  第三章 字符串列表及应用(二)  第四章 文本编辑器的设计(一)  第四章 文本编辑器的设计(二)  第五章 Delphi图形图像编程(一)  第五章 Delphi图形图像编程(二)  第六章 文件管理(一)  第六章 文件管理(二)  第六章 文件管理(三)  第七章 剪贴板和动态数据交换(一)  第七章 剪贴板和动态数据交换(二)  第八章 对象链接与嵌入(一)  第八章 对象链接与嵌入(二)  第九章 Delphi拖放编程  第十章 动态链接库编程(一)  第十章 动态链接库编程(二)  第十一章 Delphi应用程序的应用(一)  第十一章 Delphi应用程序的应用(二)  第十二章 异常处理与程序调试(一)  第十二章 异常处理与程序调试(二)  第十二章 异常处理与程序调试(三)  第十三章 Delphi开发数据库应用程序概述(一)  第十三章 Delphi开发数据库应用程序概述(二)  第十四章 简单数据库应用的创建及MASTAPP介绍(一)  第十四章 简单数据库应用的创建及MASTAPP介绍(二)  第十四章 简单数据库应用的创建及MASTAPP介绍(三)  第十五章 数据访问部件的应用及编程(一)  第十五章 数据访问部件的应用及编程(二)  第十五章 数据访问部件的应用及编程(三)  第十六章 数据浏览部件的应用及编程(一)  第十六章 数据浏览部件的应用及编程(二)  第十七章 SQL编程(一)  第十七章 SQL编程(二)  第十八章 Delphi客户服务器应用开发(一)  第十八章 Delphi客户服务器应用开发(二)  第十八章 Delphi客户服务器应用开发(三)  第十八章 Delphi客户服务器应用开发(四)  第十九章 Delphi自定义部件开发(一)  第十九章 Delphi自定义部件开发(二)  第十九章 Delphi自定义部件开发(三)  第十九章 Delphi自定义部件开发(四)  第二十章 开发Delphi对象式数据管理功能(一)  第二十章 开发Delphi对象式数据管理功能(二)  第二十章 开发Delphi对象式数据管理功能(三)  第二十章 开发Delphi对象式数据管理功能(四)  第二十章 开发Delphi对象式数据管理功能(五)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值