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

TASKDIALOGCONFIG

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

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

フィールド

フィールドサイズx64x86説明
cbSizeDWORD4+0+0構造体のサイズをバイト単位で指定します。
hwndParentHWND8/4+4+4親ウィンドウのハンドルです。このメンバーは NULL にできます。
hInstanceHINSTANCE8/4+12+8pszMainIcon または pszFooterIcon メンバーで識別されるアイコンリソースと、pszWindowTitlepszMainInstructionpszContentpszVerificationTextpszExpandedInformationpszExpandedControlTextpszCollapsedControlTextpszFooter の各メンバーで識別される文字列リソースを含むモジュールのハンドルです。
dwFlagsTASKDIALOG_FLAGS4+20+12

タスクダイアログの動作を指定します。このパラメーターには、次のグループのフラグを組み合わせて指定できます。

意味
TDF_ENABLE_HYPERLINKS
pszContentpszExpandedInformationpszFooter の各メンバーで指定された文字列に対して、ハイパーリンク処理を有効にします。有効にした場合、これらのメンバーは次の形式のハイパーリンクを含む文字列を指すことができます。
<A HREF="executablestring">Hyperlink Text</A>

警告: 安全でないソースからのコンテンツを使用する場合にハイパーリンクを有効にすると、セキュリティ上の脆弱性が生じるおそれがあります。

メモ タスクダイアログが実際にハイパーリンクを実行することはありません。ハイパーリンクの実行は、pfCallback で指定されたコールバック関数内で処理する必要があります。詳細については、TaskDialogCallbackProc を参照してください。
TDF_USE_HICON_MAIN
hMainIcon メンバーのハンドルが参照するアイコンを、タスクダイアログの主アイコンとして使用することを示します。このフラグが指定された場合、pszMainIcon メンバーは無視されます。
TDF_USE_HICON_FOOTER
hFooterIcon メンバーのハンドルが参照するアイコンを、タスクダイアログのフッターアイコンとして使用することを示します。このフラグが指定された場合、pszFooterIcon メンバーは無視されます。
TDF_ALLOW_DIALOG_CANCELLATION
dwCommonButtons メンバーと pButtons メンバーのいずれにもキャンセルボタンが指定されていない場合でも、Alt-F4、Esc キー、およびタイトルバーの閉じるボタンによってダイアログを閉じられるようにすることを示します。
TDF_USE_COMMAND_LINKS
pButtons メンバーで指定されたボタンを、プッシュボタンではなく (標準のタスクダイアログのグリフを使用した) コマンドリンクとして表示することを示します。コマンドリンクを使用する場合、pszButtonText メンバーの最初の改行文字までのすべての文字がコマンドリンクの主テキストとして扱われ、残りの部分はコマンドリンクの注釈として扱われます。cButtons メンバーが 0 の場合、このフラグは無視されます。
TDF_USE_COMMAND_LINKS_NO_ICON
pButtons メンバーで指定されたボタンを、プッシュボタンではなく (グリフを使用しない) コマンドリンクとして表示することを示します。コマンドリンクを使用する場合、pszButtonText メンバーの最初の改行文字までのすべての文字がコマンドリンクの主テキストとして扱われ、残りの部分はコマンドリンクの注釈として扱われます。cButtons メンバーが 0 の場合、このフラグは無視されます。
TDF_EXPAND_FOOTER_AREA
pszExpandedInformation メンバーで指定された文字列を、ダイアログのコンテンツの直後ではなく、ダイアログのフッター領域の下部に表示することを示します。pszExpandedInformation メンバーが NULL の場合、このフラグは無視されます。
TDF_EXPANDED_BY_DEFAULT
pszExpandedInformation メンバーで指定された文字列を、ダイアログの初期表示時に表示することを示します。pszExpandedInformation メンバーが NULL の場合、このフラグは無視されます。
TDF_VERIFICATION_FLAG_CHECKED
ダイアログの初期表示時に、ダイアログ内の確認チェックボックスがオンの状態であることを示します。pszVerificationText パラメーターが NULL の場合、このフラグは無視されます。
TDF_SHOW_PROGRESS_BAR
プログレスバーを表示することを示します。
TDF_SHOW_MARQUEE_PROGRESS_BAR
マーキープログレスバーを表示することを示します。
TDF_CALLBACK_TIMER
タスクダイアログのコールバックを約 200 ミリ秒ごとに呼び出すことを示します。
TDF_POSITION_RELATIVE_TO_WINDOW
タスクダイアログを hwndParent で指定されたウィンドウを基準に配置 (中央揃え) することを示します。このフラグが指定されていない場合 (または hwndParent メンバーが指定されていない場合)、タスクダイアログはモニターを基準に配置 (中央揃え) されます。
TDF_RTL_LAYOUT
テキストを右から左に読む形式で表示することを示します。
TDF_NO_DEFAULT_RADIO_BUTTON
既定の項目が選択されないことを示します。
TDF_CAN_BE_MINIMIZED
タスクダイアログを最小化できることを示します。
TDIF_SIZE_TO_CONTENT
このフラグは非推奨です。代わりに TDF_SIZE_TO_CONTENT を使用してください。
TDF_SIZE_TO_CONTENT
タスクダイアログの幅が、そのコンテンツ領域の幅によって決定されることを示します。cxWidth が 0 に設定されていない場合、このフラグは無視されます。
dwCommonButtonsTASKDIALOG_COMMON_BUTTON_FLAGS4+24+16

タスクダイアログに表示されるプッシュボタンを指定します。共通ボタンが指定されておらず、cButtons メンバーと pButtons メンバーによるカスタムボタンも指定されていない場合、タスクダイアログには既定で OK ボタンが含まれます。このパラメーターには、次のグループのフラグを組み合わせて指定できます。

意味
TDCBF_OK_BUTTON
タスクダイアログに OK プッシュボタンが含まれます。
TDCBF_YES_BUTTON
タスクダイアログに Yes (はい) プッシュボタンが含まれます。
TDCBF_NO_BUTTON
タスクダイアログに No (いいえ) プッシュボタンが含まれます。
TDCBF_CANCEL_BUTTON
タスクダイアログに Cancel (キャンセル) プッシュボタンが含まれます。このボタンを指定した場合、タスクダイアログは一般的なキャンセル操作 (Alt-F4 および Esc キー) に応答します。
TDCBF_RETRY_BUTTON
タスクダイアログに Retry (再試行) プッシュボタンが含まれます。
TDCBF_CLOSE_BUTTON
タスクダイアログに Close (閉じる) プッシュボタンが含まれます。
pszWindowTitleLPWSTR8/4+28+20タスクダイアログのタイトルとして使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。このパラメーターが NULL の場合、実行可能プログラムのファイル名が使用されます。
Anonymous1_Anonymous1_e__Union8/4+36+24メインアイコンを指定する共用体(リソースIDまたはHICON)。
pszMainInstructionLPWSTR8/4+44+28メインの指示文として使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。
pszContentLPWSTR8/4+52+32ダイアログの主要なコンテンツとして使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。dwFlags メンバーに ENABLE_HYPERLINKS フラグが指定されている場合、この文字列には <A HREF="executablestring">Hyperlink Text</A> の形式のハイパーリンクを含めることができます。警告: 安全でないソースからのコンテンツを使用する場合にハイパーリンクを有効にすると、セキュリティ上の脆弱性が生じるおそれがあります。
cButtonsDWORD4+60+36タスクダイアログにボタンまたはコマンドリンクを作成するために使用される pButtons 配列の要素数です。このメンバーが 0 で、かつ dwCommonButtons メンバーによる共通ボタンも指定されていない場合、タスクダイアログには OK ボタンが 1 つだけ表示されます。
pButtonsTASKDIALOG_BUTTON*8/4+64+40タスクダイアログに表示するカスタムボタンの定義を格納した TASKDIALOG_BUTTON 構造体の配列へのポインターです。この配列には、少なくとも cButtons メンバーで指定された数の要素が含まれていなければなりません。
nDefaultButtonINT4+72+44

タスクダイアログの既定のボタンです。pButtons 配列内のいずれかの TASKDIALOG_BUTTON 構造体の nButtonID メンバーで指定された値、または dwCommonButtons メンバーで指定されたボタンに対応する次の ID のいずれかを指定できます。

IDCANCEL Cancel ボタンを既定にします。
IDNO No ボタンを既定にします。
IDOK OK ボタンを既定にします。
IDRETRY Retry ボタンを既定にします。
IDYES Yes ボタンを既定にします。
IDCLOSE Close ボタンを既定にします。

このメンバーが 0 の場合、またはその値がダイアログ内のいずれのボタン ID にも対応しない場合は、ダイアログの最初のボタンが既定になります。

cRadioButtonsDWORD4+76+48タスクダイアログにラジオボタンを作成するために使用される pRadioButtons 配列の要素数です。
pRadioButtonsTASKDIALOG_BUTTON*8/4+80+52タスクダイアログに表示するラジオボタンの定義を格納した TASKDIALOG_BUTTON 構造体の配列へのポインターです。この配列には、少なくとも cRadioButtons メンバーで指定された数の要素が含まれていなければなりません。このパラメーターは NULL にできます。
nDefaultRadioButtonINT4+88+56既定で選択されるラジオボタンのボタン ID です。この値がいずれのボタン ID にも対応しない場合は、配列内の最初のボタンが既定で選択されます。
pszVerificationTextLPWSTR8/4+92+60確認チェックボックスのラベルとして使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。このパラメーターが NULL の場合、確認チェックボックスはタスクダイアログに表示されません。TaskDialogIndirectpfVerificationFlagChecked パラメーターが NULL の場合、チェックボックスは有効になりません。
pszExpandedInformationLPWSTR8/4+100+64追加情報の表示に使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。追加情報は、TDF_EXPAND_FOOTER_AREA フラグが指定されているかどうかに応じて、コンテンツの直下またはフッターテキストの下に表示されます。dwFlags メンバーに TDF_ENABLE_HYPERLINKS フラグが指定されている場合、この文字列には <A HREF="executablestring">Hyperlink Text</A> の形式のハイパーリンクを含めることができます。警告: 安全でないソースからのコンテンツを使用する場合にハイパーリンクを有効にすると、セキュリティ上の脆弱性が生じるおそれがあります。
pszExpandedControlTextLPWSTR8/4+108+68展開可能な情報を折りたたむためのボタンのラベルとして使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。pszExpandedInformation メンバーが NULL の場合、このメンバーは無視されます。このメンバーが NULL で、かつ pszCollapsedControlText が指定されている場合は、このメンバーにも pszCollapsedControlText の値が使用されます。
pszCollapsedControlTextLPWSTR8/4+116+72展開可能な情報を展開するためのボタンのラベルとして使用する文字列を参照するポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。pszExpandedInformation メンバーが NULL の場合、このメンバーは無視されます。このメンバーが NULL で、かつ pszCollapsedControlText が指定されている場合は、このメンバーにも pszCollapsedControlText の値が使用されます。
Anonymous2_Anonymous2_e__Union8/4+124+76フッターアイコンを指定する共用体(リソースIDまたはHICON)。
pszFooterLPWSTR8/4+132+80

タスクダイアログのフッター領域で使用する文字列へのポインターです。このパラメーターには、null で終わる文字列、または MAKEINTRESOURCE マクロに渡す整数リソース識別子のいずれかを指定できます。dwFlags メンバーに TDF_ENABLE_HYPERLINKS フラグが指定されている場合、この文字列には次の形式のハイパーリンクを含めることができます。

<A HREF="executablestring">Hyperlink Text</A>
警告 安全でないソースからのコンテンツを使用する場合にハイパーリンクを有効にすると、セキュリティ上の脆弱性が生じるおそれがあります。
pfCallbackPFTASKDIALOGCALLBACK8/4+140+84アプリケーション定義のコールバック関数へのポインターです。詳細については、TaskDialogCallbackProc を参照してください。
lpCallbackDataINT_PTR8/4+148+88アプリケーション定義の参照データへのポインターです。この値は呼び出し元が定義します。
cxWidthDWORD4+156+92タスクダイアログのクライアント領域の幅を、ダイアログ単位で指定します。0 の場合、タスクダイアログマネージャーが最適な幅を計算します。

共用体: _Anonymous1_e__Union x64 8B / x86 4B

フィールドサイズx64x86説明
hMainIconHICON8/4+0+0タスクダイアログに表示するアイコンのハンドルです。このメンバーは、TDF_USE_HICON_MAIN フラグが指定されていない限り無視されます。このメンバーが NULL で、かつ TDF_USE_HICON_MAIN が指定されている場合、アイコンは表示されません。
pszMainIconLPWSTR8/4+0+0

タスクダイアログに表示するアイコンを参照するポインターです。USE_HICON_MAIN フラグが指定されている場合、このパラメーターは無視されます。それ以外の場合で、このパラメーターが NULL のとき、または hInstance パラメーターが NULL のときは、アイコンは表示されません。このパラメーターには、MAKEINTRESOURCE マクロに渡す整数リソース識別子、または次の定義済みの値のいずれかを指定する必要があります。

意味
TD_ERROR_ICON
タスクダイアログに停止標識のアイコンが表示されます。
TD_WARNING_ICON
タスクダイアログに感嘆符のアイコンが表示されます。
TD_INFORMATION_ICON
タスクダイアログに、円の中に小文字の i が描かれたアイコンが表示されます。
TD_SHIELD_ICON
タスクダイアログに盾のアイコンが表示されます。

共用体: _Anonymous2_e__Union x64 8B / x86 4B

フィールドサイズx64x86説明
hFooterIconHICON8/4+0+0タスクダイアログのフッターに表示するアイコンのハンドルです。このメンバーは、TDF_USE_HICON_FOOTER フラグが指定されており、かつ pszFooterIcon が指定されていない場合を除いて無視されます。このメンバーが NULL で、かつ TDF_USE_HICON_FOOTER が指定されている場合、アイコンは表示されません。
pszFooterIconLPWSTR8/4+0+0タスクダイアログのフッター領域に表示するアイコンを参照するポインターです。TDF_USE_HICON_FOOTER フラグが指定されている場合、または pszFooterNULL の場合、このパラメーターは無視されます。それ以外の場合で、このパラメーターが NULL のとき、または hInstance パラメーターが NULL のときは、アイコンは表示されません。このパラメーターには、MAKEINTRESOURCE マクロに渡す整数リソース識別子、または pszMainIcon に記載されている定義済みの値のいずれかを指定する必要があります。

公式ドキュメント

TASKDIALOGCONFIG 構造体には、タスクダイアログの表示に使用される情報が格納されます。TaskDialogIndirect 関数はこの構造体を使用します。

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

各言語での定義

#include <windows.h>

// TASKDIALOGCONFIG  (x64 160 / x86 96 バイト)
#pragma pack(push, 1)
typedef struct TASKDIALOGCONFIG {
    DWORD cbSize;
    HWND hwndParent;
    HINSTANCE hInstance;
    TASKDIALOG_FLAGS dwFlags;
    TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons;
    LPWSTR pszWindowTitle;
    _Anonymous1_e__Union Anonymous1;
    LPWSTR pszMainInstruction;
    LPWSTR pszContent;
    DWORD cButtons;
    TASKDIALOG_BUTTON* pButtons;
    INT nDefaultButton;
    DWORD cRadioButtons;
    TASKDIALOG_BUTTON* pRadioButtons;
    INT nDefaultRadioButton;
    LPWSTR pszVerificationText;
    LPWSTR pszExpandedInformation;
    LPWSTR pszExpandedControlText;
    LPWSTR pszCollapsedControlText;
    _Anonymous2_e__Union Anonymous2;
    LPWSTR pszFooter;
    PFTASKDIALOGCALLBACK pfCallback;
    INT_PTR lpCallbackData;
    DWORD cxWidth;
} TASKDIALOGCONFIG;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct TASKDIALOGCONFIG
{
    public uint cbSize;
    public IntPtr hwndParent;
    public IntPtr hInstance;
    public int dwFlags;
    public int dwCommonButtons;
    public IntPtr pszWindowTitle;
    public _Anonymous1_e__Union Anonymous1;
    public IntPtr pszMainInstruction;
    public IntPtr pszContent;
    public uint cButtons;
    public IntPtr pButtons;
    public int nDefaultButton;
    public uint cRadioButtons;
    public IntPtr pRadioButtons;
    public int nDefaultRadioButton;
    public IntPtr pszVerificationText;
    public IntPtr pszExpandedInformation;
    public IntPtr pszExpandedControlText;
    public IntPtr pszCollapsedControlText;
    public _Anonymous2_e__Union Anonymous2;
    public IntPtr pszFooter;
    public IntPtr pfCallback;
    public IntPtr lpCallbackData;
    public uint cxWidth;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure TASKDIALOGCONFIG
    Public cbSize As UInteger
    Public hwndParent As IntPtr
    Public hInstance As IntPtr
    Public dwFlags As Integer
    Public dwCommonButtons As Integer
    Public pszWindowTitle As IntPtr
    Public Anonymous1 As _Anonymous1_e__Union
    Public pszMainInstruction As IntPtr
    Public pszContent As IntPtr
    Public cButtons As UInteger
    Public pButtons As IntPtr
    Public nDefaultButton As Integer
    Public cRadioButtons As UInteger
    Public pRadioButtons As IntPtr
    Public nDefaultRadioButton As Integer
    Public pszVerificationText As IntPtr
    Public pszExpandedInformation As IntPtr
    Public pszExpandedControlText As IntPtr
    Public pszCollapsedControlText As IntPtr
    Public Anonymous2 As _Anonymous2_e__Union
    Public pszFooter As IntPtr
    Public pfCallback As IntPtr
    Public lpCallbackData As IntPtr
    Public cxWidth As UInteger
End Structure
import ctypes
from ctypes import wintypes

class TASKDIALOGCONFIG(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("cbSize", wintypes.DWORD),
        ("hwndParent", ctypes.c_void_p),
        ("hInstance", ctypes.c_void_p),
        ("dwFlags", ctypes.c_int),
        ("dwCommonButtons", ctypes.c_int),
        ("pszWindowTitle", ctypes.c_void_p),
        ("Anonymous1", _Anonymous1_e__Union),
        ("pszMainInstruction", ctypes.c_void_p),
        ("pszContent", ctypes.c_void_p),
        ("cButtons", wintypes.DWORD),
        ("pButtons", ctypes.c_void_p),
        ("nDefaultButton", ctypes.c_int),
        ("cRadioButtons", wintypes.DWORD),
        ("pRadioButtons", ctypes.c_void_p),
        ("nDefaultRadioButton", ctypes.c_int),
        ("pszVerificationText", ctypes.c_void_p),
        ("pszExpandedInformation", ctypes.c_void_p),
        ("pszExpandedControlText", ctypes.c_void_p),
        ("pszCollapsedControlText", ctypes.c_void_p),
        ("Anonymous2", _Anonymous2_e__Union),
        ("pszFooter", ctypes.c_void_p),
        ("pfCallback", ctypes.c_void_p),
        ("lpCallbackData", ctypes.c_ssize_t),
        ("cxWidth", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct TASKDIALOGCONFIG {
    pub cbSize: u32,
    pub hwndParent: *mut core::ffi::c_void,
    pub hInstance: *mut core::ffi::c_void,
    pub dwFlags: i32,
    pub dwCommonButtons: i32,
    pub pszWindowTitle: *mut core::ffi::c_void,
    pub Anonymous1: _Anonymous1_e__Union,
    pub pszMainInstruction: *mut core::ffi::c_void,
    pub pszContent: *mut core::ffi::c_void,
    pub cButtons: u32,
    pub pButtons: *mut core::ffi::c_void,
    pub nDefaultButton: i32,
    pub cRadioButtons: u32,
    pub pRadioButtons: *mut core::ffi::c_void,
    pub nDefaultRadioButton: i32,
    pub pszVerificationText: *mut core::ffi::c_void,
    pub pszExpandedInformation: *mut core::ffi::c_void,
    pub pszExpandedControlText: *mut core::ffi::c_void,
    pub pszCollapsedControlText: *mut core::ffi::c_void,
    pub Anonymous2: _Anonymous2_e__Union,
    pub pszFooter: *mut core::ffi::c_void,
    pub pfCallback: *mut core::ffi::c_void,
    pub lpCallbackData: isize,
    pub cxWidth: u32,
}
import "golang.org/x/sys/windows"

type TASKDIALOGCONFIG struct {
	cbSize uint32
	hwndParent uintptr
	hInstance uintptr
	dwFlags int32
	dwCommonButtons int32
	pszWindowTitle uintptr
	Anonymous1 _Anonymous1_e__Union
	pszMainInstruction uintptr
	pszContent uintptr
	cButtons uint32
	pButtons uintptr
	nDefaultButton int32
	cRadioButtons uint32
	pRadioButtons uintptr
	nDefaultRadioButton int32
	pszVerificationText uintptr
	pszExpandedInformation uintptr
	pszExpandedControlText uintptr
	pszCollapsedControlText uintptr
	Anonymous2 _Anonymous2_e__Union
	pszFooter uintptr
	pfCallback uintptr
	lpCallbackData uintptr
	cxWidth uint32
}
type
  TASKDIALOGCONFIG = packed record
    cbSize: DWORD;
    hwndParent: Pointer;
    hInstance: Pointer;
    dwFlags: Integer;
    dwCommonButtons: Integer;
    pszWindowTitle: Pointer;
    Anonymous1: _Anonymous1_e__Union;
    pszMainInstruction: Pointer;
    pszContent: Pointer;
    cButtons: DWORD;
    pButtons: Pointer;
    nDefaultButton: Integer;
    cRadioButtons: DWORD;
    pRadioButtons: Pointer;
    nDefaultRadioButton: Integer;
    pszVerificationText: Pointer;
    pszExpandedInformation: Pointer;
    pszExpandedControlText: Pointer;
    pszCollapsedControlText: Pointer;
    Anonymous2: _Anonymous2_e__Union;
    pszFooter: Pointer;
    pfCallback: Pointer;
    lpCallbackData: NativeInt;
    cxWidth: DWORD;
  end;
const TASKDIALOGCONFIG = extern struct {
    cbSize: u32,
    hwndParent: ?*anyopaque,
    hInstance: ?*anyopaque,
    dwFlags: i32,
    dwCommonButtons: i32,
    pszWindowTitle: ?*anyopaque,
    Anonymous1: _Anonymous1_e__Union,
    pszMainInstruction: ?*anyopaque,
    pszContent: ?*anyopaque,
    cButtons: u32,
    pButtons: ?*anyopaque,
    nDefaultButton: i32,
    cRadioButtons: u32,
    pRadioButtons: ?*anyopaque,
    nDefaultRadioButton: i32,
    pszVerificationText: ?*anyopaque,
    pszExpandedInformation: ?*anyopaque,
    pszExpandedControlText: ?*anyopaque,
    pszCollapsedControlText: ?*anyopaque,
    Anonymous2: _Anonymous2_e__Union,
    pszFooter: ?*anyopaque,
    pfCallback: ?*anyopaque,
    lpCallbackData: isize,
    cxWidth: u32,
};
type
  TASKDIALOGCONFIG {.packed.} = object
    cbSize: uint32
    hwndParent: pointer
    hInstance: pointer
    dwFlags: int32
    dwCommonButtons: int32
    pszWindowTitle: pointer
    Anonymous1: _Anonymous1_e__Union
    pszMainInstruction: pointer
    pszContent: pointer
    cButtons: uint32
    pButtons: pointer
    nDefaultButton: int32
    cRadioButtons: uint32
    pRadioButtons: pointer
    nDefaultRadioButton: int32
    pszVerificationText: pointer
    pszExpandedInformation: pointer
    pszExpandedControlText: pointer
    pszCollapsedControlText: pointer
    Anonymous2: _Anonymous2_e__Union
    pszFooter: pointer
    pfCallback: pointer
    lpCallbackData: int
    cxWidth: uint32
align(1)
struct TASKDIALOGCONFIG
{
    uint cbSize;
    void* hwndParent;
    void* hInstance;
    int dwFlags;
    int dwCommonButtons;
    void* pszWindowTitle;
    _Anonymous1_e__Union Anonymous1;
    void* pszMainInstruction;
    void* pszContent;
    uint cButtons;
    void* pButtons;
    int nDefaultButton;
    uint cRadioButtons;
    void* pRadioButtons;
    int nDefaultRadioButton;
    void* pszVerificationText;
    void* pszExpandedInformation;
    void* pszExpandedControlText;
    void* pszCollapsedControlText;
    _Anonymous2_e__Union Anonymous2;
    void* pszFooter;
    void* pfCallback;
    ptrdiff_t lpCallbackData;
    uint cxWidth;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; TASKDIALOGCONFIG サイズ: 96 バイト(x86)
dim st, 24    ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndParent : HWND (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; hInstance : HINSTANCE (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwFlags : TASKDIALOG_FLAGS (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwCommonButtons : TASKDIALOG_COMMON_BUTTON_FLAGS (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszWindowTitle : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; pszMainInstruction : LPWSTR (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; pszContent : LPWSTR (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; cButtons : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; pButtons : TASKDIALOG_BUTTON* (+40, 4byte)  varptr(st)+40 を基点に操作(4byte:入れ子/配列)
; nDefaultButton : INT (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; cRadioButtons : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; pRadioButtons : TASKDIALOG_BUTTON* (+52, 4byte)  varptr(st)+52 を基点に操作(4byte:入れ子/配列)
; nDefaultRadioButton : INT (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; pszVerificationText : LPWSTR (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; pszExpandedInformation : LPWSTR (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; pszExpandedControlText : LPWSTR (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; pszCollapsedControlText : LPWSTR (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; Anonymous2 : _Anonymous2_e__Union (+76, 4byte)  varptr(st)+76 を基点に操作(4byte:入れ子/配列)
; pszFooter : LPWSTR (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; pfCallback : PFTASKDIALOGCALLBACK (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; lpCallbackData : INT_PTR (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; cxWidth : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TASKDIALOGCONFIG サイズ: 160 バイト(x64)
dim st, 40    ; 4byte整数×40(構造体サイズ 160 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; hwndParent : HWND (+4, 8byte)  qpoke st,4,値 / qpeek(st,4)  ※IronHSPのみ。3.7/3.8は lpoke st,4,下位 : lpoke st,8,上位
; hInstance : HINSTANCE (+12, 8byte)  qpoke st,12,値 / qpeek(st,12)  ※IronHSPのみ。3.7/3.8は lpoke st,12,下位 : lpoke st,16,上位
; dwFlags : TASKDIALOG_FLAGS (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwCommonButtons : TASKDIALOG_COMMON_BUTTON_FLAGS (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; pszWindowTitle : LPWSTR (+28, 8byte)  qpoke st,28,値 / qpeek(st,28)  ※IronHSPのみ。3.7/3.8は lpoke st,28,下位 : lpoke st,32,上位
; Anonymous1 : _Anonymous1_e__Union (+36, 8byte)  varptr(st)+36 を基点に操作(8byte:入れ子/配列)
; pszMainInstruction : LPWSTR (+44, 8byte)  qpoke st,44,値 / qpeek(st,44)  ※IronHSPのみ。3.7/3.8は lpoke st,44,下位 : lpoke st,48,上位
; pszContent : LPWSTR (+52, 8byte)  qpoke st,52,値 / qpeek(st,52)  ※IronHSPのみ。3.7/3.8は lpoke st,52,下位 : lpoke st,56,上位
; cButtons : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; pButtons : TASKDIALOG_BUTTON* (+64, 8byte)  varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; nDefaultButton : INT (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; cRadioButtons : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; pRadioButtons : TASKDIALOG_BUTTON* (+80, 8byte)  varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; nDefaultRadioButton : INT (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; pszVerificationText : LPWSTR (+92, 8byte)  qpoke st,92,値 / qpeek(st,92)  ※IronHSPのみ。3.7/3.8は lpoke st,92,下位 : lpoke st,96,上位
; pszExpandedInformation : LPWSTR (+100, 8byte)  qpoke st,100,値 / qpeek(st,100)  ※IronHSPのみ。3.7/3.8は lpoke st,100,下位 : lpoke st,104,上位
; pszExpandedControlText : LPWSTR (+108, 8byte)  qpoke st,108,値 / qpeek(st,108)  ※IronHSPのみ。3.7/3.8は lpoke st,108,下位 : lpoke st,112,上位
; pszCollapsedControlText : LPWSTR (+116, 8byte)  qpoke st,116,値 / qpeek(st,116)  ※IronHSPのみ。3.7/3.8は lpoke st,116,下位 : lpoke st,120,上位
; Anonymous2 : _Anonymous2_e__Union (+124, 8byte)  varptr(st)+124 を基点に操作(8byte:入れ子/配列)
; pszFooter : LPWSTR (+132, 8byte)  qpoke st,132,値 / qpeek(st,132)  ※IronHSPのみ。3.7/3.8は lpoke st,132,下位 : lpoke st,136,上位
; pfCallback : PFTASKDIALOGCALLBACK (+140, 8byte)  qpoke st,140,値 / qpeek(st,140)  ※IronHSPのみ。3.7/3.8は lpoke st,140,下位 : lpoke st,144,上位
; lpCallbackData : INT_PTR (+148, 8byte)  qpoke st,148,値 / qpeek(st,148)  ※IronHSPのみ。3.7/3.8は lpoke st,148,下位 : lpoke st,152,上位
; cxWidth : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global TASKDIALOGCONFIG, pack=1
    #field int cbSize
    #field intptr hwndParent
    #field intptr hInstance
    #field int dwFlags
    #field int dwCommonButtons
    #field intptr pszWindowTitle
    #field byte Anonymous1 8
    #field intptr pszMainInstruction
    #field intptr pszContent
    #field int cButtons
    #field intptr pButtons
    #field int nDefaultButton
    #field int cRadioButtons
    #field intptr pRadioButtons
    #field int nDefaultRadioButton
    #field intptr pszVerificationText
    #field intptr pszExpandedInformation
    #field intptr pszExpandedControlText
    #field intptr pszCollapsedControlText
    #field byte Anonymous2 8
    #field intptr pszFooter
    #field intptr pfCallback
    #field intptr lpCallbackData
    #field int cxWidth
#endstruct

stdim st, TASKDIALOGCONFIG        ; NSTRUCT 変数を確保
st->cbSize = 100
mes "cbSize=" + st->cbSize
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。