⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jwahtmlhelp.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 3 页
字号:
// 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 + -