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.  

你可能感兴趣的:(search,query,button,Delphi,chm,structure)