ホーム › Graphics.DirectDraw › DDVIDEOPORTCAPS
DDVIDEOPORTCAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | 構造体サイズ(バイト数)。呼び出し前に設定する。 |
| dwFlags | DWORD | 4 | +4 | +4 | 有効なメンバを示すフラグの組み合わせ。 |
| dwMaxWidth | DWORD | 4 | +8 | +8 | ビデオポートが扱える最大幅(ピクセル)を示す。 |
| dwMaxVBIWidth | DWORD | 4 | +12 | +12 | VBIデータの最大幅(ピクセル)を示す。 |
| dwMaxHeight | DWORD | 4 | +16 | +16 | ビデオポートが扱える最大高さ(ライン)を示す。 |
| dwVideoPortID | DWORD | 4 | +20 | +20 | ビデオポートの識別子を示す。 |
| dwCaps | DWORD | 4 | +24 | +24 | ビデオポートの能力を示すDDVPCAPS_系フラグ。 |
| dwFX | DWORD | 4 | +28 | +28 | ビデオポートが対応する効果を示すDDVPFX_系フラグ。 |
| dwNumAutoFlipSurfaces | DWORD | 4 | +32 | +32 | 自動フリップ対応の最大サーフェス数を示す。 |
| dwAlignVideoPortBoundary | DWORD | 4 | +36 | +36 | ビデオポート矩形境界のアライメント要件を示す。 |
| dwAlignVideoPortPrescaleWidth | DWORD | 4 | +40 | +40 | プリスケール幅のアライメント要件を示す。 |
| dwAlignVideoPortCropBoundary | DWORD | 4 | +44 | +44 | クロップ境界のアライメント要件を示す。 |
| dwAlignVideoPortCropWidth | DWORD | 4 | +48 | +48 | クロップ幅のアライメント要件を示す。 |
| dwPreshrinkXStep | DWORD | 4 | +52 | +52 | 水平方向プリシュリンクの刻み値を示す。 |
| dwPreshrinkYStep | DWORD | 4 | +56 | +56 | 垂直方向プリシュリンクの刻み値を示す。 |
| dwNumVBIAutoFlipSurfaces | DWORD | 4 | +60 | +60 | VBI自動フリップ対応の最大サーフェス数を示す。 |
| dwNumPreferredAutoflip | DWORD | 4 | +64 | +64 | 推奨される自動フリップサーフェス数を示す。 |
| wNumFilterTapsX | WORD | 2 | +68 | +68 | 水平フィルタのタップ数を示す。 |
| wNumFilterTapsY | WORD | 2 | +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 Structureimport 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: uint16struct 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