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

CCINFOA

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

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

フィールド

フィールドサイズx64x86説明
szClassCHAR32+0+0コントロールのウィンドウクラス名(ANSI固定長バッファ)。
flOptionsDWORD4+32+32コントロールのオプションフラグ。
szDescCHAR32+36+36コントロールの説明文字列(ANSI固定長バッファ)。
cxDefaultDWORD4+68+68既定の幅(ダイアログ単位)。
cyDefaultDWORD4+72+72既定の高さ(ダイアログ単位)。
flStyleDefaultDWORD4+76+76既定のウィンドウスタイル。
flExtStyleDefaultDWORD4+80+80既定の拡張ウィンドウスタイル。
flCtrlTypeMaskDWORD4+84+84コントロール種別を示すマスク。
szTextDefaultCHAR256+88+88既定の表示テキスト(ANSI固定長バッファ)。
cStyleFlagsINT4+344+344aStyleFlags配列の要素数。
aStyleFlagsCCSTYLEFLAGA*8/4+352+348スタイルフラグ定義の配列へのポインター(CCSTYLEFLAGA)。
lpfnStyleLPFNCCSTYLEA8/4+360+352スタイル編集ダイアログを表示するコールバック(LPFNCCSTYLEA)。
lpfnSizeToTextLPFNCCSIZETOTEXTA8/4+368+356テキストに合わせたサイズを計算するコールバック(LPFNCCSIZETOTEXTA)。
dwReserved1DWORD4+376+360予約済み。使用しない。
dwReserved2DWORD4+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 Structure
import 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: uint32
struct 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