帮助文件的制作 (50分)

  • 主题发起人 主题发起人 onlyonekgx
  • 开始时间 开始时间
O

onlyonekgx

Unregistered / Unconfirmed
GUEST, unregistred user!

HTML Help Workshop
作的帮助文件,为什么图片出不来(源图片在当前目录下)?
如何在Delphi
里调用?
 
不要用绝对路径,用相对路径就OK了.
 
我就是用的相对路径,图片出来了.
 
学习了!
踢~~~
 
如何在Delphi
里调用?
 
作chm格式的帮助我试了很多,觉得FAR最好
 
听课.........
 
我找到一个调用chm的东西
做chm用far比较好
 
看看html源码下的路径对不对!
 
far在那里有下载呢,我现在用elib制作
 
我的网站上有far下载,使用这个制作确实不错。网址:http://wolfsoft.nugoo.com,
好像在下载基地中。
在制作Chm的时候,有关图片的链接不要使用绝对路径,使用相对路径是可以的。
 
将此文件存为htmlhelp.pas
====================
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ HTML Help interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: htmlhelp.h, released 12 May 1999. }
{ The original Pascal code is: HTMLHelp.pas, released 9 Jun 1999. }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Contributor(s): Robert Chandler (robert@helpware.net) }
{ Kurt Senfer (ks@siemens.dk) }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License");
you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
{ implied. See the License for the specific language governing }
{ rights and limitations under the License. }
{ }
{******************************************************************}
unit HtmlHlp;
interface
(*$HPPEMIT ''*)
(*$HPPEMIT '#include "htmlhelp.h"'*)
(*$HPPEMIT ''*)
(*$HPPEMIT 'typedef struct tagHH_LAST_ERROR'*)
(*$HPPEMIT '{'*)
(*$HPPEMIT ' int cbStruct ;'*)
(*$HPPEMIT ' HRESULT hr ;'*)
(*$HPPEMIT ' BSTR description ;'*)
(*$HPPEMIT '} HH_LAST_ERROR ;'*)
(*$HPPEMIT ''*)
uses
Windows;
{$I HTMLHLP.INC}
type
{$IFDEF HTMLHELP12}
{$IFNDEF _WIN64}
DWORD_PTR = DWORD;
{$ENDIF}
{$ENDIF}
PCSTR = LPCSTR;
// Commands to pass to HtmlHelp()
const
HH_DISPLAY_TOPIC = $0000;
{$EXTERNALSYM HH_DISPLAY_TOPIC}
HH_HELP_FINDER = $0000;
// WinHelp equivalent
{$EXTERNALSYM HH_HELP_FINDER}
HH_DISPLAY_TOC = $0001;
// not currently implemented
{$EXTERNALSYM HH_DISPLAY_TOC}
HH_DISPLAY_INDEX = $0002;
// not currently implemented
{$EXTERNALSYM HH_DISPLAY_INDEX}
HH_DISPLAY_SEARCH = $0003;
// not currently implemented
{$EXTERNALSYM HH_DISPLAY_SEARCH}
HH_SET_WIN_TYPE = $0004;
{$EXTERNALSYM HH_SET_WIN_TYPE}
HH_GET_WIN_TYPE = $0005;
{$EXTERNALSYM HH_GET_WIN_TYPE}
HH_GET_WIN_HANDLE = $0006;
{$EXTERNALSYM HH_GET_WIN_HANDLE}
HH_ENUM_INFO_TYPE = $0007;
// Get Info type name, call repeatedly to enumerate, -1 at end
{$EXTERNALSYM HH_ENUM_INFO_TYPE}
HH_SET_INFO_TYPE = $0008;
// Add Info type to filter.
{$EXTERNALSYM HH_SET_INFO_TYPE}
HH_SYNC = $0009;
{$EXTERNALSYM HH_SYNC}
{$IFDEF HTMLHELP11}
HH_ADD_NAV_UI = $000A;
// not currently implemented
{$EXTERNALSYM HH_ADD_NAV_UI}
HH_ADD_BUTTON = $000B;
// not currently implemented
{$EXTERNALSYM HH_ADD_BUTTON}
HH_GETBROWSER_APP = $000C;
// not currently implemented
{$EXTERNALSYM HH_GETBROWSER_APP}
{$ENDIF}
{$IFDEF HTMLHELP12}
HH_RESERVED1 = $000A;
{$EXTERNALSYM HH_RESERVED1}
HH_RESERVED2 = $000B;
{$EXTERNALSYM HH_RESERVED2}
HH_RESERVED3 = $000C;
{$EXTERNALSYM HH_RESERVED3}
{$ENDIF}
HH_KEYWORD_LOOKUP = $000D;
{$EXTERNALSYM HH_KEYWORD_LOOKUP}
HH_DISPLAY_TEXT_POPUP = $000E;
// display string resource id or text in a popup window
{$EXTERNALSYM HH_DISPLAY_TEXT_POPUP}
HH_HELP_CONTEXT = $000F;
// display mapped numeric value in dwData
{$EXTERNALSYM HH_HELP_CONTEXT}
HH_TP_HELP_CONTEXTMENU = $0010;
// text popup help, same as WinHelp HELP_CONTEXTMENU
{$EXTERNALSYM HH_TP_HELP_CONTEXTMENU}
HH_TP_HELP_WM_HELP = $0011;
// text popup help, same as WinHelp HELP_WM_HELP
{$EXTERNALSYM HH_TP_HELP_WM_HELP}
HH_CLOSE_ALL = $0012;
// close all windows opened directly or indirectly by the caller
{$EXTERNALSYM HH_CLOSE_ALL}
HH_ALINK_LOOKUP = $0013;
// ALink version of HH_KEYWORD_LOOKUP
{$EXTERNALSYM HH_ALINK_LOOKUP}
HH_GET_LAST_ERROR = $0014;
// not currently implemented, See HHERROR.h
{$EXTERNALSYM HH_GET_LAST_ERROR}
HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
{$EXTERNALSYM HH_ENUM_CATEGORY}
HH_ENUM_CATEGORY_IT = $0016;
// Get category info type members, call repeatedly to enumerate, -1 at end
{$EXTERNALSYM HH_ENUM_CATEGORY_IT}
HH_RESET_IT_FILTER = $0017;
// Clear the info type filter of all info types.
{$EXTERNALSYM HH_RESET_IT_FILTER}
HH_SET_INCLUSIVE_FILTER = $0018;
// set inclusive filtering method for untyped topics to be included in display
{$EXTERNALSYM HH_SET_INCLUSIVE_FILTER}
HH_SET_EXCLUSIVE_FILTER = $0019;
// set exclusive filtering method for untyped topics to be excluded from display
{$EXTERNALSYM HH_SET_EXCLUSIVE_FILTER}
{$IFDEF HTMLHELP11}
HH_SET_GUID = $001A;
// For Microsoft Installer -- dwData is a pointer to the GUID string
{$EXTERNALSYM HH_SET_GUID}
{$ENDIF}
{$IFDEF HTMLHELP12}
HH_INITIALIZE = $001C;
// Initializes the help system.
{$EXTERNALSYM HH_INITIALIZE}
HH_UNINITIALIZE = $001D;
// Uninitializes the help system.
{$EXTERNALSYM HH_UNINITIALIZE}
HH_PRETRANSLATEMESSAGE = $00FD;
// Pumps messages. (NULL, NULL, MSG*).
{$EXTERNALSYM HH_PRETRANSLATEMESSAGE}
HH_SET_GLOBAL_PROPERTY = $00FC;
// Set a global property. (NULL, NULL, HH_GPROP)
{$EXTERNALSYM HH_SET_GLOBAL_PROPERTY}
{$ENDIF}
{$IFDEF HTMLHELP11}
HH_INTERNAL = $00FF;
// Used internally.
{$EXTERNALSYM HH_INTERNAL}
{$ENDIF}
{$IFDEF HTMLHELP12}
HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0);
// Automatically hide/show tri-pane window
{$EXTERNALSYM HHWIN_PROP_TAB_AUTOHIDESHOW}
{$ENDIF}
HHWIN_PROP_ONTOP = (1 shl 1);
// Top-most window (not currently implemented)
{$EXTERNALSYM HHWIN_PROP_ONTOP}
HHWIN_PROP_NOTITLEBAR = (1 shl 2);
// no title bar
{$EXTERNALSYM HHWIN_PROP_NOTITLEBAR}
HHWIN_PROP_NODEF_STYLES = (1 shl 3);
// no default window styles (only HH_WINTYPE.dwStyles)
{$EXTERNALSYM HHWIN_PROP_NODEF_STYLES}
HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4);
// no default extended window styles (only HH_WINTYPE.dwExStyles)
{$EXTERNALSYM HHWIN_PROP_NODEF_EXSTYLES}
HHWIN_PROP_TRI_PANE = (1 shl 5);
// use a tri-pane window
{$EXTERNALSYM HHWIN_PROP_TRI_PANE}
HHWIN_PROP_NOTB_TEXT = (1 shl 6);
// no text on toolbar buttons
{$EXTERNALSYM HHWIN_PROP_NOTB_TEXT}
HHWIN_PROP_POST_QUIT = (1 shl 7);
// post WM_QUIT message when window closes
{$EXTERNALSYM HHWIN_PROP_POST_QUIT}
HHWIN_PROP_AUTO_SYNC = (1 shl 8);
// automatically ssync contents and index
{$EXTERNALSYM HHWIN_PROP_AUTO_SYNC}
HHWIN_PROP_TRACKING = (1 shl 9);
// send tracking notification messages
{$EXTERNALSYM HHWIN_PROP_TRACKING}
HHWIN_PROP_TAB_SEARCH = (1 shl 10);
// include search tab in navigation pane
{$EXTERNALSYM HHWIN_PROP_TAB_SEARCH}
HHWIN_PROP_TAB_HISTORY = (1 shl 11);
// include history tab in navigation pane
{$EXTERNALSYM HHWIN_PROP_TAB_HISTORY}
{$IFDEF HTMLHELP11}
HHWIN_PROP_TAB_BOOKMARKS = (1 shl 12);
// include bookmark tab in navigation pane
{$EXTERNALSYM HHWIN_PROP_TAB_BOOKMARKS}
{$ENDIF}
{$IFDEF HTMLHELP12}
HHWIN_PROP_TAB_FAVORITES = (1 shl 12);
// include favorites tab in navigation pane
{$EXTERNALSYM HHWIN_PROP_TAB_FAVORITES}
{$ENDIF}
HHWIN_PROP_CHANGE_TITLE = (1 shl 13);
// Put current HTML title in title bar
{$EXTERNALSYM HHWIN_PROP_CHANGE_TITLE}
HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14);
// Only display the navigation window
{$EXTERNALSYM HHWIN_PROP_NAV_ONLY_WIN}
HHWIN_PROP_NO_TOOLBAR = (1 shl 15);
// do
n't display a toolbar
{$EXTERNALSYM HHWIN_PROP_NO_TOOLBAR}
HHWIN_PROP_MENU = (1 shl 16);
// Menu
{$EXTERNALSYM HHWIN_PROP_MENU}
HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17);
// Advanced FTS UI.
{$EXTERNALSYM HHWIN_PROP_TAB_ADVSEARCH}
HHWIN_PROP_USER_POS = (1 shl 18);
// After initial creation, user controls window size/Position
{$EXTERNALSYM HHWIN_PROP_USER_POS}
{$IFDEF HTMLHELP12}
HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19);
// Use custom tab #1
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM1}
HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20);
// Use custom tab #2
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM2}
HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21);
// Use custom tab #3
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM3}
HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22);
// Use custom tab #4
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM4}
HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23);
// Use custom tab #5
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM5}
HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24);
// Use custom tab #6
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM6}
HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25);
// Use custom tab #7
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM7}
HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26);
// Use custom tab #8
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM8}
HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27);
// Use custom tab #9
{$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM9}
HHWIN_TB_MARGIN = (1 shl 28);
// the window type has a margin
{$EXTERNALSYM HHWIN_TB_MARGIN}
{$ENDIF}
HHWIN_PARAM_PROPERTIES = (1 shl 1);
// valid fsWinProperties
{$EXTERNALSYM HHWIN_PARAM_PROPERTIES}
HHWIN_PARAM_STYLES = (1 shl 2);
// valid dwStyles
{$EXTERNALSYM HHWIN_PARAM_STYLES}
HHWIN_PARAM_EXSTYLES = (1 shl 3);
// valid dwExStyles
{$EXTERNALSYM HHWIN_PARAM_EXSTYLES}
HHWIN_PARAM_RECT = (1 shl 4);
// valid rcWindowPos
{$EXTERNALSYM HHWIN_PARAM_RECT}
HHWIN_PARAM_NAV_WIDTH = (1 shl 5);
// valid iNavWidth
{$EXTERNALSYM HHWIN_PARAM_NAV_WIDTH}
HHWIN_PARAM_SHOWSTATE = (1 shl 6);
// valid nShowState
{$EXTERNALSYM HHWIN_PARAM_SHOWSTATE}
HHWIN_PARAM_INFOTYPES = (1 shl 7);
// valid apInfoTypes
{$EXTERNALSYM HHWIN_PARAM_INFOTYPES}
HHWIN_PARAM_TB_FLAGS = (1 shl 8);
// valid fsToolBarFlags
{$EXTERNALSYM HHWIN_PARAM_TB_FLAGS}
HHWIN_PARAM_EXPANSION = (1 shl 9);
// valid fNotExpanded
{$EXTERNALSYM HHWIN_PARAM_EXPANSION}
HHWIN_PARAM_TABPOS = (1 shl 10);
// valid tabpos
{$EXTERNALSYM HHWIN_PARAM_TABPOS}
HHWIN_PARAM_TABORDER = (1 shl 11);
// valid taborder
{$EXTERNALSYM HHWIN_PARAM_TABORDER}
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12);
// valid cHistory
{$EXTERNALSYM HHWIN_PARAM_HISTORY_COUNT}
HHWIN_PARAM_CUR_TAB = (1 shl 13);
// valid curNavType
{$EXTERNALSYM HHWIN_PARAM_CUR_TAB}
HHWIN_BUTTON_EXPAND = (1 shl 1);
// Expand/contract button
{$EXTERNALSYM HHWIN_BUTTON_EXPAND}
HHWIN_BUTTON_BACK = (1 shl 2);
// Back button
{$EXTERNALSYM HHWIN_BUTTON_BACK}
HHWIN_BUTTON_FORWARD = (1 shl 3);
// Forward button
{$EXTERNALSYM HHWIN_BUTTON_FORWARD}
HHWIN_BUTTON_STOP = (1 shl 4);
// Stop button
{$EXTERNALSYM HHWIN_BUTTON_STOP}
HHWIN_BUTTON_REFRESH = (1 shl 5);
// Refresh button
{$EXTERNALSYM HHWIN_BUTTON_REFRESH}
HHWIN_BUTTON_HOME = (1 shl 6);
// Home button
{$EXTERNALSYM HHWIN_BUTTON_HOME}
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_FWD}
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_BROWSE_BCK}
HHWIN_BUTTON_NOTES = (1 shl 9);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_NOTES}
HHWIN_BUTTON_CONTENTS = (1 shl 10);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_CONTENTS}
HHWIN_BUTTON_SYNC = (1 shl 11);
// Sync button
{$EXTERNALSYM HHWIN_BUTTON_SYNC}
HHWIN_BUTTON_OPTIONS = (1 shl 12);
// Options button
{$EXTERNALSYM HHWIN_BUTTON_OPTIONS}
HHWIN_BUTTON_PRINT = (1 shl 13);
// Print button
{$EXTERNALSYM HHWIN_BUTTON_PRINT}
HHWIN_BUTTON_INDEX = (1 shl 14);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_INDEX}
HHWIN_BUTTON_SEARCH = (1 shl 15);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_SEARCH}
HHWIN_BUTTON_HISTORY = (1 shl 16);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_HISTORY}
{$IFDEF HTMLHELP11}
HHWIN_BUTTON_BOOKMARKS = (1 shl 17);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_BOOKMARKS}
{$ENDIF}
{$IFDEF HTMLHELP12}
HHWIN_BUTTON_FAVORITES = (1 shl 17);
// not implemented
{$EXTERNALSYM HHWIN_BUTTON_FAVORITES}
{$ENDIF}
HHWIN_BUTTON_JUMP1 = (1 shl 18);
{$EXTERNALSYM HHWIN_BUTTON_JUMP1}
HHWIN_BUTTON_JUMP2 = (1 shl 19);
{$EXTERNALSYM HHWIN_BUTTON_JUMP2}
HHWIN_BUTTON_ZOOM = (1 shl 20);
{$EXTERNALSYM HHWIN_BUTTON_ZOOM}
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
{$EXTERNALSYM HHWIN_BUTTON_TOC_NEXT}
HHWIN_BUTTON_TOC_PREV = (1 shl 22);
{$EXTERNALSYM HHWIN_BUTTON_TOC_PREV}
HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND or HHWIN_BUTTON_BACK or
HHWIN_BUTTON_OPTIONS or HHWIN_BUTTON_PRINT;
{$EXTERNALSYM HHWIN_DEF_BUTTONS}
// Button IDs
IDTB_EXPAND = 200;
{$EXTERNALSYM IDTB_EXPAND}
IDTB_CONTRACT = 201;
{$EXTERNALSYM IDTB_CONTRACT}
IDTB_STOP = 202;
{$EXTERNALSYM IDTB_STOP}
IDTB_REFRESH = 203;
{$EXTERNALSYM IDTB_REFRESH}
IDTB_BACK = 204;
{$EXTERNALSYM IDTB_BACK}
IDTB_HOME = 205;
{$EXTERNALSYM IDTB_HOME}
IDTB_SYNC = 206;
{$EXTERNALSYM IDTB_SYNC}
IDTB_PRINT = 207;
{$EXTERNALSYM IDTB_PRINT}
IDTB_OPTIONS = 208;
{$EXTERNALSYM IDTB_OPTIONS}
IDTB_FORWARD = 209;
{$EXTERNALSYM IDTB_FORWARD}
IDTB_NOTES = 210;
// not implemented
{$EXTERNALSYM IDTB_NOTES}
IDTB_BROWSE_FWD = 211;
{$EXTERNALSYM IDTB_BROWSE_FWD}
IDTB_BROWSE_BACK = 212;
{$EXTERNALSYM IDTB_BROWSE_BACK}
IDTB_CONTENTS = 213;
// not implemented
{$EXTERNALSYM IDTB_CONTENTS}
IDTB_INDEX = 214;
// not implemented
{$EXTERNALSYM IDTB_INDEX}
IDTB_SEARCH = 215;
// not implemented
{$EXTERNALSYM IDTB_SEARCH}
IDTB_HISTORY = 216;
// not implemented
{$EXTERNALSYM IDTB_HISTORY}
{$IFDEF HTMLHELP11}
IDTB_BOOKMARKS = 217;
// not implemented
{$EXTERNALSYM IDTB_BOOKMARKS}
{$ENDIF}
{$IFDEF HTMLHELP12}
IDTB_FAVORITES = 217;
// not implemented
{$EXTERNALSYM IDTB_FAVORITES}
{$ENDIF}
IDTB_JUMP1 = 218;
{$EXTERNALSYM IDTB_JUMP1}
IDTB_JUMP2 = 219;
{$EXTERNALSYM IDTB_JUMP2}
IDTB_CUSTOMIZE = 221;
{$EXTERNALSYM IDTB_CUSTOMIZE}
IDTB_ZOOM = 222;
{$EXTERNALSYM IDTB_ZOOM}
IDTB_TOC_NEXT = 223;
{$EXTERNALSYM IDTB_TOC_NEXT}
IDTB_TOC_PREV = 224;
{$EXTERNALSYM IDTB_TOC_PREV}
// Notification codes
HHN_FIRST = -860;
{$EXTERNALSYM HHN_FIRST}
HHN_LAST = -879;
{$EXTERNALSYM HHN_LAST}
HHN_NAVCOMPLETE = (HHN_FIRST - 0);
{$EXTERNALSYM HHN_NAVCOMPLETE}
HHN_TRACK = (HHN_FIRST - 1);
{$EXTERNALSYM HHN_TRACK}
HHN_WINDOW_CREATE = (HHN_FIRST - 2);
{$EXTERNALSYM HHN_WINDOW_CREATE}
type
PHHLastError = ^THHLastError;
tagHH_LAST_ERROR = packed record
cbStruct: Integer;
// size of this structure
hr: HRESULT;
// the last error code.
description: PWideChar;
// a description of the error (unicode string - BSTR).
end;
THHLastError = tagHH_LAST_ERROR;
PHHNNotify = ^THHNNotify;
tagHHN_NOTIFY = packed record
hdr: NMHDR;
pszUrl: PCSTR;
// multibyte null-terminated string
end;
{$EXTERNALSYM tagHHN_NOTIFY}
HHN_NOTIFY = tagHHN_NOTIFY;
{$EXTERNALSYM HHN_NOTIFY}
THHNNotify = tagHHN_NOTIFY;
PHHPopup = ^THHPopup;
tagHH_POPUP = packed record
cbStruct: Integer;
// sizeof this structure
hinst: HINST;
// 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: TColorRef;
// use -1 for default
clrBackground: TColorRef;
// 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;
{$EXTERNALSYM tagHH_POPUP}
HH_POPUP = tagHH_POPUP;
{$EXTERNALSYM HH_POPUP}
THHPopup = tagHH_POPUP;
PHHAKLink = ^THHAKLink;
tagHH_AKLINK = packed record
cbStruct: Integer;
// sizeof this structure
fReserved: BOOL;
// must be FALSE (really!)
pszKeywords: LPCTSTR;
// semi-colon separated keywords
pszUrl: LPCTSTR;
// URL to jump to if no keywords found (may be NULL)
pszMsgText: LPCTSTR;
// Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszMsgTitle: LPCTSTR;
// Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszWindow: LPCTSTR;
// Window to display URL in
fIndexOnFail: BOOL;
// Displays index if keyword lookup fails.
end;
{$EXTERNALSYM tagHH_AKLINK}
HH_AKLINK = tagHH_AKLINK;
{$EXTERNALSYM HH_AKLINK}
THHAKLink = tagHH_AKLINK;
const
HHWIN_NAVTYPE_TOC = 0;
{$EXTERNALSYM HHWIN_NAVTYPE_TOC}
HHWIN_NAVTYPE_INDEX = 1;
{$EXTERNALSYM HHWIN_NAVTYPE_INDEX}
HHWIN_NAVTYPE_SEARCH = 2;
{$EXTERNALSYM HHWIN_NAVTYPE_SEARCH}
{$IFDEF HTMLHELP11}
HHWIN_NAVTYPE_BOOKMARKS = 3;
{$EXTERNALSYM HHWIN_NAVTYPE_BOOKMARKS}
HHWIN_NAVTYPE_HISTORY = 4;
//not implemented
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
{$ENDIF}
{$IFDEF HTMLHELP12}
HHWIN_NAVTYPE_FAVORITES = 3;
{$EXTERNALSYM HHWIN_NAVTYPE_FAVORITES}
HHWIN_NAVTYPE_HISTORY = 4;
//not implemented
{$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
HHWIN_NAVTYPE_AUTHOR = 5;
{$EXTERNALSYM HHWIN_NAVTYPE_AUTHOR}
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
{$EXTERNALSYM HHWIN_NAVTYPE_CUSTOM_FIRST}
{$ENDIF}
IT_INCLUSIVE = 0;
{$EXTERNALSYM IT_INCLUSIVE}
IT_EXCLUSIVE = 1;
{$EXTERNALSYM IT_EXCLUSIVE}
IT_HIDDEN = 2;
{$EXTERNALSYM IT_HIDDEN}
type
PHHEnumIT = ^THHEnumIT;
tagHH_ENUM_IT = packed record
cbStruct: Integer;
// size of this structure
iType: Integer;
// the type of the information type ie. Inclusive, Exclusive, or Hidden
pszCatName: LPCSTR;
// Set to the name of the Category to enumerate the info types in a category;
else
NULL
pszITName: LPCSTR;
// volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
pszITDescription: LPCSTR;
// volitile pointer to the description of the infotype.
end;
{$EXTERNALSYM tagHH_ENUM_IT}
HH_ENUM_IT = tagHH_ENUM_IT;
{$EXTERNALSYM HH_ENUM_IT}
PHH_ENUM_IT = ^tagHH_ENUM_IT;
{$EXTERNALSYM PHH_ENUM_IT}
THHEnumIT = tagHH_ENUM_IT;
PHHEnumCat = ^THHEnumCat;
tagHH_ENUM_CAT = packed record
cbStruct: Integer;
// size of this structure
pszCatName: LPCSTR;
// volitile pointer to the category name
pszCatDescription: LPCSTR;
// volitile pointer to the category description
end;
{$EXTERNALSYM tagHH_ENUM_CAT}
HH_ENUM_CAT = tagHH_ENUM_CAT;
{$EXTERNALSYM HH_ENUM_CAT}
PHH_ENUM_CAT = ^tagHH_ENUM_CAT;
{$EXTERNALSYM PHH_ENUM_CAT}
THHEnumCat = tagHH_ENUM_CAT;
PHHSetInfoType = ^THHSetInfoType;
tagHH_SET_INFOTYPE = packed record
cbStruct: Integer;
// the size of this structure
pszCatName: LPCSTR;
// the name of the category, if any, the InfoType is a member of.
pszInfoTypeName: LPCSTR;
// the name of the info type to add to the filter
end;
{$EXTERNALSYM tagHH_SET_INFOTYPE}
HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
{$EXTERNALSYM HH_SET_INFOTYPE}
PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
{$EXTERNALSYM PHH_SET_INFOTYPE}
THHSetInfoType = tagHH_SET_INFOTYPE;
HH_INFOTYPE = DWORD;
{$EXTERNALSYM HH_INFOTYPE}
PHH_INFOTYPE = ^HH_INFOTYPE;
{$EXTERNALSYM PHH_INFOTYPE}
PHHInfoType = ^THHInfoType;
THHInfoType = HH_INFOTYPE;
const
HHWIN_NAVTAB_TOP = 0;
{$EXTERNALSYM HHWIN_NAVTAB_TOP}
HHWIN_NAVTAB_LEFT = 1;
{$EXTERNALSYM HHWIN_NAVTAB_LEFT}
HHWIN_NAVTAB_BOTTOM = 2;
{$EXTERNALSYM HHWIN_NAVTAB_BOTTOM}
HH_MAX_TABS = 19;
{$EXTERNALSYM HH_MAX_TABS}
HH_TAB_CONTENTS = 0;
{$EXTERNALSYM HH_TAB_CONTENTS}
HH_TAB_INDEX = 1;
{$EXTERNALSYM HH_TAB_INDEX}
HH_TAB_SEARCH = 2;
{$EXTERNALSYM HH_TAB_SEARCH}
{$IFDEF HTMLHELP11}
HH_TAB_BOOKMARKS = 3;
{$EXTERNALSYM HH_TAB_BOOKMARKS}
HH_TAB_HISTORY = 4;
{$EXTERNALSYM HH_TAB_HISTORY}
{$ENDIF}
{$IFDEF HTMLHELP12}
HH_TAB_FAVORITES = 3;
{$EXTERNALSYM HH_TAB_FAVORITES}
HH_TAB_HISTORY = 4;
{$EXTERNALSYM HH_TAB_HISTORY}
HH_TAB_AUTHOR = 5;
{$EXTERNALSYM HH_TAB_AUTHOR}
HH_TAB_CUSTOM_FIRST = 11;
{$EXTERNALSYM HH_TAB_CUSTOM_FIRST}
HH_TAB_CUSTOM_LAST = HH_MAX_TABS;
{$EXTERNALSYM HH_TAB_CUSTOM_LAST}
HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
{$EXTERNALSYM HH_MAX_TABS_CUSTOM}
{$ENDIF}
// HH_DISPLAY_SEARCH Command Related Structures and Constants
HH_FTS_DEFAULT_PROXIMITY = -1;
{$EXTERNALSYM HH_FTS_DEFAULT_PROXIMITY}
type
PHHFtsQuery = ^THHFtsQuery;
tagHH_FTS_QUERY = packed record
cbStruct: Integer;
// Sizeof structure in bytes.
fUniCodeStrings: BOOL;
// TRUE if all strings are unicode.
pszSearchQuery: LPCTSTR;
// String containing the search query.
iProximity: LongInt;
// Word proximity.
fStemmedSearch: BOOL;
// TRUE for StemmedSearch only.
fTitleOnly: BOOL;
// TRUE for Title search only.
fExecute: BOOL;
// TRUE to initiate the search.
pszWindow: LPCTSTR;
// Window to display in
end;
{$EXTERNALSYM tagHH_FTS_QUERY}
HH_FTS_QUERY = tagHH_FTS_QUERY;
{$EXTERNALSYM HH_FTS_QUERY}
THHFtsQuery = tagHH_FTS_QUERY;
PHHWinType = ^THHWinType;
tagHH_WINTYPE = packed record
cbStruct: Integer;
// IN: size of this structure including all Information Types
fUniCodeStrings: BOOL;
// IN/OUT: TRUE if all strings are in UNICODE
pszType: LPCTSTR;
// IN/OUT: Name of a type of window
fsValidMembers: DWORD;
// IN: Bit flag of valid members (HHWIN_PARAM_)
fsWinProperties: DWORD;
// IN/OUT: Properties/attributes of the window (HHWIN_)
pszCaption: LPCTSTR;
// IN/OUT: Window title
dwStyles: DWORD;
// IN/OUT: Window styles
dwExStyles: DWORD;
// IN/OUT: Extended Window styles
rcWindowPos: TRect;
// IN: Starting position, OUT: current position
nShowState: Integer;
// IN: show state (e.g., SW_SHOW)
hwndHelp: HWND;
// OUT: window handle
hwndCaller: HWND;
// OUT: who called this window
paInfoTypes: PHHInfoType;
// IN: Pointer to an array of Information Types
{ The following members are only valid if HHWIN_PROP_TRI_PANE is set }
hwndToolBar: HWND;
// OUT: toolbar window in tri-pane window
hwndNavigation: HWND;
// OUT: navigation window in tri-pane window
hwndHTML: HWND;
// OUT: window displaying HTML in tri-pane window
iNavWidth: Integer;
// IN/OUT: width of navigation window
rcHTML: TRect;
// OUT: HTML window coordinates
pszToc: LPCTSTR;
// IN: Location of the table of contents file
pszIndex: LPCTSTR;
// IN: Location of the index file
pszFile: LPCTSTR;
// IN: Default location of the html file
pszHome: LPCTSTR;
// IN/OUT: html file to display when Home button is clicked
fsToolBarFlags: DWORD;
// IN: flags controling the appearance of the toolbar
fNotExpanded: BOOL;
// IN: TRUE/FALSE to contract or expand, OUT: current state
curNavType: Integer;
// IN/OUT: UI to display in the navigational pane
tabpos: Integer;
// IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
idNotify: Integer;
// IN: ID to use for WM_NOTIFY messages
tabOrder: array[0..HH_MAX_TABS] of Byte;
// IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
cHistory: Integer;
// IN/OUT: number of history items to keep (default is 30)
pszJump1: LPCTSTR;
// Text for HHWIN_BUTTON_JUMP1
pszJump2: LPCTSTR;
// Text for HHWIN_BUTTON_JUMP2
pszUrlJump1: LPCTSTR;
// URL for HHWIN_BUTTON_JUMP1
pszUrlJump2: LPCTSTR;
// URL for HHWIN_BUTTON_JUMP2
rcMinSize: TRect;
// Minimum size for window (ignored in version 1)
cbInfoTypes: Integer;
// size of paInfoTypes;
{$IFDEF HTMLHELP12}
pszCustomTabs: LPCTSTR;
// multiple zero-terminated Strings
{$ENDIF}
end;
{$EXTERNALSYM tagHH_WINTYPE}
HH_WINTYPE = tagHH_WINTYPE;
{$EXTERNALSYM HH_WINTYPE}
PHH_WINTYPE = ^tagHH_WINTYPE;
{$EXTERNALSYM PHH_WINTYPE}
THHWinType = tagHH_WINTYPE;
const
HHACT_TAB_CONTENTS = 0;
{$EXTERNALSYM HHACT_TAB_CONTENTS}
HHACT_TAB_INDEX = 1;
{$EXTERNALSYM HHACT_TAB_INDEX}
HHACT_TAB_SEARCH = 2;
{$EXTERNALSYM HHACT_TAB_SEARCH}
HHACT_TAB_HISTORY = 3;
{$EXTERNALSYM HHACT_TAB_HISTORY}
HHACT_TAB_FAVORITES = 4;
{$EXTERNALSYM HHACT_TAB_FAVORITES}
HHACT_EXPAND = 5;
{$EXTERNALSYM HHACT_EXPAND}
HHACT_CONTRACT = 6;
{$EXTERNALSYM HHACT_CONTRACT}
HHACT_BACK = 7;
{$EXTERNALSYM HHACT_BACK}
HHACT_FORWARD = 8;
{$EXTERNALSYM HHACT_FORWARD}
HHACT_STOP = 9;
{$EXTERNALSYM HHACT_STOP}
HHACT_REFRESH = 10;
{$EXTERNALSYM HHACT_REFRESH}
HHACT_HOME = 11;
{$EXTERNALSYM HHACT_HOME}
HHACT_SYNC = 12;
{$EXTERNALSYM HHACT_SYNC}
HHACT_OPTIONS = 13;
{$EXTERNALSYM HHACT_OPTIONS}
HHACT_PRINT = 14;
{$EXTERNALSYM HHACT_PRINT}
HHACT_HIGHLIGHT = 15;
{$EXTERNALSYM HHACT_HIGHLIGHT}
HHACT_CUSTOMIZE = 16;
{$EXTERNALSYM HHACT_CUSTOMIZE}
HHACT_JUMP1 = 17;
{$EXTERNALSYM HHACT_JUMP1}
HHACT_JUMP2 = 18;
{$EXTERNALSYM HHACT_JUMP2}
HHACT_ZOOM = 19;
{$EXTERNALSYM HHACT_ZOOM}
HHACT_TOC_NEXT = 20;
{$EXTERNALSYM HHACT_TOC_NEXT}
HHACT_TOC_PREV = 21;
{$EXTERNALSYM HHACT_TOC_PREV}
HHACT_NOTES = 22;
{$EXTERNALSYM HHACT_NOTES}
HHACT_LAST_ENUM = 23;
{$EXTERNALSYM HHACT_LAST_ENUM}
type
PHHNTrack = ^THHNTrack;
tagHHNTRACK = packed record
hdr: NMHDR;
pszCurUrl: PCSTR;
// Multi-byte, null-terminated string
idAction: Integer;
// HHACT_ value
phhWinType: PHHWinType;
// Current window type structure
end;
{$EXTERNALSYM tagHHNTRACK}
HHNTRACK = tagHHNTRACK;
{$EXTERNALSYM HHNTRACK}
THHNTrack = tagHHNTRACK;
{$IFDEF HTMLHELP_DYNAMIC_LINK}
type
THtmlHelpA = function (hwndCaller: HWND;
pszFile: PAnsiChar;
uCommand: UINT;
dwData: DWORD): HWND;
stdcall;
THtmlHelpW = function (hwndCaller: HWND;
pszFile: PWideChar;
uCommand: UINT;
dwData: DWORD): HWND;
stdcall;
THtmlHelp = THtmlHelpA;
var
HtmlHelpA: THtmlHelpA = nil;
HtmlHelpW: THtmlHelpW = nil;
HtmlHelp: THtmlHelp = nil;
{$else
}
function HtmlHelpA(hwndCaller: HWND;
pszFile: PAnsiChar;
uCommand: UINT;
{$IFDEF HTMLHELP11}
dwData: DWORD): HWND;
stdcall;
{$ENDIF}
{$IFDEF HTMLHELP12}
dwData: DWORD_PTR): HWND;
stdcall;
{$ENDIF}
{$EXTERNALSYM HtmlHelpA}
function HtmlHelpW(hwndCaller: HWND;
pszFile: PWideChar;
uCommand: UINT;
{$IFDEF HTMLHELP11}
dwData: DWORD): HWND;
stdcall;
{$ENDIF}
{$IFDEF HTMLHELP12}
dwData: DWORD_PTR): HWND;
stdcall;
{$ENDIF}
{$EXTERNALSYM HtmlHelpW}
function HtmlHelp(hwndCaller: HWND;
pszFile: PChar;
uCommand: UINT;
{$IFDEF HTMLHELP11}
dwData: DWORD): HWND;
stdcall;
{$ENDIF}
{$IFDEF HTMLHELP12}
dwData: DWORD_PTR): HWND;
stdcall;
{$ENDIF}
{$EXTERNALSYM HtmlHelp}
{$ENDIF}
// Use the following for GetProcAddress to load from hhctrl.ocx
const
ATOM_HTMLHELP_API_ANSI = LPTSTR(DWORD(WORD(14)));
{$EXTERNALSYM ATOM_HTMLHELP_API_ANSI}
ATOM_HTMLHELP_API_UNICODE = LPTSTR(DWORD(WORD(15)));
{$EXTERNALSYM ATOM_HTMLHELP_API_UNICODE}
{$IFDEF HTMLHELP12}
// Global Control Properties
const
HH_GPROPID_SINGLETHREAD = 1;
// VARIANT_BOOL: True for single thread
{$EXTERNALSYM HH_GPROPID_SINGLETHREAD}
HH_GPROPID_TOOLBAR_MARGIN = 2;
// long: Provides a left/right margin around the toolbar.
{$EXTERNALSYM HH_GPROPID_TOOLBAR_MARGIN}
HH_GPROPID_UI_LANGUAGE = 3;
// long: LangId of the UI.
{$EXTERNALSYM HH_GPROPID_UI_LANGUAGE}
HH_GPROPID_CURRENT_SUBSET = 4;
// BSTR: Current subset.
{$EXTERNALSYM HH_GPROPID_CURRENT_SUBSET}
HH_GPROPID_CONTENT_LANGUAGE = 5;
// long: LandId for desired content.
{$EXTERNALSYM HH_GPROPID_CONTENT_LANGUAGE}
type
HH_GPROPID = HH_GPROPID_SINGLETHREAD..HH_GPROPID_CONTENT_LANGUAGE;
{$EXTERNALSYM HH_GPROPID}
THHGPropID = HH_GPROPID;
// Global Property structure
PHHGlobalProperty = ^THHGlobalProperty;
tagHH_GLOBAL_PROPERTY = record
id: THHGPropID;
Dummy: Integer;
// JEDI: Added to enforce 8-byte packing
var_: OleVariant;
end;
HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
{$ENDIF}
{$IFDEF HTMLHELP_DYNAMIC_LINK}
function HtmlHelpLoaded: Boolean;
{$IFDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
function LoadHtmlHelp: Boolean;
function UnLoadHtmlHelp: Boolean;
{$ENDIF}
{$ENDIF}
implementation
{$IFDEF HTMLHELP_DYNAMIC_LINK}
uses
Registry, SysUtils;
var
HtmlHelpLib: THandle = 0;
function GetOCXPath(var Path: string): Boolean;
const
HHPathRegKey = 'CLSID/{adb880a6-d8ff-11cf-9377-00aa003b7a11}/InprocServer32';
begin
with TRegistry.Create do
try
RootKey := HKEY_CLASSES_ROOT;
if OpenKeyReadOnly(HHPathRegKey) then
Path := ReadString('');
Result := (Path <> '') and FileExists(Path);
finally
Free;
end;
end;

function HtmlHelpLoaded: Boolean;
begin
Result := HtmlHelpLib <> 0;
end;

function UnLoadHtmlHelp: Boolean;
begin
Result := True;
if HtmlHelpLoaded then
begin
if Assigned(HtmlHelp) then
HtmlHelp(0, nil, HH_CLOSE_ALL, 0);
Result := FreeLibrary(HtmlHelpLib);
HtmlHelpLib := 0;
@HtmlHelpA := nil;
@HtmlHelpW := nil;
@HtmlHelp := nil;
end;
end;

function LoadHtmlHelp: Boolean;
const
ProcNameA = 'HtmlHelpA';
ProcNameW = 'HtmlHelpW';
ProcName = ProcNameA;
var
HHOCXPath: string;
begin
Result := HtmlHelpLoaded;
if (not Result) and GetOCXPath(HHOCXPath) then
begin
HtmlHelpLib := LoadLibrary(PChar(HHOCXPath));
if HtmlHelpLoaded then
begin
@HtmlHelpA := GetProcAddress(HtmlHelpLib, ProcNameA);
@HtmlHelpW := GetProcAddress(HtmlHelpLib, ProcNameW);
@HtmlHelp := GetProcAddress(HtmlHelpLib, ProcName);
Result := Assigned(HtmlHelpA) and Assigned(HtmlHelpW);
if not Result then
UnLoadHtmlHelp;
end;
end;
end;
{$else
}
const
hhctrl = 'hhctrl.ocx';
function HtmlHelpA;
external hhctrl Name 'HtmlHelpA';
{$EXTERNALSYM HtmlHelpA}
function HtmlHelpW;
external hhctrl Name 'HtmlHelpW';
{$EXTERNALSYM HtmlHelpW}
function HtmlHelp;
external hhctrl Name 'HtmlHelpA';
{$EXTERNALSYM HtmlHelp}
{$ENDIF}
{$IFDEF HTMLHELP_DYNAMIC_LINK}
initialization
{$IFNDEF HTMLHELP_DYNAMIC_LINK_EXPLICIT}
LoadHtmlHelp;
{$ENDIF}
finalization
UnLoadHtmlHelp;
{$ENDIF}
end.
========================
2然后加入工程
3在相应的试用他的窗体中uses
4编译chm
5使用时
在相应的帮助按钮下加入
helpchm('相对路径/help1.htm');//help1.htm 为 对应页的在编译是的路径与文件名
就可以了
注意 需要ie4以上版本支持
 
shellexcute("winhelp c:/../xxx.chm")
 
我是意思是如何同VCL
的HelpContext
联系起来!
 
我找了一些资料:
通用单元
===================================
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.

调用单元(窗体)
===================================
unit TestHelp;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ToolWin, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
SpeedButton1: TSpeedButton;
MainMenu1: TMainMenu;
ggg1: TMenuItem;
jjk1: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
procedure FormCreate(Sender: TObject);
function AppHtmlHelp(Command: Word;
Data: Longint;
var CallHelp: Boolean): Boolean;

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
uses HTMLHELPCOMMON;
{$R *.DFM}
function TForm1.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(handle, pchar(Hfile), $0001, nil);
HELP_QUIT:
ret := HtmlHelp(0, '', $0012, nil);
HELP_CONTEXT:
ret := HtmlHelp(handle, pchar(Hfile), $000f, DWORD_PTR(data));
end;
result:=ret<>0;
CallHelp := False;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
htmlhelpfilename:string;
begin

htmlhelpfilename:=ExtractFilePath(Application.ExeName)+'ngmfhelp.chm';
Application.HelpFile := htmlhelpfilename;
//tmpOnHelp := Application.OnHelp;
Application.OnHelp := AppHtmlHelp;

end;

end.

但问题是:
在普通的工程中能够正常运行!
但如果是在DLL中使用:
假设上面的调用单元是主程序,
在主程序调用的 DLL中也能调出帮助文件(HelpContext,要把主程序的Applicatin传给 DLL),
可主程序在退出时会出现一堆错误,
如何解决?

 
多人接受答案了。
 
后退
顶部