Win32 API 日本語リファレンス
ホームUI.Controls › TA_TRANSFORM

TA_TRANSFORM

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

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

フィールド

フィールドサイズx64x86説明
eTransformTypeTA_TRANSFORM_TYPE4+0+0変換の種類(TA_TRANSFORM_TYPE、TATT_*)。
dwTimingFunctionIdDWORD4+4+4適用するタイミング関数の識別子。
dwStartTimeDWORD4+8+8アニメーション開始時刻(ミリ秒)。
dwDurationTimeDWORD4+12+12アニメーションの継続時間(ミリ秒)。
eFlagsTA_TRANSFORM_FLAG4+16+16変換動作を制御するフラグ(TA_TRANSFORM_FLAG、TATF_*)。

各言語での定義

#include <windows.h>

// TA_TRANSFORM  (x64 20 / x86 20 バイト)
typedef struct TA_TRANSFORM {
    TA_TRANSFORM_TYPE eTransformType;
    DWORD dwTimingFunctionId;
    DWORD dwStartTime;
    DWORD dwDurationTime;
    TA_TRANSFORM_FLAG eFlags;
} TA_TRANSFORM;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TA_TRANSFORM
{
    public int eTransformType;
    public uint dwTimingFunctionId;
    public uint dwStartTime;
    public uint dwDurationTime;
    public int eFlags;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure TA_TRANSFORM
    Public eTransformType As Integer
    Public dwTimingFunctionId As UInteger
    Public dwStartTime As UInteger
    Public dwDurationTime As UInteger
    Public eFlags As Integer
End Structure
import ctypes
from ctypes import wintypes

class TA_TRANSFORM(ctypes.Structure):
    _fields_ = [
        ("eTransformType", ctypes.c_int),
        ("dwTimingFunctionId", wintypes.DWORD),
        ("dwStartTime", wintypes.DWORD),
        ("dwDurationTime", wintypes.DWORD),
        ("eFlags", ctypes.c_int),
    ]
#[repr(C)]
pub struct TA_TRANSFORM {
    pub eTransformType: i32,
    pub dwTimingFunctionId: u32,
    pub dwStartTime: u32,
    pub dwDurationTime: u32,
    pub eFlags: i32,
}
import "golang.org/x/sys/windows"

type TA_TRANSFORM struct {
	eTransformType int32
	dwTimingFunctionId uint32
	dwStartTime uint32
	dwDurationTime uint32
	eFlags int32
}
type
  TA_TRANSFORM = record
    eTransformType: Integer;
    dwTimingFunctionId: DWORD;
    dwStartTime: DWORD;
    dwDurationTime: DWORD;
    eFlags: Integer;
  end;
const TA_TRANSFORM = extern struct {
    eTransformType: i32,
    dwTimingFunctionId: u32,
    dwStartTime: u32,
    dwDurationTime: u32,
    eFlags: i32,
};
type
  TA_TRANSFORM {.bycopy.} = object
    eTransformType: int32
    dwTimingFunctionId: uint32
    dwStartTime: uint32
    dwDurationTime: uint32
    eFlags: int32
struct TA_TRANSFORM
{
    int eTransformType;
    uint dwTimingFunctionId;
    uint dwStartTime;
    uint dwDurationTime;
    int eFlags;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TA_TRANSFORM サイズ: 20 バイト(x64)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; eTransformType : TA_TRANSFORM_TYPE (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwTimingFunctionId : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwStartTime : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwDurationTime : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; eFlags : TA_TRANSFORM_FLAG (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global TA_TRANSFORM
    #field int eTransformType
    #field int dwTimingFunctionId
    #field int dwStartTime
    #field int dwDurationTime
    #field int eFlags
#endstruct

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