谁知道delphi中怎样调用帮助文件?(50分)

  • 主题发起人 主题发起人 若水三千
  • 开始时间 开始时间

若水三千

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在delphi中如何调用*.chm的帮助文件?如何编代码的?现在做了个chm的帮助,迟迟挂不上去,急啊!
 
ShellExecute(Handle,'open','???.chm',Nil,Nil,SW_SHOWNORMAL);
 
uses shellapi;
ShellExecute(handle, 'open', 'your.chm',nil,nil, SW_SHOWMAXIMIZED);

2.
Function HtmlHelp(hwd : integer;pszFile : String;uCommand :Integer;dwData :LongInt):integer;
stdcall;external 'HHCtrl.ocx' name 'HtmlHelpA';

CHM帮助文件的编程实现
声明HtmlHelp API函数
由于HtmlHelp API 并没有集成在Windows操作系统的API中,因此不能直接调用HtmlHelp.lib 库函数,但
HtmlHelp API的功能位于hhctrl.ocx中,这样可以通过调用hhctrl.lib库函数来显示帮助文件,
其声明格式如下:
Declare Function Htmlhelp Lib "hhctrl.ocx"Alias "HtmlHelpA"
(ByVal hwndCaller As Long,
ByVal pszFile As String,
ByVal uCommand As Long,
ByVal dwData As Any) As Long

具体参数含义如下:
hwndCaller 调用该函数的窗体句柄
pszFile 帮助文件的名称和位置
uCommand 帮助类型
dwData 与uCommand相匹配的附加参数
定义uCommand 常数
Const HH_DISPLAY_TOPIC = &H0
Const HH_DISPLAY_INDEX=&H2
Const HH_HELP_CONTEXT = &HF
Const HH_DISPLAY_SEARCH= &H3
Const HH_DISPLAY_TEXT_POPUP= &HE
接着指定CHM文件的名称和位置:
App.HelpFile=App.Path &
"/Sample.CHM"

程序调用
调用缺省主题帮助
Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_TOPIC,
ByVal "Default.htm")

此调用方式用于没有上下文ID号的情形,dwData可指定一个在CHM文件内的缺省htm文件,也可取NULL,这是
HtmlHelp API最基本的一种用法。
调用关键字帮助
Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_INDEX,
(DWORD)"关键字"))

此调用方式中dwData取索引文件(.hhk)中存在的关键字。
调用上下文敏感帮助
Call HtmlHelp(hwnd,
App.HelpFile,
HH_HELP_CONTEXT, 1000)

此调用方式用于含有映射信息的CHM文件, dwData取映射表中存在的ID号。
调用全文搜索帮助
Dim Query As HH_FTS_QUERY
Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_SEARCH,
(DWORD)&
Query)

DwData参数指定一个指向HH_FTS_QUERY结构的指针。
调用弹出式帮助
Dim Popup As HH_POPUP
Call HtmlHelp(hwnd,
NULL,
HH_DISPLAY_TEXT_POPUP,
(DWORD)&Popup)

PszFile通常取NULL,也可以指定一个CHM和一个在该CHM文件中的TEXT文件,DwData用于指定一个指向HH_POPUP结
构的指针。
指定显示窗体形式
由于显示帮助文件的缺省窗体是在编译该CHM文件时的窗体,因此为了更好地控制帮助文件的显示,在制作CHM文
件时,可以自定义一个窗体形式。在程序中可以通过两种方法来调用自定义窗体。
1.当uCommand 为HH_DISPLAY_TOPIC或HH_HELP_CONTEXT时,在pszFile参数中用“>”符号,其后跟上窗体名称即可。如pszFile取:
App.HelpFile &
"> MainWin"
2.用HtmlHelp函数直接指定:
Dim WinType As HH_WINTYPE
Call HtmlHelp(hwnd,
App.HelpFile &" > MainWin",
HH_SET_WIN_TYPE,
(DWORD) &WinType)

必须声明的是,以上叙述中使用的“Sample.CHM”、“Default.htm”、“关键字”、“1000”和“MainWin”等
均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。
至此,应用程序的帮助系统就建立起来了,当然,要把帮助系统做得更完美一点,还有更多的工作要做。
 
是csdn的“弱水三千”么?
要是的话,大富翁的数据库版可热闹了
 
ShellExecute(mainfrm.Handle,nil,'Help.chm','','',SW_SHOWNORMAL);
 
http://www.ec-software.com/delphi/ehs.zip
给你个控件,很好用的,功能也十分强大。
 
Function HtmlHelp(hwd : integer;pszFile : String;uCommand :Integer;dwData :LongInt):integer;
stdcall;external 'HHCtrl.ocx' name 'HtmlHelpA';
 
uses shellapi;
var
p:pchar;
begin
if FileExists(ExtractFilePath(Application.Exename)+'vgInfo.chm') then
begin
p:=pchar(ExtractFilePath(Application.Exename)+'vgInfo.chm');
ShellExecute(0, nil, p, nil, nil, SW_NORMAL);
end
else
begin
p:=pchar(ExtractFilePath(Application.Exename)+'/help/Index.HTM');
ShellExecute(0, nil, p, nil, nil, SW_NORMAL);
end;
 
后退
顶部