📄 jwahtmlhelp.pas
字号:
// 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: LONG; // 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: RECT; // 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: RECT; // 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: RECT; // 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;
function HtmlHelpA(hwndCaller: HWND; pszFile: LPCSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
{$EXTERNALSYM HtmlHelpA}
function HtmlHelpW(hwndCaller: HWND; pszFile: LPCWSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
{$EXTERNALSYM HtmlHelpW}
{$IFDEF UNICODE}
function HtmlHelp(hwndCaller: HWND; pszFile: LPCSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
{$ELSE}
function HtmlHelp(hwndCaller: HWND; pszFile: LPCWSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
{$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; // MVB: Added to enforce 8-byte packing
var_: OleVariant;
end;
HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
{$ENDIF}
implementation
{$IFDEF DYNAMIC_LINK}
uses
JwaWinBase, JwaWinError, JwaWinNT, JwaWinReg;
function GetOCXPath: string;
const
HHPathRegKey = 'CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
var
HHKey: HKEY;
R, PathSize, ValueType: DWORD;
Path: string;
begin
R := ERROR_PATH_NOT_FOUND;
if RegOpenKeyExA(HKEY_CLASSES_ROOT, PChar(HHPathRegKey), 0, KEY_QUERY_VALUE, HHKey) = ERROR_SUCCESS then
begin
ValueType := 0;
PathSize := 0;
if RegQueryValueExA(HHKey, PChar(''), nil, @ValueType, nil, @PathSize) = ERROR_SUCCESS then
begin
if ValueType = REG_SZ then
begin
SetLength(Path, PathSize);
R := RegQueryValueExA(HHKey, PChar(''), nil, @ValueType, PByte(Path), @PathSize);
Result := PChar(Path);
end;
end;
RegCloseKey(HHKey);
end;
if R <> ERROR_SUCCESS then Result := 'hhctrl.ocx';
end;
var
_HtmlHelpA: Pointer;
_HtmlHelpW: Pointer;
_HtmlHelp: Pointer;
function HtmlHelpA;
begin
GetProcedureAddress(_HtmlHelpA, GetOCXPath, 'HtmlHelpA');
asm
mov esp, ebp
pop ebp
jmp [_HtmlHelpA]
end;
end;
function HtmlHelpW;
begin
GetProcedureAddress(_HtmlHelpA, GetOCXPath, 'HtmlHelpW');
asm
mov esp, ebp
pop ebp
jmp [_HtmlHelpW]
end;
end;
function HtmlHelp;
begin
GetProcedureAddress(_HtmlHelp, GetOCXPath, {$IFDEF UNICODE}'HtmlHelpW'{$ELSE}'HtmlHelpA'{$ENDIF});
asm
mov esp, ebp
pop ebp
jmp [_HtmlHelp]
end;
end;
{$ELSE}
const
hhctrl = 'hhctrl.ocx';
function HtmlHelpA; external hhctrl name 'HtmlHelpA';
function HtmlHelpW; external hhctrl name 'HtmlHelpW';
function HtmlHelp; external hhctrl name {$IFDEF UNICODE}'HtmlHelpW'{$ELSE}'HtmlHelpA'{$ENDIF};
{$ENDIF DYNAMIC_LINK}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -