Win32 API 日本語リファレンス
ホームGraphics.Printing › PROPSHEETUI_INFO

PROPSHEETUI_INFO

構造体
サイズx64: 48 バイト / x86: 28 バイト

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

フィールド

フィールドサイズx64x86説明
cbSizeWORD2+0+0本構造体のサイズ(バイト単位)。
VersionWORD2+2+2PropSheetUIのバージョン番号(PROPSHEETUI_INFO_VERSION)。
FlagsWORD2+4+4プロパティシートUIの動作を制御するビットフラグ。
ReasonWORD2+6+6コールバックが呼ばれた理由を示す値(PROPSHEETUI_REASON_*)。
hComPropSheetHANDLE8/4+8+8共通プロパティシートのハンドル。
pfnComPropSheetPFNCOMPROPSHEET8/4+16+12共通プロパティシート操作関数へのポインタ(PFNCOMPROPSHEET)。
lParamInitLPARAM8/4+24+16初期化時にアプリへ渡されるパラメータ(LPARAM)。
UserDataUINT_PTR8/4+32+20アプリケーション定義のユーザーデータ。
ResultUINT_PTR8/4+40+24処理結果を返すフィールド。

各言語での定義

#include <windows.h>

// PROPSHEETUI_INFO  (x64 48 / x86 28 バイト)
typedef struct PROPSHEETUI_INFO {
    WORD cbSize;
    WORD Version;
    WORD Flags;
    WORD Reason;
    HANDLE hComPropSheet;
    PFNCOMPROPSHEET pfnComPropSheet;
    LPARAM lParamInit;
    UINT_PTR UserData;
    UINT_PTR Result;
} PROPSHEETUI_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PROPSHEETUI_INFO
{
    public ushort cbSize;
    public ushort Version;
    public ushort Flags;
    public ushort Reason;
    public IntPtr hComPropSheet;
    public IntPtr pfnComPropSheet;
    public IntPtr lParamInit;
    public UIntPtr UserData;
    public UIntPtr Result;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PROPSHEETUI_INFO
    Public cbSize As UShort
    Public Version As UShort
    Public Flags As UShort
    Public Reason As UShort
    Public hComPropSheet As IntPtr
    Public pfnComPropSheet As IntPtr
    Public lParamInit As IntPtr
    Public UserData As UIntPtr
    Public Result As UIntPtr
End Structure
import ctypes
from ctypes import wintypes

class PROPSHEETUI_INFO(ctypes.Structure):
    _fields_ = [
        ("cbSize", ctypes.c_ushort),
        ("Version", ctypes.c_ushort),
        ("Flags", ctypes.c_ushort),
        ("Reason", ctypes.c_ushort),
        ("hComPropSheet", ctypes.c_void_p),
        ("pfnComPropSheet", ctypes.c_void_p),
        ("lParamInit", ctypes.c_ssize_t),
        ("UserData", ctypes.c_size_t),
        ("Result", ctypes.c_size_t),
    ]
#[repr(C)]
pub struct PROPSHEETUI_INFO {
    pub cbSize: u16,
    pub Version: u16,
    pub Flags: u16,
    pub Reason: u16,
    pub hComPropSheet: *mut core::ffi::c_void,
    pub pfnComPropSheet: *mut core::ffi::c_void,
    pub lParamInit: isize,
    pub UserData: usize,
    pub Result: usize,
}
import "golang.org/x/sys/windows"

type PROPSHEETUI_INFO struct {
	cbSize uint16
	Version uint16
	Flags uint16
	Reason uint16
	hComPropSheet uintptr
	pfnComPropSheet uintptr
	lParamInit uintptr
	UserData uintptr
	Result uintptr
}
type
  PROPSHEETUI_INFO = record
    cbSize: Word;
    Version: Word;
    Flags: Word;
    Reason: Word;
    hComPropSheet: Pointer;
    pfnComPropSheet: Pointer;
    lParamInit: NativeInt;
    UserData: NativeUInt;
    Result: NativeUInt;
  end;
const PROPSHEETUI_INFO = extern struct {
    cbSize: u16,
    Version: u16,
    Flags: u16,
    Reason: u16,
    hComPropSheet: ?*anyopaque,
    pfnComPropSheet: ?*anyopaque,
    lParamInit: isize,
    UserData: usize,
    Result: usize,
};
type
  PROPSHEETUI_INFO {.bycopy.} = object
    cbSize: uint16
    Version: uint16
    Flags: uint16
    Reason: uint16
    hComPropSheet: pointer
    pfnComPropSheet: pointer
    lParamInit: int
    UserData: uint
    Result: uint
struct PROPSHEETUI_INFO
{
    ushort cbSize;
    ushort Version;
    ushort Flags;
    ushort Reason;
    void* hComPropSheet;
    void* pfnComPropSheet;
    ptrdiff_t lParamInit;
    size_t UserData;
    size_t Result;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; PROPSHEETUI_INFO サイズ: 28 バイト(x86)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; cbSize : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; Version : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; Flags : WORD (+4, 2byte)  wpoke st,4,値  /  値 = wpeek(st,4)
; Reason : WORD (+6, 2byte)  wpoke st,6,値  /  値 = wpeek(st,6)
; hComPropSheet : HANDLE (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; pfnComPropSheet : PFNCOMPROPSHEET (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; lParamInit : LPARAM (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; UserData : UINT_PTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Result : UINT_PTR (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PROPSHEETUI_INFO サイズ: 48 バイト(x64)
dim st, 12    ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; cbSize : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; Version : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; Flags : WORD (+4, 2byte)  wpoke st,4,値  /  値 = wpeek(st,4)
; Reason : WORD (+6, 2byte)  wpoke st,6,値  /  値 = wpeek(st,6)
; hComPropSheet : HANDLE (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pfnComPropSheet : PFNCOMPROPSHEET (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; lParamInit : LPARAM (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; UserData : UINT_PTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; Result : UINT_PTR (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PROPSHEETUI_INFO
    #field short cbSize
    #field short Version
    #field short Flags
    #field short Reason
    #field intptr hComPropSheet
    #field intptr pfnComPropSheet
    #field intptr lParamInit
    #field intptr UserData
    #field intptr Result
#endstruct

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