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

CCINFOW

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

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

フィールド

フィールドサイズx64x86説明
szClassWCHAR64+0+0コントロールのウィンドウクラス名(Unicode固定長バッファ)。
flOptionsDWORD4+64+64コントロールのオプションフラグ。
szDescWCHAR64+68+68コントロールの説明文字列(Unicode固定長バッファ)。
cxDefaultDWORD4+132+132既定の幅(ダイアログ単位)。
cyDefaultDWORD4+136+136既定の高さ(ダイアログ単位)。
flStyleDefaultDWORD4+140+140既定のウィンドウスタイル。
flExtStyleDefaultDWORD4+144+144既定の拡張ウィンドウスタイル。
flCtrlTypeMaskDWORD4+148+148コントロール種別を示すマスク。
cStyleFlagsINT4+152+152aStyleFlags配列の要素数。
aStyleFlagsCCSTYLEFLAGW*8/4+160+156スタイルフラグ定義の配列へのポインター(CCSTYLEFLAGW)。
szTextDefaultWCHAR512+168+160既定の表示テキスト(Unicode固定長バッファ)。
lpfnStyleLPFNCCSTYLEW8/4+680+672スタイル編集ダイアログを表示するコールバック(LPFNCCSTYLEW)。
lpfnSizeToTextLPFNCCSIZETOTEXTW8/4+688+676テキストに合わせたサイズを計算するコールバック(LPFNCCSIZETOTEXTW)。
dwReserved1DWORD4+696+680予約済み。使用しない。
dwReserved2DWORD4+700+684予約済み。使用しない。

各言語での定義

#include <windows.h>

// CCINFOW  (x64 704 / x86 688 バイト)
typedef struct CCINFOW {
    WCHAR szClass[32];
    DWORD flOptions;
    WCHAR szDesc[32];
    DWORD cxDefault;
    DWORD cyDefault;
    DWORD flStyleDefault;
    DWORD flExtStyleDefault;
    DWORD flCtrlTypeMask;
    INT cStyleFlags;
    CCSTYLEFLAGW* aStyleFlags;
    WCHAR szTextDefault[256];
    LPFNCCSTYLEW lpfnStyle;
    LPFNCCSIZETOTEXTW lpfnSizeToText;
    DWORD dwReserved1;
    DWORD dwReserved2;
} CCINFOW;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CCINFOW
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string szClass;
    public uint flOptions;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string szDesc;
    public uint cxDefault;
    public uint cyDefault;
    public uint flStyleDefault;
    public uint flExtStyleDefault;
    public uint flCtrlTypeMask;
    public int cStyleFlags;
    public IntPtr aStyleFlags;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string szTextDefault;
    public IntPtr lpfnStyle;
    public IntPtr lpfnSizeToText;
    public uint dwReserved1;
    public uint dwReserved2;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CCINFOW
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public szClass As String
    Public flOptions As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public szDesc As String
    Public cxDefault As UInteger
    Public cyDefault As UInteger
    Public flStyleDefault As UInteger
    Public flExtStyleDefault As UInteger
    Public flCtrlTypeMask As UInteger
    Public cStyleFlags As Integer
    Public aStyleFlags As IntPtr
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public szTextDefault As String
    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 CCINFOW(ctypes.Structure):
    _fields_ = [
        ("szClass", ctypes.c_wchar * 32),
        ("flOptions", wintypes.DWORD),
        ("szDesc", ctypes.c_wchar * 32),
        ("cxDefault", wintypes.DWORD),
        ("cyDefault", wintypes.DWORD),
        ("flStyleDefault", wintypes.DWORD),
        ("flExtStyleDefault", wintypes.DWORD),
        ("flCtrlTypeMask", wintypes.DWORD),
        ("cStyleFlags", ctypes.c_int),
        ("aStyleFlags", ctypes.c_void_p),
        ("szTextDefault", ctypes.c_wchar * 256),
        ("lpfnStyle", ctypes.c_void_p),
        ("lpfnSizeToText", ctypes.c_void_p),
        ("dwReserved1", wintypes.DWORD),
        ("dwReserved2", wintypes.DWORD),
    ]
#[repr(C)]
pub struct CCINFOW {
    pub szClass: [u16; 32],
    pub flOptions: u32,
    pub szDesc: [u16; 32],
    pub cxDefault: u32,
    pub cyDefault: u32,
    pub flStyleDefault: u32,
    pub flExtStyleDefault: u32,
    pub flCtrlTypeMask: u32,
    pub cStyleFlags: i32,
    pub aStyleFlags: *mut core::ffi::c_void,
    pub szTextDefault: [u16; 256],
    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 CCINFOW struct {
	szClass [32]uint16
	flOptions uint32
	szDesc [32]uint16
	cxDefault uint32
	cyDefault uint32
	flStyleDefault uint32
	flExtStyleDefault uint32
	flCtrlTypeMask uint32
	cStyleFlags int32
	aStyleFlags uintptr
	szTextDefault [256]uint16
	lpfnStyle uintptr
	lpfnSizeToText uintptr
	dwReserved1 uint32
	dwReserved2 uint32
}
type
  CCINFOW = record
    szClass: array[0..31] of WideChar;
    flOptions: DWORD;
    szDesc: array[0..31] of WideChar;
    cxDefault: DWORD;
    cyDefault: DWORD;
    flStyleDefault: DWORD;
    flExtStyleDefault: DWORD;
    flCtrlTypeMask: DWORD;
    cStyleFlags: Integer;
    aStyleFlags: Pointer;
    szTextDefault: array[0..255] of WideChar;
    lpfnStyle: Pointer;
    lpfnSizeToText: Pointer;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
  end;
const CCINFOW = extern struct {
    szClass: [32]u16,
    flOptions: u32,
    szDesc: [32]u16,
    cxDefault: u32,
    cyDefault: u32,
    flStyleDefault: u32,
    flExtStyleDefault: u32,
    flCtrlTypeMask: u32,
    cStyleFlags: i32,
    aStyleFlags: ?*anyopaque,
    szTextDefault: [256]u16,
    lpfnStyle: ?*anyopaque,
    lpfnSizeToText: ?*anyopaque,
    dwReserved1: u32,
    dwReserved2: u32,
};
type
  CCINFOW {.bycopy.} = object
    szClass: array[32, uint16]
    flOptions: uint32
    szDesc: array[32, uint16]
    cxDefault: uint32
    cyDefault: uint32
    flStyleDefault: uint32
    flExtStyleDefault: uint32
    flCtrlTypeMask: uint32
    cStyleFlags: int32
    aStyleFlags: pointer
    szTextDefault: array[256, uint16]
    lpfnStyle: pointer
    lpfnSizeToText: pointer
    dwReserved1: uint32
    dwReserved2: uint32
struct CCINFOW
{
    wchar[32] szClass;
    uint flOptions;
    wchar[32] szDesc;
    uint cxDefault;
    uint cyDefault;
    uint flStyleDefault;
    uint flExtStyleDefault;
    uint flCtrlTypeMask;
    int cStyleFlags;
    void* aStyleFlags;
    wchar[256] szTextDefault;
    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 レイアウト)
; CCINFOW サイズ: 688 バイト(x86)
dim st, 172    ; 4byte整数×172(構造体サイズ 688 / 4 切り上げ)
; szClass : WCHAR (+0, 64byte)  varptr(st)+0 を基点に操作(64byte:入れ子/配列)
; flOptions : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; szDesc : WCHAR (+68, 64byte)  varptr(st)+68 を基点に操作(64byte:入れ子/配列)
; cxDefault : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; cyDefault : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; flStyleDefault : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; flExtStyleDefault : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; flCtrlTypeMask : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; cStyleFlags : INT (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; aStyleFlags : CCSTYLEFLAGW* (+156, 4byte)  varptr(st)+156 を基点に操作(4byte:入れ子/配列)
; szTextDefault : WCHAR (+160, 512byte)  varptr(st)+160 を基点に操作(512byte:入れ子/配列)
; lpfnStyle : LPFNCCSTYLEW (+672, 4byte)  st.168 = 値  /  値 = st.168   (lpoke/lpeek も可)
; lpfnSizeToText : LPFNCCSIZETOTEXTW (+676, 4byte)  st.169 = 値  /  値 = st.169   (lpoke/lpeek も可)
; dwReserved1 : DWORD (+680, 4byte)  st.170 = 値  /  値 = st.170   (lpoke/lpeek も可)
; dwReserved2 : DWORD (+684, 4byte)  st.171 = 値  /  値 = st.171   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; CCINFOW サイズ: 704 バイト(x64)
dim st, 176    ; 4byte整数×176(構造体サイズ 704 / 4 切り上げ)
; szClass : WCHAR (+0, 64byte)  varptr(st)+0 を基点に操作(64byte:入れ子/配列)
; flOptions : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; szDesc : WCHAR (+68, 64byte)  varptr(st)+68 を基点に操作(64byte:入れ子/配列)
; cxDefault : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; cyDefault : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; flStyleDefault : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; flExtStyleDefault : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; flCtrlTypeMask : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; cStyleFlags : INT (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; aStyleFlags : CCSTYLEFLAGW* (+160, 8byte)  varptr(st)+160 を基点に操作(8byte:入れ子/配列)
; szTextDefault : WCHAR (+168, 512byte)  varptr(st)+168 を基点に操作(512byte:入れ子/配列)
; lpfnStyle : LPFNCCSTYLEW (+680, 8byte)  qpoke st,680,値 / qpeek(st,680)  ※IronHSPのみ。3.7/3.8は lpoke st,680,下位 : lpoke st,684,上位
; lpfnSizeToText : LPFNCCSIZETOTEXTW (+688, 8byte)  qpoke st,688,値 / qpeek(st,688)  ※IronHSPのみ。3.7/3.8は lpoke st,688,下位 : lpoke st,692,上位
; dwReserved1 : DWORD (+696, 4byte)  st.174 = 値  /  値 = st.174   (lpoke/lpeek も可)
; dwReserved2 : DWORD (+700, 4byte)  st.175 = 値  /  値 = st.175   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global CCINFOW
    #field wchar szClass 32
    #field int flOptions
    #field wchar szDesc 32
    #field int cxDefault
    #field int cyDefault
    #field int flStyleDefault
    #field int flExtStyleDefault
    #field int flCtrlTypeMask
    #field int cStyleFlags
    #field intptr aStyleFlags
    #field wchar szTextDefault 256
    #field intptr lpfnStyle
    #field intptr lpfnSizeToText
    #field int dwReserved1
    #field int dwReserved2
#endstruct

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