Win32 API 日本語リファレンス
ホームData.HtmlHelp › HH_WINTYPE

HH_WINTYPE

構造体
サイズx64: 280 バイト / x86: 196 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
cbStructINT4+0+0構造体のサイズを指定します。この値は、構造体を HtmlHelp() に渡す前に必ず設定しておく必要があります。
fUniCodeStringsBOOL4+4+4この構造体で使用される文字列が UNICODE かどうかを指定します。
pszTypeCHAR*8/4+8+8ウィンドウ タイプの名前を指定する NULL 終端の文字列です。
fsValidMembersDWORD4+16+12構造体内のどのメンバーが有効であるかを指定します。
fsWinPropertiesDWORD4+20+16標準の HTML ヘルプ ビューアーであるかどうか、検索タブを含むかどうかなど、ウィンドウのプロパティを指定します。
pszCaptionCHAR*8/4+24+20ウィンドウのタイトル バーに表示するキャプションを指定する NULL 終端の文字列です。
dwStylesDWORD4+32+24ウィンドウの作成に使用するスタイルを指定します。これらのスタイルは、fsValidMembers および fsWinProperties パラメーターの値に応じて、無視されるか、拡張スタイルと組み合わされるか、単独で使用されます。
dwExStylesDWORD4+36+28ウィンドウの作成に使用する拡張スタイルを指定します。これらのスタイルは、fsValidMembers および fsWinProperties パラメーターの値に応じて、無視されるか、既定のスタイルと組み合わされるか、単独で使用されます。
rcWindowPosRECT16+40+32

ウィンドウの座標をピクセル単位で指定します。値は次の順序で読み取られます。

rcWindowPos = {left, top, right, bottom};

nShowStateINT4+56+48ウィンドウの初期表示状態を指定します。有効な値は、Win32 API の ShowWindow 関数と同じです。
hwndHelpHWND8/4+64+52ウィンドウが作成済みである場合に、そのウィンドウのハンドルを指定します。
hwndCallerHWND8/4+72+56HTML ヘルプの通知メッセージを受け取るウィンドウを指定します。通知メッセージは、Windows の WM_NOTIFY メッセージを介して送信されます。
paInfoTypesDWORD*8/4+80+60情報タイプ (Information Types) の配列へのポインターです。
hwndToolBarHWND8/4+88+64ツール バーのハンドルを指定します。
hwndNavigationHWND8/4+96+68ナビゲーション ペインのハンドルを指定します。
hwndHTMLHWND8/4+104+72Shdocvw.dll をホストするトピック ペインのハンドルを指定します。
iNavWidthINT4+112+76ヘルプ ビューアーが展開されているときのナビゲーション ペインの幅を指定します。
rcHTMLRECT16+116+80トピック ペインの座標を指定します。
pszTocCHAR*8/4+136+96ナビゲーション ペインに表示する目次 (.hhc) ファイルを指定します。
pszIndexCHAR*8/4+144+100ナビゲーション ペインに表示するインデックス (.hhk) ファイルを指定します。
pszFileCHAR*8/4+152+104トピック ペインに表示する既定の HTML ファイルを指定します。
pszHomeCHAR*8/4+160+108

[ホーム] ボタンがクリックされたときにトピック ペインに表示するファイルまたは URL を指定します。

ツール バーに含めるボタンを指定します。

fsToolBarFlagsDWORD4+168+1123 ペイン構成のヘルプ ビューアーのツール バー ペインに含めるボタンを指定します。
fNotExpandedBOOL4+172+116ヘルプ ビューアーをナビゲーション ペインが閉じた状態で開くことを指定します。
curNavTypeINT4+176+120ナビゲーション ペインに表示する既定のタブを指定します。
tabposINT4+180+124HTML ヘルプ ビューアーのナビゲーション ペインにおけるタブの配置位置を指定します。
idNotifyINT4+184+128HTML ヘルプの通知メッセージを有効にするための 0 以外の ID を指定します。この ID は、Windows の WM_NOTIFY メッセージの wParam 値として渡されます。
tabOrderBYTE20+188+132タブの順序: 目次、インデックス、検索、履歴、お気に入り、予約済み 1-5、カスタム タブ
cHistoryINT4+208+152保持する履歴項目の数です。(既定値: 30)
pszJump1CHAR*8/4+216+156Jump1 ボタンの下に表示するテキストを指定します。
pszJump2CHAR*8/4+224+160Jump2 ボタンの下に表示するテキストを指定します。
pszUrlJump1CHAR*8/4+232+164Jump1 ボタンがクリックされたときにジャンプする URL を指定します。
pszUrlJump2CHAR*8/4+240+168Jump2 ボタンがクリックされたときにジャンプする URL を指定します。
rcMinSizeRECT16+248+172ウィンドウの最小サイズです (バージョン 1 では無視されます)。
cbInfoTypesINT4+264+188paInfoTypes のサイズです。
pszCustomTabsCHAR*8/4+272+192タブのラベルとして使用される、0 終端の文字列を連続して並べたものです。

公式ドキュメント

この構造体は、ウィンドウ タイプの属性を指定または変更するために使用します。

解説(Remarks)

ウィンドウ タイプは、作成者がプロジェクト (.hhp) ファイル内で定義するか、HTML ヘルプ API を使用してプログラムから定義できます。

HH_SET_WIN_TYPE コマンドを使用して HH_WINTYPE 構造体を HtmlHelp() に渡すと、HTML ヘルプ API は構造体の内容の専用のコピーを作成します。そのため、HH_WINTYPE 構造体やその中の文字配列が使用しているメモリの解放は、ヘルプ開発者の責任となります。ヘルプ開発者は、HH_SET_WIN_TYPE の呼び出し後にメモリを解放できます。

使用元

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// RECT  (x64 16 / x86 16 バイト)
typedef struct RECT {
    INT left;
    INT top;
    INT right;
    INT bottom;
} RECT;

// HH_WINTYPE  (x64 280 / x86 196 バイト)
typedef struct HH_WINTYPE {
    INT cbStruct;
    BOOL fUniCodeStrings;
    CHAR* pszType;
    DWORD fsValidMembers;
    DWORD fsWinProperties;
    CHAR* pszCaption;
    DWORD dwStyles;
    DWORD dwExStyles;
    RECT rcWindowPos;
    INT nShowState;
    HWND hwndHelp;
    HWND hwndCaller;
    DWORD* paInfoTypes;
    HWND hwndToolBar;
    HWND hwndNavigation;
    HWND hwndHTML;
    INT iNavWidth;
    RECT rcHTML;
    CHAR* pszToc;
    CHAR* pszIndex;
    CHAR* pszFile;
    CHAR* pszHome;
    DWORD fsToolBarFlags;
    BOOL fNotExpanded;
    INT curNavType;
    INT tabpos;
    INT idNotify;
    BYTE tabOrder[20];
    INT cHistory;
    CHAR* pszJump1;
    CHAR* pszJump2;
    CHAR* pszUrlJump1;
    CHAR* pszUrlJump2;
    RECT rcMinSize;
    INT cbInfoTypes;
    CHAR* pszCustomTabs;
} HH_WINTYPE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HH_WINTYPE
{
    public int cbStruct;
    [MarshalAs(UnmanagedType.Bool)] public bool fUniCodeStrings;
    public IntPtr pszType;
    public uint fsValidMembers;
    public uint fsWinProperties;
    public IntPtr pszCaption;
    public uint dwStyles;
    public uint dwExStyles;
    public RECT rcWindowPos;
    public int nShowState;
    public IntPtr hwndHelp;
    public IntPtr hwndCaller;
    public IntPtr paInfoTypes;
    public IntPtr hwndToolBar;
    public IntPtr hwndNavigation;
    public IntPtr hwndHTML;
    public int iNavWidth;
    public RECT rcHTML;
    public IntPtr pszToc;
    public IntPtr pszIndex;
    public IntPtr pszFile;
    public IntPtr pszHome;
    public uint fsToolBarFlags;
    [MarshalAs(UnmanagedType.Bool)] public bool fNotExpanded;
    public int curNavType;
    public int tabpos;
    public int idNotify;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public byte[] tabOrder;
    public int cHistory;
    public IntPtr pszJump1;
    public IntPtr pszJump2;
    public IntPtr pszUrlJump1;
    public IntPtr pszUrlJump2;
    public RECT rcMinSize;
    public int cbInfoTypes;
    public IntPtr pszCustomTabs;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RECT
    Public left As Integer
    Public top As Integer
    Public right As Integer
    Public bottom As Integer
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HH_WINTYPE
    Public cbStruct As Integer
    <MarshalAs(UnmanagedType.Bool)> Public fUniCodeStrings As Boolean
    Public pszType As IntPtr
    Public fsValidMembers As UInteger
    Public fsWinProperties As UInteger
    Public pszCaption As IntPtr
    Public dwStyles As UInteger
    Public dwExStyles As UInteger
    Public rcWindowPos As RECT
    Public nShowState As Integer
    Public hwndHelp As IntPtr
    Public hwndCaller As IntPtr
    Public paInfoTypes As IntPtr
    Public hwndToolBar As IntPtr
    Public hwndNavigation As IntPtr
    Public hwndHTML As IntPtr
    Public iNavWidth As Integer
    Public rcHTML As RECT
    Public pszToc As IntPtr
    Public pszIndex As IntPtr
    Public pszFile As IntPtr
    Public pszHome As IntPtr
    Public fsToolBarFlags As UInteger
    <MarshalAs(UnmanagedType.Bool)> Public fNotExpanded As Boolean
    Public curNavType As Integer
    Public tabpos As Integer
    Public idNotify As Integer
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> Public tabOrder() As Byte
    Public cHistory As Integer
    Public pszJump1 As IntPtr
    Public pszJump2 As IntPtr
    Public pszUrlJump1 As IntPtr
    Public pszUrlJump2 As IntPtr
    Public rcMinSize As RECT
    Public cbInfoTypes As Integer
    Public pszCustomTabs As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class RECT(ctypes.Structure):
    _fields_ = [
        ("left", ctypes.c_int),
        ("top", ctypes.c_int),
        ("right", ctypes.c_int),
        ("bottom", ctypes.c_int),
    ]

class HH_WINTYPE(ctypes.Structure):
    _fields_ = [
        ("cbStruct", ctypes.c_int),
        ("fUniCodeStrings", wintypes.BOOL),
        ("pszType", ctypes.c_void_p),
        ("fsValidMembers", wintypes.DWORD),
        ("fsWinProperties", wintypes.DWORD),
        ("pszCaption", ctypes.c_void_p),
        ("dwStyles", wintypes.DWORD),
        ("dwExStyles", wintypes.DWORD),
        ("rcWindowPos", RECT),
        ("nShowState", ctypes.c_int),
        ("hwndHelp", ctypes.c_void_p),
        ("hwndCaller", ctypes.c_void_p),
        ("paInfoTypes", ctypes.c_void_p),
        ("hwndToolBar", ctypes.c_void_p),
        ("hwndNavigation", ctypes.c_void_p),
        ("hwndHTML", ctypes.c_void_p),
        ("iNavWidth", ctypes.c_int),
        ("rcHTML", RECT),
        ("pszToc", ctypes.c_void_p),
        ("pszIndex", ctypes.c_void_p),
        ("pszFile", ctypes.c_void_p),
        ("pszHome", ctypes.c_void_p),
        ("fsToolBarFlags", wintypes.DWORD),
        ("fNotExpanded", wintypes.BOOL),
        ("curNavType", ctypes.c_int),
        ("tabpos", ctypes.c_int),
        ("idNotify", ctypes.c_int),
        ("tabOrder", ctypes.c_ubyte * 20),
        ("cHistory", ctypes.c_int),
        ("pszJump1", ctypes.c_void_p),
        ("pszJump2", ctypes.c_void_p),
        ("pszUrlJump1", ctypes.c_void_p),
        ("pszUrlJump2", ctypes.c_void_p),
        ("rcMinSize", RECT),
        ("cbInfoTypes", ctypes.c_int),
        ("pszCustomTabs", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct RECT {
    pub left: i32,
    pub top: i32,
    pub right: i32,
    pub bottom: i32,
}

#[repr(C)]
pub struct HH_WINTYPE {
    pub cbStruct: i32,
    pub fUniCodeStrings: i32,
    pub pszType: *mut core::ffi::c_void,
    pub fsValidMembers: u32,
    pub fsWinProperties: u32,
    pub pszCaption: *mut core::ffi::c_void,
    pub dwStyles: u32,
    pub dwExStyles: u32,
    pub rcWindowPos: RECT,
    pub nShowState: i32,
    pub hwndHelp: *mut core::ffi::c_void,
    pub hwndCaller: *mut core::ffi::c_void,
    pub paInfoTypes: *mut core::ffi::c_void,
    pub hwndToolBar: *mut core::ffi::c_void,
    pub hwndNavigation: *mut core::ffi::c_void,
    pub hwndHTML: *mut core::ffi::c_void,
    pub iNavWidth: i32,
    pub rcHTML: RECT,
    pub pszToc: *mut core::ffi::c_void,
    pub pszIndex: *mut core::ffi::c_void,
    pub pszFile: *mut core::ffi::c_void,
    pub pszHome: *mut core::ffi::c_void,
    pub fsToolBarFlags: u32,
    pub fNotExpanded: i32,
    pub curNavType: i32,
    pub tabpos: i32,
    pub idNotify: i32,
    pub tabOrder: [u8; 20],
    pub cHistory: i32,
    pub pszJump1: *mut core::ffi::c_void,
    pub pszJump2: *mut core::ffi::c_void,
    pub pszUrlJump1: *mut core::ffi::c_void,
    pub pszUrlJump2: *mut core::ffi::c_void,
    pub rcMinSize: RECT,
    pub cbInfoTypes: i32,
    pub pszCustomTabs: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type RECT struct {
	left int32
	top int32
	right int32
	bottom int32
}

type HH_WINTYPE struct {
	cbStruct int32
	fUniCodeStrings int32
	pszType uintptr
	fsValidMembers uint32
	fsWinProperties uint32
	pszCaption uintptr
	dwStyles uint32
	dwExStyles uint32
	rcWindowPos RECT
	nShowState int32
	hwndHelp uintptr
	hwndCaller uintptr
	paInfoTypes uintptr
	hwndToolBar uintptr
	hwndNavigation uintptr
	hwndHTML uintptr
	iNavWidth int32
	rcHTML RECT
	pszToc uintptr
	pszIndex uintptr
	pszFile uintptr
	pszHome uintptr
	fsToolBarFlags uint32
	fNotExpanded int32
	curNavType int32
	tabpos int32
	idNotify int32
	tabOrder [20]byte
	cHistory int32
	pszJump1 uintptr
	pszJump2 uintptr
	pszUrlJump1 uintptr
	pszUrlJump2 uintptr
	rcMinSize RECT
	cbInfoTypes int32
	pszCustomTabs uintptr
}
type
  RECT = record
    left: Integer;
    top: Integer;
    right: Integer;
    bottom: Integer;
  end;

  HH_WINTYPE = record
    cbStruct: Integer;
    fUniCodeStrings: BOOL;
    pszType: Pointer;
    fsValidMembers: DWORD;
    fsWinProperties: DWORD;
    pszCaption: Pointer;
    dwStyles: DWORD;
    dwExStyles: DWORD;
    rcWindowPos: RECT;
    nShowState: Integer;
    hwndHelp: Pointer;
    hwndCaller: Pointer;
    paInfoTypes: Pointer;
    hwndToolBar: Pointer;
    hwndNavigation: Pointer;
    hwndHTML: Pointer;
    iNavWidth: Integer;
    rcHTML: RECT;
    pszToc: Pointer;
    pszIndex: Pointer;
    pszFile: Pointer;
    pszHome: Pointer;
    fsToolBarFlags: DWORD;
    fNotExpanded: BOOL;
    curNavType: Integer;
    tabpos: Integer;
    idNotify: Integer;
    tabOrder: array[0..19] of Byte;
    cHistory: Integer;
    pszJump1: Pointer;
    pszJump2: Pointer;
    pszUrlJump1: Pointer;
    pszUrlJump2: Pointer;
    rcMinSize: RECT;
    cbInfoTypes: Integer;
    pszCustomTabs: Pointer;
  end;
const RECT = extern struct {
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
};

const HH_WINTYPE = extern struct {
    cbStruct: i32,
    fUniCodeStrings: i32,
    pszType: ?*anyopaque,
    fsValidMembers: u32,
    fsWinProperties: u32,
    pszCaption: ?*anyopaque,
    dwStyles: u32,
    dwExStyles: u32,
    rcWindowPos: RECT,
    nShowState: i32,
    hwndHelp: ?*anyopaque,
    hwndCaller: ?*anyopaque,
    paInfoTypes: ?*anyopaque,
    hwndToolBar: ?*anyopaque,
    hwndNavigation: ?*anyopaque,
    hwndHTML: ?*anyopaque,
    iNavWidth: i32,
    rcHTML: RECT,
    pszToc: ?*anyopaque,
    pszIndex: ?*anyopaque,
    pszFile: ?*anyopaque,
    pszHome: ?*anyopaque,
    fsToolBarFlags: u32,
    fNotExpanded: i32,
    curNavType: i32,
    tabpos: i32,
    idNotify: i32,
    tabOrder: [20]u8,
    cHistory: i32,
    pszJump1: ?*anyopaque,
    pszJump2: ?*anyopaque,
    pszUrlJump1: ?*anyopaque,
    pszUrlJump2: ?*anyopaque,
    rcMinSize: RECT,
    cbInfoTypes: i32,
    pszCustomTabs: ?*anyopaque,
};
type
  RECT {.bycopy.} = object
    left: int32
    top: int32
    right: int32
    bottom: int32

  HH_WINTYPE {.bycopy.} = object
    cbStruct: int32
    fUniCodeStrings: int32
    pszType: pointer
    fsValidMembers: uint32
    fsWinProperties: uint32
    pszCaption: pointer
    dwStyles: uint32
    dwExStyles: uint32
    rcWindowPos: RECT
    nShowState: int32
    hwndHelp: pointer
    hwndCaller: pointer
    paInfoTypes: pointer
    hwndToolBar: pointer
    hwndNavigation: pointer
    hwndHTML: pointer
    iNavWidth: int32
    rcHTML: RECT
    pszToc: pointer
    pszIndex: pointer
    pszFile: pointer
    pszHome: pointer
    fsToolBarFlags: uint32
    fNotExpanded: int32
    curNavType: int32
    tabpos: int32
    idNotify: int32
    tabOrder: array[20, uint8]
    cHistory: int32
    pszJump1: pointer
    pszJump2: pointer
    pszUrlJump1: pointer
    pszUrlJump2: pointer
    rcMinSize: RECT
    cbInfoTypes: int32
    pszCustomTabs: pointer
struct RECT
{
    int left;
    int top;
    int right;
    int bottom;
}

struct HH_WINTYPE
{
    int cbStruct;
    int fUniCodeStrings;
    void* pszType;
    uint fsValidMembers;
    uint fsWinProperties;
    void* pszCaption;
    uint dwStyles;
    uint dwExStyles;
    RECT rcWindowPos;
    int nShowState;
    void* hwndHelp;
    void* hwndCaller;
    void* paInfoTypes;
    void* hwndToolBar;
    void* hwndNavigation;
    void* hwndHTML;
    int iNavWidth;
    RECT rcHTML;
    void* pszToc;
    void* pszIndex;
    void* pszFile;
    void* pszHome;
    uint fsToolBarFlags;
    int fNotExpanded;
    int curNavType;
    int tabpos;
    int idNotify;
    ubyte[20] tabOrder;
    int cHistory;
    void* pszJump1;
    void* pszJump2;
    void* pszUrlJump1;
    void* pszUrlJump2;
    RECT rcMinSize;
    int cbInfoTypes;
    void* pszCustomTabs;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; HH_WINTYPE サイズ: 196 バイト(x86)
dim st, 49    ; 4byte整数×49(構造体サイズ 196 / 4 切り上げ)
; cbStruct : INT (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; fUniCodeStrings : BOOL (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; pszType : CHAR* (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; fsValidMembers : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; fsWinProperties : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszCaption : CHAR* (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwStyles : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwExStyles : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; rcWindowPos : RECT (+32, 16byte)  varptr(st)+32 を基点に操作(16byte:入れ子/配列)
; nShowState : INT (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; hwndHelp : HWND (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; hwndCaller : HWND (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; paInfoTypes : DWORD* (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; hwndToolBar : HWND (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; hwndNavigation : HWND (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; hwndHTML : HWND (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; iNavWidth : INT (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; rcHTML : RECT (+80, 16byte)  varptr(st)+80 を基点に操作(16byte:入れ子/配列)
; pszToc : CHAR* (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; pszIndex : CHAR* (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; pszFile : CHAR* (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; pszHome : CHAR* (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; fsToolBarFlags : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; fNotExpanded : BOOL (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; curNavType : INT (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; tabpos : INT (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; idNotify : INT (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; tabOrder : BYTE (+132, 20byte)  varptr(st)+132 を基点に操作(20byte:入れ子/配列)
; cHistory : INT (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; pszJump1 : CHAR* (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; pszJump2 : CHAR* (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; pszUrlJump1 : CHAR* (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; pszUrlJump2 : CHAR* (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; rcMinSize : RECT (+172, 16byte)  varptr(st)+172 を基点に操作(16byte:入れ子/配列)
; cbInfoTypes : INT (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; pszCustomTabs : CHAR* (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; HH_WINTYPE サイズ: 280 バイト(x64)
dim st, 70    ; 4byte整数×70(構造体サイズ 280 / 4 切り上げ)
; cbStruct : INT (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; fUniCodeStrings : BOOL (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; pszType : CHAR* (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; fsValidMembers : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; fsWinProperties : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pszCaption : CHAR* (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; dwStyles : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwExStyles : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; rcWindowPos : RECT (+40, 16byte)  varptr(st)+40 を基点に操作(16byte:入れ子/配列)
; nShowState : INT (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; hwndHelp : HWND (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; hwndCaller : HWND (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; paInfoTypes : DWORD* (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; hwndToolBar : HWND (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; hwndNavigation : HWND (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; hwndHTML : HWND (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; iNavWidth : INT (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; rcHTML : RECT (+116, 16byte)  varptr(st)+116 を基点に操作(16byte:入れ子/配列)
; pszToc : CHAR* (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; pszIndex : CHAR* (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; pszFile : CHAR* (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; pszHome : CHAR* (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; fsToolBarFlags : DWORD (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; fNotExpanded : BOOL (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; curNavType : INT (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; tabpos : INT (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; idNotify : INT (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; tabOrder : BYTE (+188, 20byte)  varptr(st)+188 を基点に操作(20byte:入れ子/配列)
; cHistory : INT (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; pszJump1 : CHAR* (+216, 8byte)  qpoke st,216,値 / qpeek(st,216)  ※IronHSPのみ。3.7/3.8は lpoke st,216,下位 : lpoke st,220,上位
; pszJump2 : CHAR* (+224, 8byte)  qpoke st,224,値 / qpeek(st,224)  ※IronHSPのみ。3.7/3.8は lpoke st,224,下位 : lpoke st,228,上位
; pszUrlJump1 : CHAR* (+232, 8byte)  qpoke st,232,値 / qpeek(st,232)  ※IronHSPのみ。3.7/3.8は lpoke st,232,下位 : lpoke st,236,上位
; pszUrlJump2 : CHAR* (+240, 8byte)  qpoke st,240,値 / qpeek(st,240)  ※IronHSPのみ。3.7/3.8は lpoke st,240,下位 : lpoke st,244,上位
; rcMinSize : RECT (+248, 16byte)  varptr(st)+248 を基点に操作(16byte:入れ子/配列)
; cbInfoTypes : INT (+264, 4byte)  st.66 = 値  /  値 = st.66   (lpoke/lpeek も可)
; pszCustomTabs : CHAR* (+272, 8byte)  qpoke st,272,値 / qpeek(st,272)  ※IronHSPのみ。3.7/3.8は lpoke st,272,下位 : lpoke st,276,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global RECT
    #field int left
    #field int top
    #field int right
    #field int bottom
#endstruct

#defstruct global HH_WINTYPE
    #field int cbStruct
    #field bool fUniCodeStrings
    #field intptr pszType
    #field int fsValidMembers
    #field int fsWinProperties
    #field intptr pszCaption
    #field int dwStyles
    #field int dwExStyles
    #field RECT rcWindowPos
    #field int nShowState
    #field intptr hwndHelp
    #field intptr hwndCaller
    #field intptr paInfoTypes
    #field intptr hwndToolBar
    #field intptr hwndNavigation
    #field intptr hwndHTML
    #field int iNavWidth
    #field RECT rcHTML
    #field intptr pszToc
    #field intptr pszIndex
    #field intptr pszFile
    #field intptr pszHome
    #field int fsToolBarFlags
    #field bool fNotExpanded
    #field int curNavType
    #field int tabpos
    #field int idNotify
    #field byte tabOrder 20
    #field int cHistory
    #field intptr pszJump1
    #field intptr pszJump2
    #field intptr pszUrlJump1
    #field intptr pszUrlJump2
    #field RECT rcMinSize
    #field int cbInfoTypes
    #field intptr pszCustomTabs
#endstruct

stdim st, HH_WINTYPE        ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct