ホーム › Devices.Display › DisplayMode
DisplayMode
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| DeviceName | WCHAR | 64 | +0 | +0 | 対象ディスプレイデバイス名を表すワイド文字列。 |
| devMode | DEVMODEW | 216/208 | +64 | +64 | ディスプレイ設定を保持するDEVMODEW構造体。解像度・色深度・周波数等を含む。 |
各言語での定義
#include <windows.h>
// DEVMODEW (x64 216 / x86 208 バイト)
typedef struct DEVMODEW {
WCHAR dmDeviceName[32];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DEVMODE_FIELD_FLAGS dmFields;
_Anonymous1_e__Union Anonymous1;
DEVMODE_COLOR dmColor;
DEVMODE_DUPLEX dmDuplex;
SHORT dmYResolution;
DEVMODE_TRUETYPE_OPTION dmTTOption;
DEVMODE_COLLATE dmCollate;
WCHAR dmFormName[32];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
_Anonymous2_e__Union Anonymous2;
DWORD dmDisplayFrequency;
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
DWORD dmPanningWidth;
DWORD dmPanningHeight;
} DEVMODEW;
// DisplayMode (x64 280 / x86 272 バイト)
typedef struct DisplayMode {
WCHAR DeviceName[32];
DEVMODEW devMode;
} DisplayMode;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEVMODEW
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmDeviceName;
public ushort dmSpecVersion;
public ushort dmDriverVersion;
public ushort dmSize;
public ushort dmDriverExtra;
public uint dmFields;
public _Anonymous1_e__Union Anonymous1;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmFormName;
public ushort dmLogPixels;
public uint dmBitsPerPel;
public uint dmPelsWidth;
public uint dmPelsHeight;
public _Anonymous2_e__Union Anonymous2;
public uint dmDisplayFrequency;
public uint dmICMMethod;
public uint dmICMIntent;
public uint dmMediaType;
public uint dmDitherType;
public uint dmReserved1;
public uint dmReserved2;
public uint dmPanningWidth;
public uint dmPanningHeight;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DisplayMode
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string DeviceName;
public DEVMODEW devMode;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEVMODEW
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public dmDeviceName As String
Public dmSpecVersion As UShort
Public dmDriverVersion As UShort
Public dmSize As UShort
Public dmDriverExtra As UShort
Public dmFields As UInteger
Public Anonymous1 As _Anonymous1_e__Union
Public dmColor As Short
Public dmDuplex As Short
Public dmYResolution As Short
Public dmTTOption As Short
Public dmCollate As Short
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public dmFormName As String
Public dmLogPixels As UShort
Public dmBitsPerPel As UInteger
Public dmPelsWidth As UInteger
Public dmPelsHeight As UInteger
Public Anonymous2 As _Anonymous2_e__Union
Public dmDisplayFrequency As UInteger
Public dmICMMethod As UInteger
Public dmICMIntent As UInteger
Public dmMediaType As UInteger
Public dmDitherType As UInteger
Public dmReserved1 As UInteger
Public dmReserved2 As UInteger
Public dmPanningWidth As UInteger
Public dmPanningHeight As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DisplayMode
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public DeviceName As String
Public devMode As DEVMODEW
End Structureimport ctypes
from ctypes import wintypes
class DEVMODEW(ctypes.Structure):
_fields_ = [
("dmDeviceName", ctypes.c_wchar * 32),
("dmSpecVersion", ctypes.c_ushort),
("dmDriverVersion", ctypes.c_ushort),
("dmSize", ctypes.c_ushort),
("dmDriverExtra", ctypes.c_ushort),
("dmFields", wintypes.DWORD),
("Anonymous1", _Anonymous1_e__Union),
("dmColor", ctypes.c_short),
("dmDuplex", ctypes.c_short),
("dmYResolution", ctypes.c_short),
("dmTTOption", ctypes.c_short),
("dmCollate", ctypes.c_short),
("dmFormName", ctypes.c_wchar * 32),
("dmLogPixels", ctypes.c_ushort),
("dmBitsPerPel", wintypes.DWORD),
("dmPelsWidth", wintypes.DWORD),
("dmPelsHeight", wintypes.DWORD),
("Anonymous2", _Anonymous2_e__Union),
("dmDisplayFrequency", wintypes.DWORD),
("dmICMMethod", wintypes.DWORD),
("dmICMIntent", wintypes.DWORD),
("dmMediaType", wintypes.DWORD),
("dmDitherType", wintypes.DWORD),
("dmReserved1", wintypes.DWORD),
("dmReserved2", wintypes.DWORD),
("dmPanningWidth", wintypes.DWORD),
("dmPanningHeight", wintypes.DWORD),
]
class DisplayMode(ctypes.Structure):
_fields_ = [
("DeviceName", ctypes.c_wchar * 32),
("devMode", DEVMODEW),
]#[repr(C)]
pub struct DEVMODEW {
pub dmDeviceName: [u16; 32],
pub dmSpecVersion: u16,
pub dmDriverVersion: u16,
pub dmSize: u16,
pub dmDriverExtra: u16,
pub dmFields: u32,
pub Anonymous1: _Anonymous1_e__Union,
pub dmColor: i16,
pub dmDuplex: i16,
pub dmYResolution: i16,
pub dmTTOption: i16,
pub dmCollate: i16,
pub dmFormName: [u16; 32],
pub dmLogPixels: u16,
pub dmBitsPerPel: u32,
pub dmPelsWidth: u32,
pub dmPelsHeight: u32,
pub Anonymous2: _Anonymous2_e__Union,
pub dmDisplayFrequency: u32,
pub dmICMMethod: u32,
pub dmICMIntent: u32,
pub dmMediaType: u32,
pub dmDitherType: u32,
pub dmReserved1: u32,
pub dmReserved2: u32,
pub dmPanningWidth: u32,
pub dmPanningHeight: u32,
}
#[repr(C)]
pub struct DisplayMode {
pub DeviceName: [u16; 32],
pub devMode: DEVMODEW,
}import "golang.org/x/sys/windows"
type DEVMODEW struct {
dmDeviceName [32]uint16
dmSpecVersion uint16
dmDriverVersion uint16
dmSize uint16
dmDriverExtra uint16
dmFields uint32
Anonymous1 _Anonymous1_e__Union
dmColor int16
dmDuplex int16
dmYResolution int16
dmTTOption int16
dmCollate int16
dmFormName [32]uint16
dmLogPixels uint16
dmBitsPerPel uint32
dmPelsWidth uint32
dmPelsHeight uint32
Anonymous2 _Anonymous2_e__Union
dmDisplayFrequency uint32
dmICMMethod uint32
dmICMIntent uint32
dmMediaType uint32
dmDitherType uint32
dmReserved1 uint32
dmReserved2 uint32
dmPanningWidth uint32
dmPanningHeight uint32
}
type DisplayMode struct {
DeviceName [32]uint16
devMode DEVMODEW
}type
DEVMODEW = record
dmDeviceName: array[0..31] of WideChar;
dmSpecVersion: Word;
dmDriverVersion: Word;
dmSize: Word;
dmDriverExtra: Word;
dmFields: DWORD;
Anonymous1: _Anonymous1_e__Union;
dmColor: Smallint;
dmDuplex: Smallint;
dmYResolution: Smallint;
dmTTOption: Smallint;
dmCollate: Smallint;
dmFormName: array[0..31] of WideChar;
dmLogPixels: Word;
dmBitsPerPel: DWORD;
dmPelsWidth: DWORD;
dmPelsHeight: DWORD;
Anonymous2: _Anonymous2_e__Union;
dmDisplayFrequency: DWORD;
dmICMMethod: DWORD;
dmICMIntent: DWORD;
dmMediaType: DWORD;
dmDitherType: DWORD;
dmReserved1: DWORD;
dmReserved2: DWORD;
dmPanningWidth: DWORD;
dmPanningHeight: DWORD;
end;
DisplayMode = record
DeviceName: array[0..31] of WideChar;
devMode: DEVMODEW;
end;const DEVMODEW = extern struct {
dmDeviceName: [32]u16,
dmSpecVersion: u16,
dmDriverVersion: u16,
dmSize: u16,
dmDriverExtra: u16,
dmFields: u32,
Anonymous1: _Anonymous1_e__Union,
dmColor: i16,
dmDuplex: i16,
dmYResolution: i16,
dmTTOption: i16,
dmCollate: i16,
dmFormName: [32]u16,
dmLogPixels: u16,
dmBitsPerPel: u32,
dmPelsWidth: u32,
dmPelsHeight: u32,
Anonymous2: _Anonymous2_e__Union,
dmDisplayFrequency: u32,
dmICMMethod: u32,
dmICMIntent: u32,
dmMediaType: u32,
dmDitherType: u32,
dmReserved1: u32,
dmReserved2: u32,
dmPanningWidth: u32,
dmPanningHeight: u32,
};
const DisplayMode = extern struct {
DeviceName: [32]u16,
devMode: DEVMODEW,
};type
DEVMODEW {.bycopy.} = object
dmDeviceName: array[32, uint16]
dmSpecVersion: uint16
dmDriverVersion: uint16
dmSize: uint16
dmDriverExtra: uint16
dmFields: uint32
Anonymous1: _Anonymous1_e__Union
dmColor: int16
dmDuplex: int16
dmYResolution: int16
dmTTOption: int16
dmCollate: int16
dmFormName: array[32, uint16]
dmLogPixels: uint16
dmBitsPerPel: uint32
dmPelsWidth: uint32
dmPelsHeight: uint32
Anonymous2: _Anonymous2_e__Union
dmDisplayFrequency: uint32
dmICMMethod: uint32
dmICMIntent: uint32
dmMediaType: uint32
dmDitherType: uint32
dmReserved1: uint32
dmReserved2: uint32
dmPanningWidth: uint32
dmPanningHeight: uint32
DisplayMode {.bycopy.} = object
DeviceName: array[32, uint16]
devMode: DEVMODEWstruct DEVMODEW
{
wchar[32] dmDeviceName;
ushort dmSpecVersion;
ushort dmDriverVersion;
ushort dmSize;
ushort dmDriverExtra;
uint dmFields;
_Anonymous1_e__Union Anonymous1;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
wchar[32] dmFormName;
ushort dmLogPixels;
uint dmBitsPerPel;
uint dmPelsWidth;
uint dmPelsHeight;
_Anonymous2_e__Union Anonymous2;
uint dmDisplayFrequency;
uint dmICMMethod;
uint dmICMIntent;
uint dmMediaType;
uint dmDitherType;
uint dmReserved1;
uint dmReserved2;
uint dmPanningWidth;
uint dmPanningHeight;
}
struct DisplayMode
{
wchar[32] DeviceName;
DEVMODEW devMode;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DisplayMode サイズ: 272 バイト(x86)
dim st, 68 ; 4byte整数×68(構造体サイズ 272 / 4 切り上げ)
; DeviceName : WCHAR (+0, 64byte) varptr(st)+0 を基点に操作(64byte:入れ子/配列)
; devMode : DEVMODEW (+64, 208byte) varptr(st)+64 を基点に操作(208byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DisplayMode サイズ: 280 バイト(x64)
dim st, 70 ; 4byte整数×70(構造体サイズ 280 / 4 切り上げ)
; DeviceName : WCHAR (+0, 64byte) varptr(st)+0 を基点に操作(64byte:入れ子/配列)
; devMode : DEVMODEW (+64, 216byte) varptr(st)+64 を基点に操作(216byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DEVMODEW
#field wchar dmDeviceName 32
#field short dmSpecVersion
#field short dmDriverVersion
#field short dmSize
#field short dmDriverExtra
#field int dmFields
#field byte Anonymous1 8
#field short dmColor
#field short dmDuplex
#field short dmYResolution
#field short dmTTOption
#field short dmCollate
#field wchar dmFormName 32
#field short dmLogPixels
#field int dmBitsPerPel
#field int dmPelsWidth
#field int dmPelsHeight
#field byte Anonymous2 4
#field int dmDisplayFrequency
#field int dmICMMethod
#field int dmICMIntent
#field int dmMediaType
#field int dmDitherType
#field int dmReserved1
#field int dmReserved2
#field int dmPanningWidth
#field int dmPanningHeight
#endstruct
#defstruct global DisplayMode
#field wchar DeviceName 32
#field DEVMODEW devMode
#endstruct
stdim st, DisplayMode ; NSTRUCT 変数を確保