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

DDVIDEOPORTCAPS

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

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0構造体サイズ(バイト数)。呼び出し前に設定する。
dwFlagsDWORD4+4+4有効なメンバを示すフラグの組み合わせ。
dwMaxWidthDWORD4+8+8ビデオポートが扱える最大幅(ピクセル)を示す。
dwMaxVBIWidthDWORD4+12+12VBIデータの最大幅(ピクセル)を示す。
dwMaxHeightDWORD4+16+16ビデオポートが扱える最大高さ(ライン)を示す。
dwVideoPortIDDWORD4+20+20ビデオポートの識別子を示す。
dwCapsDWORD4+24+24ビデオポートの能力を示すDDVPCAPS_系フラグ。
dwFXDWORD4+28+28ビデオポートが対応する効果を示すDDVPFX_系フラグ。
dwNumAutoFlipSurfacesDWORD4+32+32自動フリップ対応の最大サーフェス数を示す。
dwAlignVideoPortBoundaryDWORD4+36+36ビデオポート矩形境界のアライメント要件を示す。
dwAlignVideoPortPrescaleWidthDWORD4+40+40プリスケール幅のアライメント要件を示す。
dwAlignVideoPortCropBoundaryDWORD4+44+44クロップ境界のアライメント要件を示す。
dwAlignVideoPortCropWidthDWORD4+48+48クロップ幅のアライメント要件を示す。
dwPreshrinkXStepDWORD4+52+52水平方向プリシュリンクの刻み値を示す。
dwPreshrinkYStepDWORD4+56+56垂直方向プリシュリンクの刻み値を示す。
dwNumVBIAutoFlipSurfacesDWORD4+60+60VBI自動フリップ対応の最大サーフェス数を示す。
dwNumPreferredAutoflipDWORD4+64+64推奨される自動フリップサーフェス数を示す。
wNumFilterTapsXWORD2+68+68水平フィルタのタップ数を示す。
wNumFilterTapsYWORD2+70+70垂直フィルタのタップ数を示す。

各言語での定義

#include <windows.h>

// DDVIDEOPORTCAPS  (x64 72 / x86 72 バイト)
typedef struct DDVIDEOPORTCAPS {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwMaxWidth;
    DWORD dwMaxVBIWidth;
    DWORD dwMaxHeight;
    DWORD dwVideoPortID;
    DWORD dwCaps;
    DWORD dwFX;
    DWORD dwNumAutoFlipSurfaces;
    DWORD dwAlignVideoPortBoundary;
    DWORD dwAlignVideoPortPrescaleWidth;
    DWORD dwAlignVideoPortCropBoundary;
    DWORD dwAlignVideoPortCropWidth;
    DWORD dwPreshrinkXStep;
    DWORD dwPreshrinkYStep;
    DWORD dwNumVBIAutoFlipSurfaces;
    DWORD dwNumPreferredAutoflip;
    WORD wNumFilterTapsX;
    WORD wNumFilterTapsY;
} DDVIDEOPORTCAPS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDVIDEOPORTCAPS
{
    public uint dwSize;
    public uint dwFlags;
    public uint dwMaxWidth;
    public uint dwMaxVBIWidth;
    public uint dwMaxHeight;
    public uint dwVideoPortID;
    public uint dwCaps;
    public uint dwFX;
    public uint dwNumAutoFlipSurfaces;
    public uint dwAlignVideoPortBoundary;
    public uint dwAlignVideoPortPrescaleWidth;
    public uint dwAlignVideoPortCropBoundary;
    public uint dwAlignVideoPortCropWidth;
    public uint dwPreshrinkXStep;
    public uint dwPreshrinkYStep;
    public uint dwNumVBIAutoFlipSurfaces;
    public uint dwNumPreferredAutoflip;
    public ushort wNumFilterTapsX;
    public ushort wNumFilterTapsY;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDVIDEOPORTCAPS
    Public dwSize As UInteger
    Public dwFlags As UInteger
    Public dwMaxWidth As UInteger
    Public dwMaxVBIWidth As UInteger
    Public dwMaxHeight As UInteger
    Public dwVideoPortID As UInteger
    Public dwCaps As UInteger
    Public dwFX As UInteger
    Public dwNumAutoFlipSurfaces As UInteger
    Public dwAlignVideoPortBoundary As UInteger
    Public dwAlignVideoPortPrescaleWidth As UInteger
    Public dwAlignVideoPortCropBoundary As UInteger
    Public dwAlignVideoPortCropWidth As UInteger
    Public dwPreshrinkXStep As UInteger
    Public dwPreshrinkYStep As UInteger
    Public dwNumVBIAutoFlipSurfaces As UInteger
    Public dwNumPreferredAutoflip As UInteger
    Public wNumFilterTapsX As UShort
    Public wNumFilterTapsY As UShort
End Structure
import ctypes
from ctypes import wintypes

class DDVIDEOPORTCAPS(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("dwMaxWidth", wintypes.DWORD),
        ("dwMaxVBIWidth", wintypes.DWORD),
        ("dwMaxHeight", wintypes.DWORD),
        ("dwVideoPortID", wintypes.DWORD),
        ("dwCaps", wintypes.DWORD),
        ("dwFX", wintypes.DWORD),
        ("dwNumAutoFlipSurfaces", wintypes.DWORD),
        ("dwAlignVideoPortBoundary", wintypes.DWORD),
        ("dwAlignVideoPortPrescaleWidth", wintypes.DWORD),
        ("dwAlignVideoPortCropBoundary", wintypes.DWORD),
        ("dwAlignVideoPortCropWidth", wintypes.DWORD),
        ("dwPreshrinkXStep", wintypes.DWORD),
        ("dwPreshrinkYStep", wintypes.DWORD),
        ("dwNumVBIAutoFlipSurfaces", wintypes.DWORD),
        ("dwNumPreferredAutoflip", wintypes.DWORD),
        ("wNumFilterTapsX", ctypes.c_ushort),
        ("wNumFilterTapsY", ctypes.c_ushort),
    ]
#[repr(C)]
pub struct DDVIDEOPORTCAPS {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwMaxWidth: u32,
    pub dwMaxVBIWidth: u32,
    pub dwMaxHeight: u32,
    pub dwVideoPortID: u32,
    pub dwCaps: u32,
    pub dwFX: u32,
    pub dwNumAutoFlipSurfaces: u32,
    pub dwAlignVideoPortBoundary: u32,
    pub dwAlignVideoPortPrescaleWidth: u32,
    pub dwAlignVideoPortCropBoundary: u32,
    pub dwAlignVideoPortCropWidth: u32,
    pub dwPreshrinkXStep: u32,
    pub dwPreshrinkYStep: u32,
    pub dwNumVBIAutoFlipSurfaces: u32,
    pub dwNumPreferredAutoflip: u32,
    pub wNumFilterTapsX: u16,
    pub wNumFilterTapsY: u16,
}
import "golang.org/x/sys/windows"

type DDVIDEOPORTCAPS struct {
	dwSize uint32
	dwFlags uint32
	dwMaxWidth uint32
	dwMaxVBIWidth uint32
	dwMaxHeight uint32
	dwVideoPortID uint32
	dwCaps uint32
	dwFX uint32
	dwNumAutoFlipSurfaces uint32
	dwAlignVideoPortBoundary uint32
	dwAlignVideoPortPrescaleWidth uint32
	dwAlignVideoPortCropBoundary uint32
	dwAlignVideoPortCropWidth uint32
	dwPreshrinkXStep uint32
	dwPreshrinkYStep uint32
	dwNumVBIAutoFlipSurfaces uint32
	dwNumPreferredAutoflip uint32
	wNumFilterTapsX uint16
	wNumFilterTapsY uint16
}
type
  DDVIDEOPORTCAPS = record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwMaxWidth: DWORD;
    dwMaxVBIWidth: DWORD;
    dwMaxHeight: DWORD;
    dwVideoPortID: DWORD;
    dwCaps: DWORD;
    dwFX: DWORD;
    dwNumAutoFlipSurfaces: DWORD;
    dwAlignVideoPortBoundary: DWORD;
    dwAlignVideoPortPrescaleWidth: DWORD;
    dwAlignVideoPortCropBoundary: DWORD;
    dwAlignVideoPortCropWidth: DWORD;
    dwPreshrinkXStep: DWORD;
    dwPreshrinkYStep: DWORD;
    dwNumVBIAutoFlipSurfaces: DWORD;
    dwNumPreferredAutoflip: DWORD;
    wNumFilterTapsX: Word;
    wNumFilterTapsY: Word;
  end;
const DDVIDEOPORTCAPS = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwMaxWidth: u32,
    dwMaxVBIWidth: u32,
    dwMaxHeight: u32,
    dwVideoPortID: u32,
    dwCaps: u32,
    dwFX: u32,
    dwNumAutoFlipSurfaces: u32,
    dwAlignVideoPortBoundary: u32,
    dwAlignVideoPortPrescaleWidth: u32,
    dwAlignVideoPortCropBoundary: u32,
    dwAlignVideoPortCropWidth: u32,
    dwPreshrinkXStep: u32,
    dwPreshrinkYStep: u32,
    dwNumVBIAutoFlipSurfaces: u32,
    dwNumPreferredAutoflip: u32,
    wNumFilterTapsX: u16,
    wNumFilterTapsY: u16,
};
type
  DDVIDEOPORTCAPS {.bycopy.} = object
    dwSize: uint32
    dwFlags: uint32
    dwMaxWidth: uint32
    dwMaxVBIWidth: uint32
    dwMaxHeight: uint32
    dwVideoPortID: uint32
    dwCaps: uint32
    dwFX: uint32
    dwNumAutoFlipSurfaces: uint32
    dwAlignVideoPortBoundary: uint32
    dwAlignVideoPortPrescaleWidth: uint32
    dwAlignVideoPortCropBoundary: uint32
    dwAlignVideoPortCropWidth: uint32
    dwPreshrinkXStep: uint32
    dwPreshrinkYStep: uint32
    dwNumVBIAutoFlipSurfaces: uint32
    dwNumPreferredAutoflip: uint32
    wNumFilterTapsX: uint16
    wNumFilterTapsY: uint16
struct DDVIDEOPORTCAPS
{
    uint dwSize;
    uint dwFlags;
    uint dwMaxWidth;
    uint dwMaxVBIWidth;
    uint dwMaxHeight;
    uint dwVideoPortID;
    uint dwCaps;
    uint dwFX;
    uint dwNumAutoFlipSurfaces;
    uint dwAlignVideoPortBoundary;
    uint dwAlignVideoPortPrescaleWidth;
    uint dwAlignVideoPortCropBoundary;
    uint dwAlignVideoPortCropWidth;
    uint dwPreshrinkXStep;
    uint dwPreshrinkYStep;
    uint dwNumVBIAutoFlipSurfaces;
    uint dwNumPreferredAutoflip;
    ushort wNumFilterTapsX;
    ushort wNumFilterTapsY;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDVIDEOPORTCAPS サイズ: 72 バイト(x64)
dim st, 18    ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwMaxWidth : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwMaxVBIWidth : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwMaxHeight : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwVideoPortID : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwCaps : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwFX : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwNumAutoFlipSurfaces : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwAlignVideoPortBoundary : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwAlignVideoPortPrescaleWidth : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwAlignVideoPortCropBoundary : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwAlignVideoPortCropWidth : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwPreshrinkXStep : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwPreshrinkYStep : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwNumVBIAutoFlipSurfaces : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwNumPreferredAutoflip : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; wNumFilterTapsX : WORD (+68, 2byte)  wpoke st,68,値  /  値 = wpeek(st,68)
; wNumFilterTapsY : WORD (+70, 2byte)  wpoke st,70,値  /  値 = wpeek(st,70)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DDVIDEOPORTCAPS
    #field int dwSize
    #field int dwFlags
    #field int dwMaxWidth
    #field int dwMaxVBIWidth
    #field int dwMaxHeight
    #field int dwVideoPortID
    #field int dwCaps
    #field int dwFX
    #field int dwNumAutoFlipSurfaces
    #field int dwAlignVideoPortBoundary
    #field int dwAlignVideoPortPrescaleWidth
    #field int dwAlignVideoPortCropBoundary
    #field int dwAlignVideoPortCropWidth
    #field int dwPreshrinkXStep
    #field int dwPreshrinkYStep
    #field int dwNumVBIAutoFlipSurfaces
    #field int dwNumPreferredAutoflip
    #field short wNumFilterTapsX
    #field short wNumFilterTapsY
#endstruct

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