Win32 API 日本語リファレンス
ホームGraphics.OpenGL › PIXELFORMATDESCRIPTOR

PIXELFORMATDESCRIPTOR

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

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

フィールド

フィールドサイズx64x86説明
nSizeWORD2+0+0このデータ構造のサイズを指定します。この値には sizeof(PIXELFORMATDESCRIPTOR) を設定してください。
nVersionWORD2+2+2このデータ構造のバージョンを指定します。この値には 1 を設定してください。
dwFlagsPFD_FLAGS4+4+4

ピクセルバッファーのプロパティを指定するビットフラグの集合です。これらのプロパティは一般に相互排他ではなく、注記のある例外を除いて、ビットフラグを任意に組み合わせて設定できます。次のビットフラグ定数が定義されています。

意味
PFD_DRAW_TO_WINDOW
0x00000004
バッファーはウィンドウまたはデバイスサーフェスに描画できます。
PFD_DRAW_TO_BITMAP
0x00000008
バッファーはメモリビットマップに描画できます。
PFD_SUPPORT_GDI
0x00000010
バッファーは GDI による描画をサポートします。このフラグと PFD_DOUBLEBUFFER は、現在の汎用実装では相互排他です。
PFD_SUPPORT_OPENGL
0x00000020
バッファーは OpenGL による描画をサポートします。
PFD_GENERIC_ACCELERATED
0x00001000
このピクセル形式は、汎用実装を高速化するデバイスドライバーによってサポートされます。このフラグがクリアされていて、PFD_GENERIC_FORMAT フラグが設定されている場合、そのピクセル形式は汎用実装でのみサポートされます。
PFD_GENERIC_FORMAT
0x00000040
このピクセル形式は、汎用実装とも呼ばれる GDI ソフトウェア実装によってサポートされます。このビットがクリアされている場合、そのピクセル形式はデバイスドライバーまたはハードウェアによってサポートされます。
PFD_NEED_PALETTE
0x00000080
バッファーは、パレット管理されたデバイス上で RGBA ピクセルを使用します。このピクセル型で最良の結果を得るには論理パレットが必要です。パレット内の色は、cRedBitscRedShiftcGreenBitscGreenShiftcBluebitscBlueShift の各メンバーの値に従って指定してください。パレットは、wglMakeCurrent を呼び出す前にデバイスコンテキストで作成し、実現 (realize) しておく必要があります。
PFD_NEED_SYSTEM_PALETTE
0x00000100
256 色モードでのみ 1 つのハードウェアパレットをサポートするハードウェアのピクセル形式記述子で定義されます。このようなシステムでハードウェアアクセラレーションを使用するには、RGBA モードではハードウェアパレットが固定の順序 (たとえば 3-3-2) でなければならず、カラーインデックスモードでは論理パレットと一致していなければなりません。このフラグが設定されている場合は、プログラム内で SetSystemPaletteUse を呼び出し、論理パレットとシステムパレットを 1 対 1 で対応付ける必要があります。OpenGL ハードウェアが複数のハードウェアパレットをサポートし、デバイスドライバーが OpenGL 用に予備のハードウェアパレットを割り当てられる場合、通常このフラグはクリアされます。

このフラグは汎用のピクセル形式では設定されません。

PFD_DOUBLEBUFFER
0x00000001
バッファーはダブルバッファーです。このフラグと PFD_SUPPORT_GDI は、現在の汎用実装では相互排他です。
PFD_STEREO
0x00000002
バッファーはステレオスコピック (立体視) です。このフラグは現在の汎用実装ではサポートされていません。
PFD_SWAP_LAYER_BUFFERS
0x00000800
ダブルバッファーのオーバーレイ面またはアンダーレイ面を含むピクセル形式で、デバイスが個々のレイヤー面を個別にスワップできるかどうかを示します。そうでない場合、すべてのレイヤー面はグループとしてまとめてスワップされます。このフラグが設定されている場合、wglSwapLayerBuffers がサポートされます。

ChoosePixelFormat を呼び出すときには、次のビットフラグを指定できます。

意味
PFD_DEPTH_DONTCARE
0x20000000
要求するピクセル形式は、深度バッファーを持っていても持っていなくてもかまいません。深度バッファーを持たないピクセル形式を選択するには、このフラグを指定する必要があります。要求するピクセル形式は深度バッファーの有無を問いません。それ以外の場合は、深度バッファーを持つピクセル形式のみが対象となります。
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
要求するピクセル形式は、シングルバッファーとダブルバッファーのどちらでもかまいません。
PFD_STEREO_DONTCARE
0x80000000
要求するピクセル形式は、モノスコピックとステレオスコピックのどちらでもかまいません。

glAddSwapHintRectWIN 拡張関数に伴い、PIXELFORMATDESCRIPTOR ピクセル形式構造体には 2 つの新しいフラグが追加されています。

意味
PFD_SWAP_COPY
0x00000400
バッファーのスワップ後における、ダブルバッファーのメインカラー面のバックバッファーの内容を指定します。カラーバッファーをスワップすると、バックバッファーの内容がフロントバッファーにコピーされます。バックバッファーの内容はスワップの影響を受けません。PFD_SWAP_COPY はヒントにすぎず、ドライバーによっては提供されない場合があります。
PFD_SWAP_EXCHANGE
0x00000200
バッファーのスワップ後における、ダブルバッファーのメインカラー面のバックバッファーの内容を指定します。カラーバッファーをスワップすると、バックバッファーの内容とフロントバッファーの内容が入れ替わります。スワップ後、バックバッファーにはスワップ前のフロントバッファーの内容が格納されます。PFD_SWAP_EXCHANGE はヒントにすぎず、ドライバーによっては提供されない場合があります。
iPixelTypePFD_PIXEL_TYPE1+8+8

ピクセルデータの種類を指定します。次の種類が定義されています。

意味
PFD_TYPE_RGBA
0
RGBA ピクセルです。各ピクセルは、赤、緑、青、アルファの順に 4 つの成分を持ちます。
PFD_TYPE_COLORINDEX
1
カラーインデックスピクセルです。各ピクセルはカラーインデックス値を使用します。
cColorBitsBYTE1+9+9各カラーバッファー内のカラービットプレーンの数を指定します。RGBA ピクセル型の場合は、アルファビットプレーンを除いたカラーバッファーのサイズです。カラーインデックスピクセルの場合は、カラーインデックスバッファーのサイズです。
cRedBitsBYTE1+10+10各 RGBA カラーバッファー内の赤のビットプレーンの数を指定します。
cRedShiftBYTE1+11+11各 RGBA カラーバッファー内の赤のビットプレーンのシフト数を指定します。
cGreenBitsBYTE1+12+12各 RGBA カラーバッファー内の緑のビットプレーンの数を指定します。
cGreenShiftBYTE1+13+13各 RGBA カラーバッファー内の緑のビットプレーンのシフト数を指定します。
cBlueBitsBYTE1+14+14各 RGBA カラーバッファー内の青のビットプレーンの数を指定します。
cBlueShiftBYTE1+15+15各 RGBA カラーバッファー内の青のビットプレーンのシフト数を指定します。
cAlphaBitsBYTE1+16+16各 RGBA カラーバッファー内のアルファビットプレーンの数を指定します。アルファビットプレーンはサポートされていません。
cAlphaShiftBYTE1+17+17各 RGBA カラーバッファー内のアルファビットプレーンのシフト数を指定します。アルファビットプレーンはサポートされていません。
cAccumBitsBYTE1+18+18アキュムレーションバッファー内のビットプレーンの総数を指定します。
cAccumRedBitsBYTE1+19+19アキュムレーションバッファー内の赤のビットプレーンの数を指定します。
cAccumGreenBitsBYTE1+20+20アキュムレーションバッファー内の緑のビットプレーンの数を指定します。
cAccumBlueBitsBYTE1+21+21アキュムレーションバッファー内の青のビットプレーンの数を指定します。
cAccumAlphaBitsBYTE1+22+22アキュムレーションバッファー内のアルファビットプレーンの数を指定します。
cDepthBitsBYTE1+23+23深度 (z 軸) バッファーの深度を指定します。
cStencilBitsBYTE1+24+24ステンシルバッファーの深度を指定します。
cAuxBuffersBYTE1+25+25補助バッファーの数を指定します。補助バッファーはサポートされていません。
iLayerTypeBYTE1+26+26無視されます。以前の OpenGL の実装ではこのメンバーが使用されていましたが、現在は使用されていません。
bReservedBYTE1+27+27オーバーレイ面とアンダーレイ面の数を指定します。ビット 0 から 3 で最大 15 個のオーバーレイ面を、ビット 4 から 7 で最大 15 個のアンダーレイ面を指定します。
dwLayerMaskDWORD4+28+28無視されます。以前の OpenGL の実装ではこのメンバーが使用されていましたが、現在は使用されていません。
dwVisibleMaskDWORD4+32+32アンダーレイ面の透明色または透明インデックスを指定します。ピクセル型が RGBA の場合、dwVisibleMask は透明色を表す RGB カラー値です。ピクセル型がカラーインデックスの場合は、透明インデックス値です。
dwDamageMaskDWORD4+36+36無視されます。以前の OpenGL の実装ではこのメンバーが使用されていましたが、現在は使用されていません。

公式ドキュメント

PIXELFORMATDESCRIPTOR 構造体は、描画サーフェスのピクセル形式を記述します。

解説(Remarks)

上記のとおり、現在の汎用実装ではサポートされていないピクセル形式のプロパティがある点に十分ご注意ください。汎用実装とは、Microsoft GDI による OpenGL のソフトウェア実装のことです。ハードウェアメーカーは OpenGL の一部を拡張することがあり、汎用実装ではサポートされないピクセル形式のプロパティをサポートする場合があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// PIXELFORMATDESCRIPTOR  (x64 40 / x86 40 バイト)
typedef struct PIXELFORMATDESCRIPTOR {
    WORD nSize;
    WORD nVersion;
    PFD_FLAGS dwFlags;
    PFD_PIXEL_TYPE iPixelType;
    BYTE cColorBits;
    BYTE cRedBits;
    BYTE cRedShift;
    BYTE cGreenBits;
    BYTE cGreenShift;
    BYTE cBlueBits;
    BYTE cBlueShift;
    BYTE cAlphaBits;
    BYTE cAlphaShift;
    BYTE cAccumBits;
    BYTE cAccumRedBits;
    BYTE cAccumGreenBits;
    BYTE cAccumBlueBits;
    BYTE cAccumAlphaBits;
    BYTE cDepthBits;
    BYTE cStencilBits;
    BYTE cAuxBuffers;
    BYTE iLayerType;
    BYTE bReserved;
    DWORD dwLayerMask;
    DWORD dwVisibleMask;
    DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PIXELFORMATDESCRIPTOR
{
    public ushort nSize;
    public ushort nVersion;
    public uint dwFlags;
    public byte iPixelType;
    public byte cColorBits;
    public byte cRedBits;
    public byte cRedShift;
    public byte cGreenBits;
    public byte cGreenShift;
    public byte cBlueBits;
    public byte cBlueShift;
    public byte cAlphaBits;
    public byte cAlphaShift;
    public byte cAccumBits;
    public byte cAccumRedBits;
    public byte cAccumGreenBits;
    public byte cAccumBlueBits;
    public byte cAccumAlphaBits;
    public byte cDepthBits;
    public byte cStencilBits;
    public byte cAuxBuffers;
    public byte iLayerType;
    public byte bReserved;
    public uint dwLayerMask;
    public uint dwVisibleMask;
    public uint dwDamageMask;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PIXELFORMATDESCRIPTOR
    Public nSize As UShort
    Public nVersion As UShort
    Public dwFlags As UInteger
    Public iPixelType As Byte
    Public cColorBits As Byte
    Public cRedBits As Byte
    Public cRedShift As Byte
    Public cGreenBits As Byte
    Public cGreenShift As Byte
    Public cBlueBits As Byte
    Public cBlueShift As Byte
    Public cAlphaBits As Byte
    Public cAlphaShift As Byte
    Public cAccumBits As Byte
    Public cAccumRedBits As Byte
    Public cAccumGreenBits As Byte
    Public cAccumBlueBits As Byte
    Public cAccumAlphaBits As Byte
    Public cDepthBits As Byte
    Public cStencilBits As Byte
    Public cAuxBuffers As Byte
    Public iLayerType As Byte
    Public bReserved As Byte
    Public dwLayerMask As UInteger
    Public dwVisibleMask As UInteger
    Public dwDamageMask As UInteger
End Structure
import ctypes
from ctypes import wintypes

class PIXELFORMATDESCRIPTOR(ctypes.Structure):
    _fields_ = [
        ("nSize", ctypes.c_ushort),
        ("nVersion", ctypes.c_ushort),
        ("dwFlags", wintypes.DWORD),
        ("iPixelType", ctypes.c_ubyte),
        ("cColorBits", ctypes.c_ubyte),
        ("cRedBits", ctypes.c_ubyte),
        ("cRedShift", ctypes.c_ubyte),
        ("cGreenBits", ctypes.c_ubyte),
        ("cGreenShift", ctypes.c_ubyte),
        ("cBlueBits", ctypes.c_ubyte),
        ("cBlueShift", ctypes.c_ubyte),
        ("cAlphaBits", ctypes.c_ubyte),
        ("cAlphaShift", ctypes.c_ubyte),
        ("cAccumBits", ctypes.c_ubyte),
        ("cAccumRedBits", ctypes.c_ubyte),
        ("cAccumGreenBits", ctypes.c_ubyte),
        ("cAccumBlueBits", ctypes.c_ubyte),
        ("cAccumAlphaBits", ctypes.c_ubyte),
        ("cDepthBits", ctypes.c_ubyte),
        ("cStencilBits", ctypes.c_ubyte),
        ("cAuxBuffers", ctypes.c_ubyte),
        ("iLayerType", ctypes.c_ubyte),
        ("bReserved", ctypes.c_ubyte),
        ("dwLayerMask", wintypes.DWORD),
        ("dwVisibleMask", wintypes.DWORD),
        ("dwDamageMask", wintypes.DWORD),
    ]
#[repr(C)]
pub struct PIXELFORMATDESCRIPTOR {
    pub nSize: u16,
    pub nVersion: u16,
    pub dwFlags: u32,
    pub iPixelType: u8,
    pub cColorBits: u8,
    pub cRedBits: u8,
    pub cRedShift: u8,
    pub cGreenBits: u8,
    pub cGreenShift: u8,
    pub cBlueBits: u8,
    pub cBlueShift: u8,
    pub cAlphaBits: u8,
    pub cAlphaShift: u8,
    pub cAccumBits: u8,
    pub cAccumRedBits: u8,
    pub cAccumGreenBits: u8,
    pub cAccumBlueBits: u8,
    pub cAccumAlphaBits: u8,
    pub cDepthBits: u8,
    pub cStencilBits: u8,
    pub cAuxBuffers: u8,
    pub iLayerType: u8,
    pub bReserved: u8,
    pub dwLayerMask: u32,
    pub dwVisibleMask: u32,
    pub dwDamageMask: u32,
}
import "golang.org/x/sys/windows"

type PIXELFORMATDESCRIPTOR struct {
	nSize uint16
	nVersion uint16
	dwFlags uint32
	iPixelType byte
	cColorBits byte
	cRedBits byte
	cRedShift byte
	cGreenBits byte
	cGreenShift byte
	cBlueBits byte
	cBlueShift byte
	cAlphaBits byte
	cAlphaShift byte
	cAccumBits byte
	cAccumRedBits byte
	cAccumGreenBits byte
	cAccumBlueBits byte
	cAccumAlphaBits byte
	cDepthBits byte
	cStencilBits byte
	cAuxBuffers byte
	iLayerType byte
	bReserved byte
	dwLayerMask uint32
	dwVisibleMask uint32
	dwDamageMask uint32
}
type
  PIXELFORMATDESCRIPTOR = record
    nSize: Word;
    nVersion: Word;
    dwFlags: DWORD;
    iPixelType: Byte;
    cColorBits: Byte;
    cRedBits: Byte;
    cRedShift: Byte;
    cGreenBits: Byte;
    cGreenShift: Byte;
    cBlueBits: Byte;
    cBlueShift: Byte;
    cAlphaBits: Byte;
    cAlphaShift: Byte;
    cAccumBits: Byte;
    cAccumRedBits: Byte;
    cAccumGreenBits: Byte;
    cAccumBlueBits: Byte;
    cAccumAlphaBits: Byte;
    cDepthBits: Byte;
    cStencilBits: Byte;
    cAuxBuffers: Byte;
    iLayerType: Byte;
    bReserved: Byte;
    dwLayerMask: DWORD;
    dwVisibleMask: DWORD;
    dwDamageMask: DWORD;
  end;
const PIXELFORMATDESCRIPTOR = extern struct {
    nSize: u16,
    nVersion: u16,
    dwFlags: u32,
    iPixelType: u8,
    cColorBits: u8,
    cRedBits: u8,
    cRedShift: u8,
    cGreenBits: u8,
    cGreenShift: u8,
    cBlueBits: u8,
    cBlueShift: u8,
    cAlphaBits: u8,
    cAlphaShift: u8,
    cAccumBits: u8,
    cAccumRedBits: u8,
    cAccumGreenBits: u8,
    cAccumBlueBits: u8,
    cAccumAlphaBits: u8,
    cDepthBits: u8,
    cStencilBits: u8,
    cAuxBuffers: u8,
    iLayerType: u8,
    bReserved: u8,
    dwLayerMask: u32,
    dwVisibleMask: u32,
    dwDamageMask: u32,
};
type
  PIXELFORMATDESCRIPTOR {.bycopy.} = object
    nSize: uint16
    nVersion: uint16
    dwFlags: uint32
    iPixelType: uint8
    cColorBits: uint8
    cRedBits: uint8
    cRedShift: uint8
    cGreenBits: uint8
    cGreenShift: uint8
    cBlueBits: uint8
    cBlueShift: uint8
    cAlphaBits: uint8
    cAlphaShift: uint8
    cAccumBits: uint8
    cAccumRedBits: uint8
    cAccumGreenBits: uint8
    cAccumBlueBits: uint8
    cAccumAlphaBits: uint8
    cDepthBits: uint8
    cStencilBits: uint8
    cAuxBuffers: uint8
    iLayerType: uint8
    bReserved: uint8
    dwLayerMask: uint32
    dwVisibleMask: uint32
    dwDamageMask: uint32
struct PIXELFORMATDESCRIPTOR
{
    ushort nSize;
    ushort nVersion;
    uint dwFlags;
    ubyte iPixelType;
    ubyte cColorBits;
    ubyte cRedBits;
    ubyte cRedShift;
    ubyte cGreenBits;
    ubyte cGreenShift;
    ubyte cBlueBits;
    ubyte cBlueShift;
    ubyte cAlphaBits;
    ubyte cAlphaShift;
    ubyte cAccumBits;
    ubyte cAccumRedBits;
    ubyte cAccumGreenBits;
    ubyte cAccumBlueBits;
    ubyte cAccumAlphaBits;
    ubyte cDepthBits;
    ubyte cStencilBits;
    ubyte cAuxBuffers;
    ubyte iLayerType;
    ubyte bReserved;
    uint dwLayerMask;
    uint dwVisibleMask;
    uint dwDamageMask;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PIXELFORMATDESCRIPTOR サイズ: 40 バイト(x64)
dim st, 10    ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; nSize : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; nVersion : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; dwFlags : PFD_FLAGS (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; iPixelType : PFD_PIXEL_TYPE (+8, 1byte)  poke st,8,値  /  値 = peek(st,8)
; cColorBits : BYTE (+9, 1byte)  poke st,9,値  /  値 = peek(st,9)
; cRedBits : BYTE (+10, 1byte)  poke st,10,値  /  値 = peek(st,10)
; cRedShift : BYTE (+11, 1byte)  poke st,11,値  /  値 = peek(st,11)
; cGreenBits : BYTE (+12, 1byte)  poke st,12,値  /  値 = peek(st,12)
; cGreenShift : BYTE (+13, 1byte)  poke st,13,値  /  値 = peek(st,13)
; cBlueBits : BYTE (+14, 1byte)  poke st,14,値  /  値 = peek(st,14)
; cBlueShift : BYTE (+15, 1byte)  poke st,15,値  /  値 = peek(st,15)
; cAlphaBits : BYTE (+16, 1byte)  poke st,16,値  /  値 = peek(st,16)
; cAlphaShift : BYTE (+17, 1byte)  poke st,17,値  /  値 = peek(st,17)
; cAccumBits : BYTE (+18, 1byte)  poke st,18,値  /  値 = peek(st,18)
; cAccumRedBits : BYTE (+19, 1byte)  poke st,19,値  /  値 = peek(st,19)
; cAccumGreenBits : BYTE (+20, 1byte)  poke st,20,値  /  値 = peek(st,20)
; cAccumBlueBits : BYTE (+21, 1byte)  poke st,21,値  /  値 = peek(st,21)
; cAccumAlphaBits : BYTE (+22, 1byte)  poke st,22,値  /  値 = peek(st,22)
; cDepthBits : BYTE (+23, 1byte)  poke st,23,値  /  値 = peek(st,23)
; cStencilBits : BYTE (+24, 1byte)  poke st,24,値  /  値 = peek(st,24)
; cAuxBuffers : BYTE (+25, 1byte)  poke st,25,値  /  値 = peek(st,25)
; iLayerType : BYTE (+26, 1byte)  poke st,26,値  /  値 = peek(st,26)
; bReserved : BYTE (+27, 1byte)  poke st,27,値  /  値 = peek(st,27)
; dwLayerMask : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwVisibleMask : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwDamageMask : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PIXELFORMATDESCRIPTOR
    #field short nSize
    #field short nVersion
    #field int dwFlags
    #field byte iPixelType
    #field byte cColorBits
    #field byte cRedBits
    #field byte cRedShift
    #field byte cGreenBits
    #field byte cGreenShift
    #field byte cBlueBits
    #field byte cBlueShift
    #field byte cAlphaBits
    #field byte cAlphaShift
    #field byte cAccumBits
    #field byte cAccumRedBits
    #field byte cAccumGreenBits
    #field byte cAccumBlueBits
    #field byte cAccumAlphaBits
    #field byte cDepthBits
    #field byte cStencilBits
    #field byte cAuxBuffers
    #field byte iLayerType
    #field byte bReserved
    #field int dwLayerMask
    #field int dwVisibleMask
    #field int dwDamageMask
#endstruct

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