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

CHOOSEFONTA

構造体
サイズ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 フラグが指定されている場合にのみ使用されます。それ以外の場合、このメンバーは無視されます。

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

フォント ダイアログ ボックスの初期化に使用できるビット フラグのセット。ダイアログ ボックスが戻るときには、ユーザーの入力を示すようにこれらのフラグが設定されます。このメンバーには、次の値の 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 構造体を使用してダイアログ ボックスのコントロールを初期化する場合、このフラグを使用すると、フォント名コンボ ボックスに初期選択が表示されないようにできます。これは、選択されたテキストに適用されるフォント名が 1 つに定まらない場合に便利です。
CF_NOSCRIPTSEL
0x00800000L
スクリプト コンボ ボックスを無効にします。このフラグを設定すると、ChooseFont が戻るときに LOGFONT 構造体の lfCharSet メンバーに DEFAULT_CHARSET が設定されます。このフラグはダイアログ ボックスの初期化にのみ使用されます。
CF_NOSIMULATIONS
0x00001000L

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

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

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

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

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

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+28システムが lpfnHook メンバーで識別されるフック プロシージャに渡す、アプリケーション定義のデータ。システムがフック プロシージャに WM_INITDIALOG メッセージを送信するとき、そのメッセージの lParam パラメーターは、ダイアログ ボックスの作成時に指定された CHOOSEFONT 構造体へのポインターです。フック プロシージャはこのポインターを使用して lCustData の値を取得できます。
lpfnHookLPCFHOOKPROC8/4+48+32ダイアログ ボックス宛てのメッセージを処理できる CFHookProc フック プロシージャへのポインター。このメンバーは、Flags メンバーに CF_ENABLEHOOK フラグが設定されていない限り無視されます。
lpTemplateNameLPSTR8/4+56+36hInstance メンバーで識別されるモジュール内にある、ダイアログ ボックス テンプレート リソースの名前。このテンプレートが標準のダイアログ ボックス テンプレートの代わりに使用されます。番号付きのダイアログ ボックス リソースの場合、lpTemplateName には MAKEINTRESOURCE マクロが返す値を指定できます。このメンバーは、Flags メンバーに CF_ENABLETEMPLATE フラグが設定されていない限り無視されます。
hInstanceHINSTANCE8/4+64+40Flags メンバーに CF_ENABLETEMPLATEHANDLE フラグが設定されている場合、hInstance はダイアログ ボックス テンプレートを格納するメモリ オブジェクトへのハンドルです。CF_ENABLETEMPLATE フラグが設定されている場合、hInstancelpTemplateName メンバーで名前が指定されたダイアログ ボックス テンプレートを格納するモジュールへのハンドルです。CF_ENABLETEMPLATEHANDLECF_ENABLETEMPLATE のいずれも設定されていない場合、このメンバーは無視されます。
lpszStyleLPSTR8/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 ヘッダーは CHOOSEFONT を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして定義しています。エンコーディング中立のエイリアスの使用と、エンコーディング中立でないコードを混在させると、不一致が生じ、コンパイル エラーや実行時エラーの原因となることがあります。詳細については、関数プロトタイプの規則を参照してください。

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

各言語での定義

#include <windows.h>

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

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct CHOOSEFONTA
{
    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 CHOOSEFONTA
    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 CHOOSEFONTA(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 CHOOSEFONTA {
    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 CHOOSEFONTA 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
  CHOOSEFONTA = 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 CHOOSEFONTA = 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
  CHOOSEFONTA {.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 CHOOSEFONTA
{
    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 レイアウト)
; CHOOSEFONTA サイズ: 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 : LOGFONTA* (+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 : LPSTR (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; hInstance : HINSTANCE (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; lpszStyle : LPSTR (+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 レイアウト)
; CHOOSEFONTA サイズ: 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 : LOGFONTA* (+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 : LPSTR (+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 : LPSTR (+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 CHOOSEFONTA, 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, CHOOSEFONTA        ; NSTRUCT 変数を確保
st->lStructSize = 100
mes "lStructSize=" + st->lStructSize