热心人请帮忙,delphi帮助文件制作问题(100分)

  • 主题发起人 四界辰砂
  • 开始时间

四界辰砂

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位老大,如何在delphi中使用如同msdn一样的,html类型的帮助文件呢?
 
没有办法,Chm格式微软好象没有公开出来,国内有人知道,但好象CSDN和DFW都没有人愿意
公开,这跟解密SQLServer存储过程一样被我列为十大未解技术谜团(只是对本人来说)的
其中两个,我劝你死了这条心吧。
 
全文搜索一下,DFW里面有很多这样的帖子。
我们现在使用的是Hlp格式的,也挺好。
 
用WorkHelp Shop制作,然后链到程序里就可以了
 
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.

-------------------------------------------------------------------------------
function TMainForm.AppHtmlHelp(Command: Word;
Data: Longint;
var CallHelp: Boolean): Boolean;
var
ret:integer;
Hfile,AppPath:string;
begin

if not CallHelp then
exit;
AppPath := ExtractFilePath(Application.ExeName);
Hfile := Application.HelpFile;
case Command of
HELP_FINDER, HELP_CONTENTS:
ret := HtmlHelp(application.handle, pchar(Hfile), $0001, nil);
HELP_QUIT:
ret := HtmlHelp(application.handle, '', HELP_QUIT, nil);
//ret := HtmlHelp(application.handle, '', $0012, nil);
HELP_CONTEXT:
ret := HtmlHelp(application.handle, pchar(Hfile), $000f, DWORD_PTR(data));
//Data:HelpContext的值
end;
result:=ret<>0;
CallHelp := False;
end;

procedure TMainForm.FormCreate(Sender: TObject);
var
HtmlHelpFileName:string;
begin
HtmlHelpFileName:=ExtractFilePath(Application.ExeName)+'ngmfhelp.chm';
Application.HelpFile := HtmlHelpFileName;
Application.OnHelp := AppHtmlHelp;
//self.Brush.Bitmap:=image1.Picture.Bitmap;
end;

CHM应该会制作吧包括HelpContext
 
上面的是调用的方法,但是制作,我知道kkyy有一个CHM格式的制作软件,应该不错的吧:)
当然需要写一堆html:(
 
用HTML Help Workshop制作足矣,
没什么复杂的,
如果要能够HelpContext,
你要建立一个头文件
 
应该没有问题了吧?结账吧。
 
多谢各位!
 
顶部