ホーム › Graphics.Printing › PROPSHEETUI_INFO
PROPSHEETUI_INFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cbSize | WORD | 2 | +0 | +0 | 本構造体のサイズ(バイト単位)。 |
| Version | WORD | 2 | +2 | +2 | PropSheetUIのバージョン番号(PROPSHEETUI_INFO_VERSION)。 |
| Flags | WORD | 2 | +4 | +4 | プロパティシートUIの動作を制御するビットフラグ。 |
| Reason | WORD | 2 | +6 | +6 | コールバックが呼ばれた理由を示す値(PROPSHEETUI_REASON_*)。 |
| hComPropSheet | HANDLE | 8/4 | +8 | +8 | 共通プロパティシートのハンドル。 |
| pfnComPropSheet | PFNCOMPROPSHEET | 8/4 | +16 | +12 | 共通プロパティシート操作関数へのポインタ(PFNCOMPROPSHEET)。 |
| lParamInit | LPARAM | 8/4 | +24 | +16 | 初期化時にアプリへ渡されるパラメータ(LPARAM)。 |
| UserData | UINT_PTR | 8/4 | +32 | +20 | アプリケーション定義のユーザーデータ。 |
| Result | UINT_PTR | 8/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 Structureimport 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: uintstruct 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