ホーム › UI.Controls › CCINFOA
CCINFOA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| szClass | CHAR | 32 | +0 | +0 | コントロールのウィンドウクラス名(ANSI固定長バッファ)。 |
| flOptions | DWORD | 4 | +32 | +32 | コントロールのオプションフラグ。 |
| szDesc | CHAR | 32 | +36 | +36 | コントロールの説明文字列(ANSI固定長バッファ)。 |
| cxDefault | DWORD | 4 | +68 | +68 | 既定の幅(ダイアログ単位)。 |
| cyDefault | DWORD | 4 | +72 | +72 | 既定の高さ(ダイアログ単位)。 |
| flStyleDefault | DWORD | 4 | +76 | +76 | 既定のウィンドウスタイル。 |
| flExtStyleDefault | DWORD | 4 | +80 | +80 | 既定の拡張ウィンドウスタイル。 |
| flCtrlTypeMask | DWORD | 4 | +84 | +84 | コントロール種別を示すマスク。 |
| szTextDefault | CHAR | 256 | +88 | +88 | 既定の表示テキスト(ANSI固定長バッファ)。 |
| cStyleFlags | INT | 4 | +344 | +344 | aStyleFlags配列の要素数。 |
| aStyleFlags | CCSTYLEFLAGA* | 8/4 | +352 | +348 | スタイルフラグ定義の配列へのポインター(CCSTYLEFLAGA)。 |
| lpfnStyle | LPFNCCSTYLEA | 8/4 | +360 | +352 | スタイル編集ダイアログを表示するコールバック(LPFNCCSTYLEA)。 |
| lpfnSizeToText | LPFNCCSIZETOTEXTA | 8/4 | +368 | +356 | テキストに合わせたサイズを計算するコールバック(LPFNCCSIZETOTEXTA)。 |
| dwReserved1 | DWORD | 4 | +376 | +360 | 予約済み。使用しない。 |
| dwReserved2 | DWORD | 4 | +380 | +364 | 予約済み。使用しない。 |
各言語での定義
#include <windows.h>
// CCINFOA (x64 384 / x86 368 バイト)
typedef struct CCINFOA {
CHAR szClass[32];
DWORD flOptions;
CHAR szDesc[32];
DWORD cxDefault;
DWORD cyDefault;
DWORD flStyleDefault;
DWORD flExtStyleDefault;
DWORD flCtrlTypeMask;
CHAR szTextDefault[256];
INT cStyleFlags;
CCSTYLEFLAGA* aStyleFlags;
LPFNCCSTYLEA lpfnStyle;
LPFNCCSIZETOTEXTA lpfnSizeToText;
DWORD dwReserved1;
DWORD dwReserved2;
} CCINFOA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CCINFOA
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public sbyte[] szClass;
public uint flOptions;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public sbyte[] szDesc;
public uint cxDefault;
public uint cyDefault;
public uint flStyleDefault;
public uint flExtStyleDefault;
public uint flCtrlTypeMask;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public sbyte[] szTextDefault;
public int cStyleFlags;
public IntPtr aStyleFlags;
public IntPtr lpfnStyle;
public IntPtr lpfnSizeToText;
public uint dwReserved1;
public uint dwReserved2;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CCINFOA
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public szClass() As SByte
Public flOptions As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public szDesc() As SByte
Public cxDefault As UInteger
Public cyDefault As UInteger
Public flStyleDefault As UInteger
Public flExtStyleDefault As UInteger
Public flCtrlTypeMask As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public szTextDefault() As SByte
Public cStyleFlags As Integer
Public aStyleFlags As IntPtr
Public lpfnStyle As IntPtr
Public lpfnSizeToText As IntPtr
Public dwReserved1 As UInteger
Public dwReserved2 As UInteger
End Structureimport ctypes
from ctypes import wintypes
class CCINFOA(ctypes.Structure):
_fields_ = [
("szClass", ctypes.c_byte * 32),
("flOptions", wintypes.DWORD),
("szDesc", ctypes.c_byte * 32),
("cxDefault", wintypes.DWORD),
("cyDefault", wintypes.DWORD),
("flStyleDefault", wintypes.DWORD),
("flExtStyleDefault", wintypes.DWORD),
("flCtrlTypeMask", wintypes.DWORD),
("szTextDefault", ctypes.c_byte * 256),
("cStyleFlags", ctypes.c_int),
("aStyleFlags", ctypes.c_void_p),
("lpfnStyle", ctypes.c_void_p),
("lpfnSizeToText", ctypes.c_void_p),
("dwReserved1", wintypes.DWORD),
("dwReserved2", wintypes.DWORD),
]#[repr(C)]
pub struct CCINFOA {
pub szClass: [i8; 32],
pub flOptions: u32,
pub szDesc: [i8; 32],
pub cxDefault: u32,
pub cyDefault: u32,
pub flStyleDefault: u32,
pub flExtStyleDefault: u32,
pub flCtrlTypeMask: u32,
pub szTextDefault: [i8; 256],
pub cStyleFlags: i32,
pub aStyleFlags: *mut core::ffi::c_void,
pub lpfnStyle: *mut core::ffi::c_void,
pub lpfnSizeToText: *mut core::ffi::c_void,
pub dwReserved1: u32,
pub dwReserved2: u32,
}import "golang.org/x/sys/windows"
type CCINFOA struct {
szClass [32]int8
flOptions uint32
szDesc [32]int8
cxDefault uint32
cyDefault uint32
flStyleDefault uint32
flExtStyleDefault uint32
flCtrlTypeMask uint32
szTextDefault [256]int8
cStyleFlags int32
aStyleFlags uintptr
lpfnStyle uintptr
lpfnSizeToText uintptr
dwReserved1 uint32
dwReserved2 uint32
}type
CCINFOA = record
szClass: array[0..31] of Shortint;
flOptions: DWORD;
szDesc: array[0..31] of Shortint;
cxDefault: DWORD;
cyDefault: DWORD;
flStyleDefault: DWORD;
flExtStyleDefault: DWORD;
flCtrlTypeMask: DWORD;
szTextDefault: array[0..255] of Shortint;
cStyleFlags: Integer;
aStyleFlags: Pointer;
lpfnStyle: Pointer;
lpfnSizeToText: Pointer;
dwReserved1: DWORD;
dwReserved2: DWORD;
end;const CCINFOA = extern struct {
szClass: [32]i8,
flOptions: u32,
szDesc: [32]i8,
cxDefault: u32,
cyDefault: u32,
flStyleDefault: u32,
flExtStyleDefault: u32,
flCtrlTypeMask: u32,
szTextDefault: [256]i8,
cStyleFlags: i32,
aStyleFlags: ?*anyopaque,
lpfnStyle: ?*anyopaque,
lpfnSizeToText: ?*anyopaque,
dwReserved1: u32,
dwReserved2: u32,
};type
CCINFOA {.bycopy.} = object
szClass: array[32, int8]
flOptions: uint32
szDesc: array[32, int8]
cxDefault: uint32
cyDefault: uint32
flStyleDefault: uint32
flExtStyleDefault: uint32
flCtrlTypeMask: uint32
szTextDefault: array[256, int8]
cStyleFlags: int32
aStyleFlags: pointer
lpfnStyle: pointer
lpfnSizeToText: pointer
dwReserved1: uint32
dwReserved2: uint32struct CCINFOA
{
byte[32] szClass;
uint flOptions;
byte[32] szDesc;
uint cxDefault;
uint cyDefault;
uint flStyleDefault;
uint flExtStyleDefault;
uint flCtrlTypeMask;
byte[256] szTextDefault;
int cStyleFlags;
void* aStyleFlags;
void* lpfnStyle;
void* lpfnSizeToText;
uint dwReserved1;
uint dwReserved2;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; CCINFOA サイズ: 368 バイト(x86)
dim st, 92 ; 4byte整数×92(構造体サイズ 368 / 4 切り上げ)
; szClass : CHAR (+0, 32byte) varptr(st)+0 を基点に操作(32byte:入れ子/配列)
; flOptions : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; szDesc : CHAR (+36, 32byte) varptr(st)+36 を基点に操作(32byte:入れ子/配列)
; cxDefault : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; cyDefault : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; flStyleDefault : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; flExtStyleDefault : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; flCtrlTypeMask : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; szTextDefault : CHAR (+88, 256byte) varptr(st)+88 を基点に操作(256byte:入れ子/配列)
; cStyleFlags : INT (+344, 4byte) st.86 = 値 / 値 = st.86 (lpoke/lpeek も可)
; aStyleFlags : CCSTYLEFLAGA* (+348, 4byte) varptr(st)+348 を基点に操作(4byte:入れ子/配列)
; lpfnStyle : LPFNCCSTYLEA (+352, 4byte) st.88 = 値 / 値 = st.88 (lpoke/lpeek も可)
; lpfnSizeToText : LPFNCCSIZETOTEXTA (+356, 4byte) st.89 = 値 / 値 = st.89 (lpoke/lpeek も可)
; dwReserved1 : DWORD (+360, 4byte) st.90 = 値 / 値 = st.90 (lpoke/lpeek も可)
; dwReserved2 : DWORD (+364, 4byte) st.91 = 値 / 値 = st.91 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CCINFOA サイズ: 384 バイト(x64)
dim st, 96 ; 4byte整数×96(構造体サイズ 384 / 4 切り上げ)
; szClass : CHAR (+0, 32byte) varptr(st)+0 を基点に操作(32byte:入れ子/配列)
; flOptions : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; szDesc : CHAR (+36, 32byte) varptr(st)+36 を基点に操作(32byte:入れ子/配列)
; cxDefault : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; cyDefault : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; flStyleDefault : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; flExtStyleDefault : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; flCtrlTypeMask : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; szTextDefault : CHAR (+88, 256byte) varptr(st)+88 を基点に操作(256byte:入れ子/配列)
; cStyleFlags : INT (+344, 4byte) st.86 = 値 / 値 = st.86 (lpoke/lpeek も可)
; aStyleFlags : CCSTYLEFLAGA* (+352, 8byte) varptr(st)+352 を基点に操作(8byte:入れ子/配列)
; lpfnStyle : LPFNCCSTYLEA (+360, 8byte) qpoke st,360,値 / qpeek(st,360) ※IronHSPのみ。3.7/3.8は lpoke st,360,下位 : lpoke st,364,上位
; lpfnSizeToText : LPFNCCSIZETOTEXTA (+368, 8byte) qpoke st,368,値 / qpeek(st,368) ※IronHSPのみ。3.7/3.8は lpoke st,368,下位 : lpoke st,372,上位
; dwReserved1 : DWORD (+376, 4byte) st.94 = 値 / 値 = st.94 (lpoke/lpeek も可)
; dwReserved2 : DWORD (+380, 4byte) st.95 = 値 / 値 = st.95 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CCINFOA
#field byte szClass 32
#field int flOptions
#field byte szDesc 32
#field int cxDefault
#field int cyDefault
#field int flStyleDefault
#field int flExtStyleDefault
#field int flCtrlTypeMask
#field byte szTextDefault 256
#field int cStyleFlags
#field intptr aStyleFlags
#field intptr lpfnStyle
#field intptr lpfnSizeToText
#field int dwReserved1
#field int dwReserved2
#endstruct
stdim st, CCINFOA ; NSTRUCT 変数を確保
st->flOptions = 100
mes "flOptions=" + st->flOptions