Win32 API 日本語リファレンス
ホームMedia.DirectShow › AM_PROPERTY_SPHLI

AM_PROPERTY_SPHLI

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

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

フィールド

フィールドサイズx64x86説明
HLISSWORD2+0+0現在の選択のハイライト状態です。
ReservedWORD2+2+2内部使用のために予約済みです。使用したり設定したりしないでください。
StartPTMDWORD4+4+4開始プレゼンテーション時刻を 90,000 で割った値です。
EndPTMDWORD4+8+8終了プレゼンテーション時刻を 90,000 で割った値です。
StartXWORD2+12+12現在のハイライトボタンの開始 x 座標のピクセル位置です。
StartYWORD2+14+14現在のハイライトボタンの開始 y 座標のピクセル位置です。
StopXWORD2+16+16現在のハイライトボタンの終了 x 座標のピクセル位置です。
StopYWORD2+18+18現在のハイライトボタンの終了 y 座標のピクセル位置です。
ColConAM_COLCON4+20+20AM_COLCON 型のカラーコントラストの記述です。

公式ドキュメント

[このページに関連する機能である DirectShow は、レガシー機能です。MediaPlayerIMFMediaEngine、および Audio/Video Capture in Media Foundation に置き換えられています。これらの機能は Windows 10 および Windows 11 向けに最適化されています。Microsoft は、可能な限り新しいコードで DirectShow ではなく MediaPlayerIMFMediaEngineAudio/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)

各言語での定義

#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 Structure
import 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_COLCON
struct 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