ホーム › UI.Controls.RichEdit › REOBJECT
REOBJECT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cbStruct | DWORD | 4 | +0 | +0 | 構造体のサイズ (バイト単位)。 | ||||||||||||||||||||||||||||||||||||||||
| cp | INT | 4 | +4 | +4 | オブジェクトの文字位置。 | ||||||||||||||||||||||||||||||||||||||||
| clsid | GUID | 16 | +8 | +8 | オブジェクトのクラス識別子。 | ||||||||||||||||||||||||||||||||||||||||
| poleobj | IOleObject* | 8/4 | +24 | +24 | オブジェクトの IOleObject インターフェイスのインスタンス。 | ||||||||||||||||||||||||||||||||||||||||
| pstg | IStorage* | 8/4 | +32 | +28 | IStorage インターフェイスのインスタンス。これは、オブジェクトに関連付けられたストレージオブジェクトです。 | ||||||||||||||||||||||||||||||||||||||||
| polesite | IOleClientSite* | 8/4 | +40 | +32 | IOleClientSite インターフェイスのインスタンス。これは、リッチエディットコントロール内でのオブジェクトのクライアントサイトです。このアドレスは GetClientSite メソッドから取得したものでなければなりません。 | ||||||||||||||||||||||||||||||||||||||||
| sizel | SIZE | 8 | +48 | +36 | オブジェクトのサイズ。単位は 0.01 ミリメートルで、これは HIMETRIC 単位です。詳細については、関数 GetMapMode を参照してください。挿入時に 0, 0 を指定すると、変更フラグがオフになるまでオブジェクトが自身のサイズを自由に決定できることを示します。 | ||||||||||||||||||||||||||||||||||||||||
| dvaspect | DWORD | 4 | +56 | +44 | 使用される表示アスペクト。指定できる値の説明については、DVASPECT を参照してください。 | ||||||||||||||||||||||||||||||||||||||||
| dwFlags | REOBJECT_FLAGS | 4 | +60 | +48 | オブジェクトの状態フラグ。次の値の組み合わせを指定できます。
| ||||||||||||||||||||||||||||||||||||||||
| dwUser | DWORD | 4 | +64 | +52 | ユーザー定義の値のために予約されています。 |
公式ドキュメント
リッチエディットコントロール内の OLE オブジェクトまたはイメージオブジェクトに関する情報を格納します。
解説(Remarks)
リッチエディットコントロール内の OLE オブジェクトまたはイメージオブジェクトは、メモリ内バッキングストアのプレーンテキスト部分で 1 文字分の位置を占め、その値は U+FFFC になります。これらは、数式オブジェクトのような「インラインオブジェクト」とは異なります。インラインオブジェクトは、インラインオブジェクトの開始区切り文字 (U+FDD0) と終了区切り文字 (U+FDEF) を持つため、少なくとも 2 文字分の位置を占めます。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// SIZE (x64 8 / x86 8 バイト)
typedef struct SIZE {
INT cx;
INT cy;
} SIZE;
// REOBJECT (x64 72 / x86 56 バイト)
typedef struct REOBJECT {
DWORD cbStruct;
INT cp;
GUID clsid;
IOleObject* poleobj;
IStorage* pstg;
IOleClientSite* polesite;
SIZE sizel;
DWORD dvaspect;
REOBJECT_FLAGS dwFlags;
DWORD dwUser;
} REOBJECT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SIZE
{
public int cx;
public int cy;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct REOBJECT
{
public uint cbStruct;
public int cp;
public Guid clsid;
public IntPtr poleobj;
public IntPtr pstg;
public IntPtr polesite;
public SIZE sizel;
public uint dvaspect;
public uint dwFlags;
public uint dwUser;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SIZE
Public cx As Integer
Public cy As Integer
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure REOBJECT
Public cbStruct As UInteger
Public cp As Integer
Public clsid As Guid
Public poleobj As IntPtr
Public pstg As IntPtr
Public polesite As IntPtr
Public sizel As SIZE
Public dvaspect As UInteger
Public dwFlags As UInteger
Public dwUser As UInteger
End Structureimport ctypes
from ctypes import wintypes
class SIZE(ctypes.Structure):
_fields_ = [
("cx", ctypes.c_int),
("cy", ctypes.c_int),
]
class REOBJECT(ctypes.Structure):
_fields_ = [
("cbStruct", wintypes.DWORD),
("cp", ctypes.c_int),
("clsid", GUID),
("poleobj", ctypes.c_void_p),
("pstg", ctypes.c_void_p),
("polesite", ctypes.c_void_p),
("sizel", SIZE),
("dvaspect", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("dwUser", wintypes.DWORD),
]#[repr(C)]
pub struct SIZE {
pub cx: i32,
pub cy: i32,
}
#[repr(C)]
pub struct REOBJECT {
pub cbStruct: u32,
pub cp: i32,
pub clsid: GUID,
pub poleobj: *mut core::ffi::c_void,
pub pstg: *mut core::ffi::c_void,
pub polesite: *mut core::ffi::c_void,
pub sizel: SIZE,
pub dvaspect: u32,
pub dwFlags: u32,
pub dwUser: u32,
}import "golang.org/x/sys/windows"
type SIZE struct {
cx int32
cy int32
}
type REOBJECT struct {
cbStruct uint32
cp int32
clsid windows.GUID
poleobj uintptr
pstg uintptr
polesite uintptr
sizel SIZE
dvaspect uint32
dwFlags uint32
dwUser uint32
}type
SIZE = record
cx: Integer;
cy: Integer;
end;
REOBJECT = record
cbStruct: DWORD;
cp: Integer;
clsid: TGUID;
poleobj: Pointer;
pstg: Pointer;
polesite: Pointer;
sizel: SIZE;
dvaspect: DWORD;
dwFlags: DWORD;
dwUser: DWORD;
end;const SIZE = extern struct {
cx: i32,
cy: i32,
};
const REOBJECT = extern struct {
cbStruct: u32,
cp: i32,
clsid: GUID,
poleobj: ?*anyopaque,
pstg: ?*anyopaque,
polesite: ?*anyopaque,
sizel: SIZE,
dvaspect: u32,
dwFlags: u32,
dwUser: u32,
};type
SIZE {.bycopy.} = object
cx: int32
cy: int32
REOBJECT {.bycopy.} = object
cbStruct: uint32
cp: int32
clsid: GUID
poleobj: pointer
pstg: pointer
polesite: pointer
sizel: SIZE
dvaspect: uint32
dwFlags: uint32
dwUser: uint32struct SIZE
{
int cx;
int cy;
}
struct REOBJECT
{
uint cbStruct;
int cp;
GUID clsid;
void* poleobj;
void* pstg;
void* polesite;
SIZE sizel;
uint dvaspect;
uint dwFlags;
uint dwUser;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; REOBJECT サイズ: 56 バイト(x86)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; cp : INT (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; clsid : GUID (+8, 16byte) varptr(st)+8 を基点に操作(16byte:入れ子/配列)
; poleobj : IOleObject* (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; pstg : IStorage* (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; polesite : IOleClientSite* (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; sizel : SIZE (+36, 8byte) varptr(st)+36 を基点に操作(8byte:入れ子/配列)
; dvaspect : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwFlags : REOBJECT_FLAGS (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwUser : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; REOBJECT サイズ: 72 バイト(x64)
dim st, 18 ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; cbStruct : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; cp : INT (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; clsid : GUID (+8, 16byte) varptr(st)+8 を基点に操作(16byte:入れ子/配列)
; poleobj : IOleObject* (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pstg : IStorage* (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; polesite : IOleClientSite* (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; sizel : SIZE (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; dvaspect : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwFlags : REOBJECT_FLAGS (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwUser : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global SIZE
#field int cx
#field int cy
#endstruct
#defstruct global REOBJECT
#field int cbStruct
#field int cp
#field GUID clsid
#field intptr poleobj
#field intptr pstg
#field intptr polesite
#field SIZE sizel
#field int dvaspect
#field int dwFlags
#field int dwUser
#endstruct
stdim st, REOBJECT ; NSTRUCT 変数を確保
st->cbStruct = 100
mes "cbStruct=" + st->cbStruct