ホーム › Media.DirectShow › AM_PROPERTY_SPHLI
AM_PROPERTY_SPHLI
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| HLISS | WORD | 2 | +0 | +0 | 現在の選択のハイライト状態です。 |
| Reserved | WORD | 2 | +2 | +2 | 内部使用のために予約済みです。使用したり設定したりしないでください。 |
| StartPTM | DWORD | 4 | +4 | +4 | 開始プレゼンテーション時刻を 90,000 で割った値です。 |
| EndPTM | DWORD | 4 | +8 | +8 | 終了プレゼンテーション時刻を 90,000 で割った値です。 |
| StartX | WORD | 2 | +12 | +12 | 現在のハイライトボタンの開始 x 座標のピクセル位置です。 |
| StartY | WORD | 2 | +14 | +14 | 現在のハイライトボタンの開始 y 座標のピクセル位置です。 |
| StopX | WORD | 2 | +16 | +16 | 現在のハイライトボタンの終了 x 座標のピクセル位置です。 |
| StopY | WORD | 2 | +18 | +18 | 現在のハイライトボタンの終了 y 座標のピクセル位置です。 |
| ColCon | AM_COLCON | 4 | +20 | +20 | AM_COLCON 型のカラーコントラストの記述です。 |
公式ドキュメント
[このページに関連する機能である DirectShow は、レガシー機能です。MediaPlayer、IMFMediaEngine、および Audio/Video Capture in Media Foundation に置き換えられています。これらの機能は Windows 10 および Windows 11 向けに最適化されています。Microsoft は、可能な限り新しいコードで DirectShow ではなく MediaPlayer、IMFMediaEngine、Audio/Video Capture in Media Foundation を使用することを強く推奨します。また、レガシー API を使用している既存のコードも、可能であれば新しい API を使用するように書き換えることを推奨します。]
DVD のハイライト情報から、現在選択されているボタンを記述します。
解説(Remarks)
AM_PROPERTY_DVDSUBPIC_HLI プロパティがこの構造体を使用します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// AM_COLCON (x64 4 / x86 4 バイト)
typedef struct AM_COLCON {
BYTE _bitfield1;
BYTE _bitfield2;
BYTE _bitfield3;
BYTE _bitfield4;
} AM_COLCON;
// AM_PROPERTY_SPHLI (x64 24 / x86 24 バイト)
typedef struct AM_PROPERTY_SPHLI {
WORD HLISS;
WORD Reserved;
DWORD StartPTM;
DWORD EndPTM;
WORD StartX;
WORD StartY;
WORD StopX;
WORD StopY;
AM_COLCON ColCon;
} AM_PROPERTY_SPHLI;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AM_COLCON
{
public byte _bitfield1;
public byte _bitfield2;
public byte _bitfield3;
public byte _bitfield4;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AM_PROPERTY_SPHLI
{
public ushort HLISS;
public ushort Reserved;
public uint StartPTM;
public uint EndPTM;
public ushort StartX;
public ushort StartY;
public ushort StopX;
public ushort StopY;
public AM_COLCON ColCon;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AM_COLCON
Public _bitfield1 As Byte
Public _bitfield2 As Byte
Public _bitfield3 As Byte
Public _bitfield4 As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AM_PROPERTY_SPHLI
Public HLISS As UShort
Public Reserved As UShort
Public StartPTM As UInteger
Public EndPTM As UInteger
Public StartX As UShort
Public StartY As UShort
Public StopX As UShort
Public StopY As UShort
Public ColCon As AM_COLCON
End Structureimport ctypes
from ctypes import wintypes
class AM_COLCON(ctypes.Structure):
_fields_ = [
("_bitfield1", ctypes.c_ubyte),
("_bitfield2", ctypes.c_ubyte),
("_bitfield3", ctypes.c_ubyte),
("_bitfield4", ctypes.c_ubyte),
]
class AM_PROPERTY_SPHLI(ctypes.Structure):
_fields_ = [
("HLISS", ctypes.c_ushort),
("Reserved", ctypes.c_ushort),
("StartPTM", wintypes.DWORD),
("EndPTM", wintypes.DWORD),
("StartX", ctypes.c_ushort),
("StartY", ctypes.c_ushort),
("StopX", ctypes.c_ushort),
("StopY", ctypes.c_ushort),
("ColCon", AM_COLCON),
]#[repr(C)]
pub struct AM_COLCON {
pub _bitfield1: u8,
pub _bitfield2: u8,
pub _bitfield3: u8,
pub _bitfield4: u8,
}
#[repr(C)]
pub struct AM_PROPERTY_SPHLI {
pub HLISS: u16,
pub Reserved: u16,
pub StartPTM: u32,
pub EndPTM: u32,
pub StartX: u16,
pub StartY: u16,
pub StopX: u16,
pub StopY: u16,
pub ColCon: AM_COLCON,
}import "golang.org/x/sys/windows"
type AM_COLCON struct {
_bitfield1 byte
_bitfield2 byte
_bitfield3 byte
_bitfield4 byte
}
type AM_PROPERTY_SPHLI struct {
HLISS uint16
Reserved uint16
StartPTM uint32
EndPTM uint32
StartX uint16
StartY uint16
StopX uint16
StopY uint16
ColCon AM_COLCON
}type
AM_COLCON = record
_bitfield1: Byte;
_bitfield2: Byte;
_bitfield3: Byte;
_bitfield4: Byte;
end;
AM_PROPERTY_SPHLI = record
HLISS: Word;
Reserved: Word;
StartPTM: DWORD;
EndPTM: DWORD;
StartX: Word;
StartY: Word;
StopX: Word;
StopY: Word;
ColCon: AM_COLCON;
end;const AM_COLCON = extern struct {
_bitfield1: u8,
_bitfield2: u8,
_bitfield3: u8,
_bitfield4: u8,
};
const AM_PROPERTY_SPHLI = extern struct {
HLISS: u16,
Reserved: u16,
StartPTM: u32,
EndPTM: u32,
StartX: u16,
StartY: u16,
StopX: u16,
StopY: u16,
ColCon: AM_COLCON,
};type
AM_COLCON {.bycopy.} = object
_bitfield1: uint8
_bitfield2: uint8
_bitfield3: uint8
_bitfield4: uint8
AM_PROPERTY_SPHLI {.bycopy.} = object
HLISS: uint16
Reserved: uint16
StartPTM: uint32
EndPTM: uint32
StartX: uint16
StartY: uint16
StopX: uint16
StopY: uint16
ColCon: AM_COLCONstruct AM_COLCON
{
ubyte _bitfield1;
ubyte _bitfield2;
ubyte _bitfield3;
ubyte _bitfield4;
}
struct AM_PROPERTY_SPHLI
{
ushort HLISS;
ushort Reserved;
uint StartPTM;
uint EndPTM;
ushort StartX;
ushort StartY;
ushort StopX;
ushort StopY;
AM_COLCON ColCon;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; AM_PROPERTY_SPHLI サイズ: 24 バイト(x64)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; HLISS : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; Reserved : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; StartPTM : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; EndPTM : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; StartX : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; StartY : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; StopX : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; StopY : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; ColCon : AM_COLCON (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global AM_COLCON
#field byte _bitfield1
#field byte _bitfield2
#field byte _bitfield3
#field byte _bitfield4
#endstruct
#defstruct global AM_PROPERTY_SPHLI
#field short HLISS
#field short Reserved
#field int StartPTM
#field int EndPTM
#field short StartX
#field short StartY
#field short StopX
#field short StopY
#field AM_COLCON ColCon
#endstruct
stdim st, AM_PROPERTY_SPHLI ; NSTRUCT 変数を確保
st->HLISS = 100
mes "HLISS=" + st->HLISS