
{******************************************}
{                                          }
{             FastReport v4.0              }
{             Chm help viewer              }
{                                          }
{         Copyright (c) 1998-2008          }
{         by Alexander Tzyganenko,         }
{            Fast Reports Inc.             }
{                                          }
{******************************************}

unit frxChm;

interface

{$I frx.inc}

uses Windows, Graphics;

procedure frxDisplayHHTopic(Handle: THandle; const topic: String);


implementation

const
  HH_DISPLAY_TOPIC  = $0000;
  HH_DISPLAY_TOC    = $0001;

type
  THtmlHelpA = function(hwndCaller: THandle; pszFile: PAnsiChar;
    uCommand: Cardinal; dwData: Longint): THandle; stdcall;
{$IFDEF Delphi12}
  THtmlHelpW = function(hwndCaller: THandle; pszFile: PWideChar;
    uCommand: Cardinal; dwData: Longint): THandle; stdcall;
{$ENDIF}


var
{$IFDEF Delphi12}
  HtmlHelpW: THtmlHelpW = nil;
{$ELSE}
  HtmlHelpA: THtmlHelpA = nil;
{$ENDIF}

  OCXHandle: THandle = 0;

function HtmlHelpInstalled: Boolean;
begin
{$IFDEF Delphi12}
  Result := (Assigned(HtmlHelpW));
{$ELSE}
  Result := (Assigned(HtmlHelpA));
{$ENDIF}
end;

procedure frxDisplayHHTopic(Handle: THandle; const topic: String);
begin
{$IFDEF Delphi12}
  if (Assigned(HtmlHelpW)) then
    HtmlHelpW(Handle, PChar(topic), HH_DISPLAY_TOC, 0);
{$ELSE}
  if (Assigned(HtmlHelpA)) then
    HtmlHelpA(Handle, PChar(topic), HH_DISPLAY_TOC, 0);
{$ENDIF}

end;


initialization
{$IFDEF Delphi12}
  HtmlHelpW := nil;
{$ELSE}
  HtmlHelpA := nil;
{$ENDIF}
  OCXHandle := LoadLibrary('HHCtrl.OCX');
  if (OCXHandle <> 0) then
  {$IFDEF Delphi12}
      HtmlHelpW := GetProcAddress(OCXHandle, 'HtmlHelpW');
  {$ELSE}
      HtmlHelpA := GetProcAddress(OCXHandle, 'HtmlHelpA');
  {$ENDIF}

finalization
  if (OCXHandle <> 0) then
    FreeLibrary(OCXHandle);
end.



