Win32 API 日本語リファレンス
ホームUI.Controls.Dialogs › CHOOSEFONTW

CHOOSEFONTW

構造体
サイズx64: 92 バイト / x86: 60 バイトパッキング1

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

フィールド

フィールドサイズx64x86説明
lStructSizeDWORD4+0+0構造体の長さ (バイト単位)。
hwndOwnerHWND8/4+4+4ダイアログ ボックスを所有するウィンドウへのハンドル。このメンバーには任意の有効なウィンドウ ハンドルを指定できます。ダイアログ ボックスに所有者がない場合は NULL を指定できます。
hDCHDC8/4+12+8

このメンバーは ChooseFont 関数では無視されます。

Windows Vista および Windows XP/2000: ダイアログ ボックスにフォントを一覧表示するプリンターの、デバイス コンテキストまたは情報コンテキストへのハンドルです。このメンバーは、Flags メンバーに CF_PRINTERFONTS フラグまたは CF_BOTH フラグが指定されている場合にのみ使用されます。それ以外の場合、このメンバーは無視されます。

lpLogFontLOGFONTW*8/4+20+12LOGFONT 構造体へのポインター。Flags メンバーに CF_INITTOLOGFONTSTRUCT フラグを設定し、他のメンバーを初期化しておくと、ChooseFont 関数は LOGFONT のメンバーに一致するフォントでダイアログ ボックスを初期化します。ユーザーが OK ボタンをクリックすると、ChooseFont はユーザーの選択に基づいて LOGFONT 構造体のメンバーを設定します。
iPointSizeINT4+28+16選択されたフォントのサイズ (1/10 ポイント単位)。ChooseFont 関数は、ユーザーがダイアログ ボックスを閉じた後にこの値を設定します。
FlagsCHOOSEFONT_FLAGS4+32+20

Font ダイアログ ボックスの初期化に使用できるビット フラグのセット。ダイアログ ボックスから制御が戻るときには、ユーザーの入力を示すようにこれらのフラグが設定されます。このメンバーには、次の値の 1 つ以上を指定できます。

意味
CF_APPLY
0x00000200L
ダイアログ ボックスに 適用 ボタンを表示します。適用 ボタンの WM_COMMAND メッセージを処理するフック プロシージャを用意してください。フック プロシージャは、ダイアログ ボックスに WM_CHOOSEFONT_GETLOGFONT メッセージを送信することで、現在選択されているフォントの情報を格納した構造体のアドレスを取得できます。
CF_ANSIONLY
0x00000400L
このフラグは旧式です。OEM または Symbol 文字セットを使用するスクリプトを除くすべてのスクリプトにフォントの選択を制限するには、CF_SCRIPTSONLY を使用します。元の CF_ANSIONLY の動作を得るには、CF_SELECTSCRIPT を使用し、lpLogFont が指す LOGFONT 構造体の lfCharSet メンバーに ANSI_CHARSET を指定します。
CF_BOTH
0x00000003
このフラグはフォントの列挙では無視されます。

Windows Vista および Windows XP/2000: 使用可能なプリンター フォントと画面フォントをダイアログ ボックスに一覧表示します。hDC メンバーは、プリンターに関連付けられたデバイス コンテキストまたは情報コンテキストへのハンドルです。このフラグは CF_SCREENFONTS フラグと CF_PRINTERFONTS フラグを組み合わせたものです。

CF_EFFECTS
0x00000100L
取り消し線、下線、文字色のオプションをユーザーが指定するためのコントロールを、ダイアログ ボックスに表示します。このフラグを設定した場合、rgbColors メンバーで初期の文字色を指定できます。また、lpLogFont が指す構造体の lfStrikeOut メンバーと lfUnderline メンバーを使用して、取り消し線と下線のチェック ボックスの初期設定を指定できます。ChooseFont は、これらのメンバーを使用してユーザーの選択を返すことができます。
CF_ENABLEHOOK
0x00000008L
この構造体の lpfnHook メンバーで指定されたフック プロシージャを有効にします。
CF_ENABLETEMPLATE
0x00000010L
hInstance メンバーと lpTemplateName メンバーが、既定のテンプレートの代わりに使用するダイアログ ボックス テンプレートを指定することを示します。
CF_ENABLETEMPLATEHANDLE
0x00000020L
hInstance メンバーが、あらかじめ読み込まれたダイアログ ボックス テンプレートを含むデータ ブロックを識別することを示します。このフラグが指定されている場合、システムは lpTemplateName メンバーを無視します。
CF_FIXEDPITCHONLY
0x00004000L

ChooseFont は、固定ピッチ フォントのみを列挙し、選択を許可します。

CF_FORCEFONTEXIST
0x00010000L

ChooseFont は、ダイアログ ボックスに一覧表示されていないフォントまたはスタイルをユーザーが選択しようとした場合に、エラー状態を示します。

CF_INACTIVEFONTS
0x02000000L

ChooseFont は、コントロール パネルの [フォント] で非表示に設定されているフォントも追加で表示します。

Windows Vista および Windows XP/2000: このフラグは Windows 7 以降でのみサポートされます。

CF_INITTOLOGFONTSTRUCT
0x00000040L

ChooseFont は、lpLogFont メンバーが指す構造体を使用してダイアログ ボックスのコントロールを初期化します。

CF_LIMITSIZE
0x00002000L

ChooseFont は、nSizeMin メンバーと nSizeMax メンバーで指定された範囲内のフォント サイズのみを選択します。

CF_NOOEMFONTS
0x00000800L
CF_NOVECTORFONTS フラグと同じです。
CF_NOFACESEL
0x00080000L
LOGFONT 構造体を使用してダイアログ ボックスのコントロールを初期化する場合、このフラグを使用すると、フォント名のコンボ ボックスに初期選択が表示されないようにできます。これは、選択されているテキストに適用される単一のフォント名が存在しない場合に便利です。
CF_NOSCRIPTSEL
0x00800000L
スクリプト コンボ ボックスを無効にします。このフラグを設定すると、ChooseFont から制御が戻るときに、LOGFONT 構造体の lfCharSet メンバーが DEFAULT_CHARSET に設定されます。このフラグはダイアログ ボックスの初期化にのみ使用されます。
CF_NOSIMULATIONS
0x00001000L

ChooseFont は、フォント シミュレーションを表示せず、その選択も許可しません。

CF_NOSIZESEL
0x00200000L
構造体を使用してダイアログ ボックスのコントロールを初期化する場合、このフラグを使用すると、フォント サイズ コンボ ボックスに初期選択が表示されないようにできます。これは、選択されているテキストに適用される単一のフォント サイズが存在しない場合に便利です。
CF_NOSTYLESEL
0x00100000L
LOGFONT 構造体を使用してダイアログ ボックスのコントロールを初期化する場合、このフラグを使用すると、フォント スタイル コンボ ボックスに初期選択が表示されないようにできます。これは、選択されているテキストに適用される単一のフォント スタイルが存在しない場合に便利です。
CF_NOVECTORFONTS
0x00000800L

ChooseFont はベクター フォントの選択を許可しません。

CF_NOVERTFONTS
0x01000000L
Font ダイアログ ボックスに、横書きのフォントのみを一覧表示します。
CF_PRINTERFONTS
0x00000002
このフラグはフォントの列挙では無視されます。

Windows Vista および Windows XP/2000: hDC メンバーで識別されるデバイス コンテキストまたは情報コンテキストに関連付けられたプリンターがサポートするフォントのみを、ダイアログ ボックスに一覧表示します。また、Font ダイアログ ボックスの下部にフォントの種類を説明するラベルが表示されます。

CF_SCALABLEONLY
0x00020000L
ChooseFont がスケーラブル フォントの選択のみを許可することを指定します。スケーラブル フォントには、ベクター フォント、スケーラブルなプリンター フォント、TrueType フォント、およびその他の技術で拡大縮小されるフォントが含まれます。
CF_SCREENFONTS
0x00000001
このフラグはフォントの列挙では無視されます。

Windows Vista および Windows XP/2000: システムがサポートする画面フォントのみを、ダイアログ ボックスに一覧表示します。

CF_SCRIPTSONLY
0x00000400L

ChooseFont は、ANSI 文字セットに加えて、OEM 以外および Symbol のすべての文字セットのフォントを選択できるようにします。これは CF_ANSIONLY 値に代わるものです。

CF_SELECTSCRIPT
0x00400000L
入力時にこの値を指定すると、LOGFONT 構造体の lfCharSet メンバーで識別される文字セットのフォントのみが表示されます。ユーザーは スクリプト コンボ ボックスで指定された文字セットを変更できません。
CF_SHOWHELP
0x00000004L
ダイアログ ボックスに ヘルプ ボタンを表示します。hwndOwner メンバーには、ユーザーが ヘルプ ボタンをクリックしたときにダイアログ ボックスが送信する HELPMSGSTRING 登録メッセージを受け取るウィンドウを指定しなければなりません。
CF_TTONLY
0x00040000L

ChooseFont は、TrueType フォントのみを列挙し、選択を許可します。

CF_USESTYLE
0x00000080L
lpszStyle メンバーは、ChooseFontフォント スタイル コンボ ボックスの初期化に使用するスタイル データを格納したバッファーへのポインターです。ユーザーがダイアログ ボックスを閉じると、ChooseFont はユーザーの選択に対応するスタイル データをこのバッファーにコピーします。
メモ アプリケーションをグローバル化するには、lpLogFont が指す LOGFONT 構造体の lfWeight メンバーと lfItalic メンバーを使用してスタイルを指定してください。スタイル名は、システムのユーザー インターフェイス言語によって変わることがあります。
CF_WYSIWYG
0x00008000L
旧式です。ChooseFont はこのフラグを無視します。

Windows Vista および Windows XP/2000: ChooseFont は、プリンターとディスプレイの両方で使用可能なフォントのみを選択できるようにします。このフラグを指定する場合は、CF_SCREENSHOTSCF_PRINTERFONTS、または CF_BOTH フラグも指定する必要があります。

rgbColorsCOLORREF4+36+24CF_EFFECTS フラグが設定されている場合、rgbColors は初期の文字色を指定します。ChooseFont が正常に戻ると、このメンバーにはユーザーが選択した文字色の RGB 値が格納されます。COLORREF のカラー値を作成するには、RGB マクロを使用します。
lCustDataLPARAM8/4+40+28lpfnHook メンバーで識別されるフック プロシージャにシステムが渡す、アプリケーション定義のデータ。システムがフック プロシージャに WM_INITDIALOG メッセージを送信するとき、そのメッセージの lParam パラメーターは、ダイアログ ボックスの作成時に指定された CHOOSEFONT 構造体へのポインターです。フック プロシージャはこのポインターを使用して lCustData の値を取得できます。
lpfnHookLPCFHOOKPROC8/4+48+32ダイアログ ボックス宛てのメッセージを処理できる CFHookProc フック プロシージャへのポインター。このメンバーは、Flags メンバーに CF_ENABLEHOOK フラグが設定されていない限り無視されます。
lpTemplateNameLPWSTR8/4+56+36hInstance メンバーで識別されるモジュール内にある、ダイアログ ボックス テンプレート リソースの名前。このテンプレートは、標準のダイアログ ボックス テンプレートの代わりに使用されます。番号付きのダイアログ ボックス リソースの場合、lpTemplateName には MAKEINTRESOURCE マクロが返す値を指定できます。このメンバーは、Flags メンバーに CF_ENABLETEMPLATE フラグが設定されていない限り無視されます。
hInstanceHINSTANCE8/4+64+40Flags メンバーに CF_ENABLETEMPLATEHANDLE フラグが設定されている場合、hInstance はダイアログ ボックス テンプレートを格納したメモリ オブジェクトへのハンドルです。CF_ENABLETEMPLATE フラグが設定されている場合、hInstancelpTemplateName メンバーで指定された名前のダイアログ ボックス テンプレートを含むモジュールへのハンドルです。CF_ENABLETEMPLATEHANDLECF_ENABLETEMPLATE のどちらも設定されていない場合、このメンバーは無視されます。
lpszStyleLPWSTR8/4+72+44スタイル データ。CF_USESTYLE フラグが指定されている場合、ChooseFont はこのバッファー内のデータを使用して フォント スタイル コンボ ボックスを初期化します。ユーザーがダイアログ ボックスを閉じると、ChooseFontフォント スタイル コンボ ボックス内の文字列をこのバッファーにコピーします。
nFontTypeCHOOSEFONT_FONT_TYPE2+80+48

ChooseFont から制御が戻るときに選択されているフォントの種類。このメンバーには、次の値の 1 つ以上を指定できます。

意味
BOLD_FONTTYPE
0x0100
フォントの太さは太字です。この情報は LOGFONT 構造体の lfWeight メンバーにも重複して格納され、FW_BOLD に相当します。
ITALIC_FONTTYPE
0x0200
斜体のフォント属性が設定されています。この情報は LOGFONT 構造体の lfItalic メンバーにも重複して格納されます。
PRINTER_FONTTYPE
0x4000
フォントはプリンター フォントです。
REGULAR_FONTTYPE
0x0400
フォントの太さは標準です。この情報は LOGFONT 構造体の lfWeight メンバーにも重複して格納され、FW_REGULAR に相当します。
SCREEN_FONTTYPE
0x2000
フォントは画面フォントです。
SIMULATED_FONTTYPE
0x8000
フォントはグラフィックス デバイス インターフェイス (GDI) によってシミュレートされたものです。
___MISSING_ALIGNMENT__WORD2+82+50構造体のアライメント調整用の予約WORD。使用しない。
nSizeMinINT4+84+52ユーザーが選択できる最小のポイント サイズ。ChooseFont は、CF_LIMITSIZE フラグが指定されている場合にのみこのメンバーを認識します。
nSizeMaxINT4+88+56ユーザーが選択できる最大のポイント サイズ。ChooseFont は、CF_LIMITSIZE フラグが指定されている場合にのみこのメンバーを認識します。

公式ドキュメント

ChooseFont 関数が Font ダイアログ ボックスの初期化に使用する情報を格納します。ユーザーがダイアログ ボックスを閉じると、システムはユーザーの選択に関する情報をこの構造体に返します。

解説(Remarks)

メモ

commdlg.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして CHOOSEFONT を定義しています。エンコーディングに依存しないエイリアスと、エンコーディングに依存するコードを混在させて使用すると、不一致が生じてコンパイル エラーや実行時エラーの原因となることがあります。詳細については、関数プロトタイプの規則を参照してください。

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

各言語での定義

#include <windows.h>

// CHOOSEFONTW  (x64 92 / x86 60 バイト)
#pragma pack(push, 1)
typedef struct CHOOSEFONTW {
    DWORD lStructSize;
    HWND hwndOwner;
    HDC hDC;
    LOGFONTW* lpLogFont;
    INT iPointSize;
    CHOOSEFONT_FLAGS Flags;
    COLORREF rgbColors;
    LPARAM lCustData;
    LPCFHOOKPROC lpfnHook;
    LPWSTR lpTemplateName;
    HINSTANCE hInstance;
    LPWSTR lpszStyle;
    CHOOSEFONT_FONT_TYPE nFontType;
    WORD ___MISSING_ALIGNMENT__;
    INT nSizeMin;
    INT nSizeMax;
} CHOOSEFONTW;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct CHOOSEFONTW
{
    public uint lStructSize;
    public IntPtr hwndOwner;
    public IntPtr hDC;
    public IntPtr lpLogFont;
    public int iPointSize;
    public uint Flags;
    public uint rgbColors;
    public IntPtr lCustData;
    public IntPtr lpfnHook;
    public IntPtr lpTemplateName;
    public IntPtr hInstance;
    public IntPtr lpszStyle;
    public ushort nFontType;
    public ushort ___MISSING_ALIGNMENT__;
    public int nSizeMin;
    public int nSizeMax;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure CHOOSEFONTW
    Public lStructSize As UInteger
    Public hwndOwner As IntPtr
    Public hDC As IntPtr
    Public lpLogFont As IntPtr
    Public iPointSize As Integer
    Public Flags As UInteger
    Public rgbColors As UInteger
    Public lCustData As IntPtr
    Public lpfnHook As IntPtr
    Public lpTemplateName As IntPtr
    Public hInstance As IntPtr
    Public lpszStyle As IntPtr
    Public nFontType As UShort
    Public ___MISSING_ALIGNMENT__ As UShort
    Public nSizeMin As Integer
    Public nSizeMax As Integer
End Structure
import ctypes
from ctypes import wintypes

class CHOOSEFONTW(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("lStructSize", wintypes.DWORD),
        ("hwndOwner", ctypes.c_void_p),
        ("hDC", ctypes.c_void_p),
        ("lpLogFont", ctypes.c_void_p),
        ("iPointSize", ctypes.c_int),
        ("Flags", wintypes.DWORD),
        ("rgbColors", wintypes.DWORD),
        ("lCustData", ctypes.c_ssize_t),
        ("lpfnHook", ctypes.c_void_p),
        ("lpTemplateName", ctypes.c_void_p),
        ("hInstance", ctypes.c_void_p),
        ("lpszStyle", ctypes.c_void_p),
        ("nFontType", ctypes.c_ushort),
        ("___MISSING_ALIGNMENT__", ctypes.c_ushort),
        ("nSizeMin", ctypes.c_int),
        ("nSizeMax", ctypes.c_int),
    ]
#[repr(C, packed(1))]
pub struct CHOOSEFONTW {
    pub lStructSize: u32,
    pub hwndOwner: *mut core::ffi::c_void,
    pub hDC: *mut core::ffi::c_void,
    pub lpLogFont: *mut core::ffi::c_void,
    pub iPointSize: i32,
    pub Flags: u32,
    pub rgbColors: u32,
    pub lCustData: isize,
    pub lpfnHook: *mut core::ffi::c_void,
    pub lpTemplateName: *mut core::ffi::c_void,
    pub hInstance: *mut core::ffi::c_void,
    pub lpszStyle: *mut core::ffi::c_void,
    pub nFontType: u16,
    pub ___MISSING_ALIGNMENT__: u16,
    pub nSizeMin: i32,
    pub nSizeMax: i32,
}
import "golang.org/x/sys/windows"

type CHOOSEFONTW struct {
	lStructSize uint32
	hwndOwner uintptr
	hDC uintptr
	lpLogFont uintptr
	iPointSize int32
	Flags uint32
	rgbColors uint32
	lCustData uintptr
	lpfnHook uintptr
	lpTemplateName uintptr
	hInstance uintptr
	lpszStyle uintptr
	nFontType uint16
	___MISSING_ALIGNMENT__ uint16
	nSizeMin int32
	nSizeMax int32
}
type
  CHOOSEFONTW = packed record
    lStructSize: DWORD;
    hwndOwner: Pointer;
    hDC: Pointer;
    lpLogFont: Pointer;
    iPointSize: Integer;
    Flags: DWORD;
    rgbColors: DWORD;
    lCustData: NativeInt;
    lpfnHook: Pointer;
    lpTemplateName: Pointer;
    hInstance: Pointer;
    lpszStyle: Pointer;
    nFontType: Word;
    ___MISSING_ALIGNMENT__: Word;
    nSizeMin: Integer;
    nSizeMax: Integer;
  end;
const CHOOSEFONTW = extern struct {
    lStructSize: u32,
    hwndOwner: ?*anyopaque,
    hDC: ?*anyopaque,
    lpLogFont: ?*anyopaque,
    iPointSize: i32,
    Flags: u32,
    rgbColors: u32,
    lCustData: isize,
    lpfnHook: ?*anyopaque,
    lpTemplateName: ?*anyopaque,
    hInstance: ?*anyopaque,
    lpszStyle: ?*anyopaque,
    nFontType: u16,
    ___MISSING_ALIGNMENT__: u16,
    nSizeMin: i32,
    nSizeMax: i32,
};
type
  CHOOSEFONTW {.packed.} = object
    lStructSize: uint32
    hwndOwner: pointer
    hDC: pointer
    lpLogFont: pointer
    iPointSize: int32
    Flags: uint32
    rgbColors: uint32
    lCustData: int
    lpfnHook: pointer
    lpTemplateName: pointer
    hInstance: pointer
    lpszStyle: pointer
    nFontType: uint16
    ___MISSING_ALIGNMENT__: uint16
    nSizeMin: int32
    nSizeMax: int32
align(1)
struct CHOOSEFONTW
{
    uint lStructSize;
    void* hwndOwner;
    void* hDC;
    void* lpLogFont;
    int iPointSize;
    uint Flags;
    uint rgbColors;
    ptrdiff_t lCustData;
    void* lpfnHook;
    void* lpTemplateName;
    void* hInstance;
    void* lpszStyle;
    ushort nFontType;
    ushort ___MISSING_ALIGNMENT__;
    int nSizeMin;
    int nSizeMax;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; CHOOSEFONTW サイズ: 60 バイト(x86)
dim st, 15    ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; lStructSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndOwner : HWND (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; hDC : HDC (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; lpLogFont : LOGFONTW* (+12, 4byte)  varptr(st)+12 を基点に操作(4byte:入れ子/配列)
; iPointSize : INT (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; Flags : CHOOSEFONT_FLAGS (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; rgbColors : COLORREF (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; lCustData : LPARAM (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; lpfnHook : LPCFHOOKPROC (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpTemplateName : LPWSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; hInstance : HINSTANCE (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; lpszStyle : LPWSTR (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; nFontType : CHOOSEFONT_FONT_TYPE (+48, 2byte)  wpoke st,48,値  /  値 = wpeek(st,48)
; ___MISSING_ALIGNMENT__ : WORD (+50, 2byte)  wpoke st,50,値  /  値 = wpeek(st,50)
; nSizeMin : INT (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; nSizeMax : INT (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CHOOSEFONTW サイズ: 92 バイト(x64)
dim st, 23    ; 4byte整数×23(構造体サイズ 92 / 4 切り上げ)
; lStructSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndOwner : HWND (+4, 8byte)  qpoke st,4,値 / qpeek(st,4)  ※IronHSPのみ。3.7/3.8は lpoke st,4,下位 : lpoke st,8,上位
; hDC : HDC (+12, 8byte)  qpoke st,12,値 / qpeek(st,12)  ※IronHSPのみ。3.7/3.8は lpoke st,12,下位 : lpoke st,16,上位
; lpLogFont : LOGFONTW* (+20, 8byte)  varptr(st)+20 を基点に操作(8byte:入れ子/配列)
; iPointSize : INT (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; Flags : CHOOSEFONT_FLAGS (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; rgbColors : COLORREF (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; lCustData : LPARAM (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; lpfnHook : LPCFHOOKPROC (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; lpTemplateName : LPWSTR (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; hInstance : HINSTANCE (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; lpszStyle : LPWSTR (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; nFontType : CHOOSEFONT_FONT_TYPE (+80, 2byte)  wpoke st,80,値  /  値 = wpeek(st,80)
; ___MISSING_ALIGNMENT__ : WORD (+82, 2byte)  wpoke st,82,値  /  値 = wpeek(st,82)
; nSizeMin : INT (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; nSizeMax : INT (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CHOOSEFONTW, pack=1
    #field int lStructSize
    #field intptr hwndOwner
    #field intptr hDC
    #field intptr lpLogFont
    #field int iPointSize
    #field int Flags
    #field int rgbColors
    #field intptr lCustData
    #field intptr lpfnHook
    #field intptr lpTemplateName
    #field intptr hInstance
    #field intptr lpszStyle
    #field short nFontType
    #field short ___MISSING_ALIGNMENT__
    #field int nSizeMin
    #field int nSizeMax
#endstruct

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