?? htmlhlp.pas
字號:
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.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -