LVGROUP
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cbSize | DWORD | 4 | +0 | +0 | この構造体のサイズ (バイト単位)。 | ||||||||||||||||||||||||||||||||
| mask | LVGROUP_MASK | 4 | +4 | +4 | 構造体のどのメンバーが有効な入力であるかを指定するマスクです。次の値の 1 つ以上を指定します。
| ||||||||||||||||||||||||||||||||
| pszHeader | LPWSTR | 8/4 | +8 | +8 | 項目情報を設定する場合は、ヘッダーテキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーはヘッダーテキストを受け取るバッファーのアドレスを指定します。 | ||||||||||||||||||||||||||||||||
| cchHeader | INT | 4 | +16 | +12 | pszHeader メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| pszFooter | LPWSTR | 8/4 | +24 | +16 | 項目情報を設定する場合は、フッターテキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーはフッターテキストを受け取るバッファーのアドレスを指定します。 | ||||||||||||||||||||||||||||||||
| cchFooter | INT | 4 | +32 | +20 | pszFooter メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| iGroupId | INT | 4 | +36 | +24 | グループの ID。 | ||||||||||||||||||||||||||||||||
| stateMask | LIST_VIEW_GROUP_STATE_FLAGS | 4 | +40 | +28 | LVM_GETGROUPINFO および LVM_SETGROUPINFO と共に使用し、state 値のどのフラグを取得または設定するかを指定するマスクです。 | ||||||||||||||||||||||||||||||||
| state | LIST_VIEW_GROUP_STATE_FLAGS | 4 | +44 | +32 | 次のいずれかの値を取ることができるフラグです。
| ||||||||||||||||||||||||||||||||
| uAlign | LIST_VIEW_GROUP_ALIGN_FLAGS | 4 | +48 | +36 | グループのヘッダーテキストまたはフッターテキストの配置を示します。次の値の 1 つ以上を指定できます。ヘッダーフラグのいずれかを使用してください。フッターフラグは省略可能です。
| ||||||||||||||||||||||||||||||||
| pszSubtitle | LPWSTR | 8/4 | +56 | +40 | 項目情報を設定する場合は、サブタイトルテキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーはサブタイトルテキストを受け取るバッファーのアドレスを指定します。この要素はヘッダーテキストの下に描画されます。 | ||||||||||||||||||||||||||||||||
| cchSubtitle | DWORD | 4 | +64 | +44 | pszSubtitle メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| pszTask | LPWSTR | 8/4 | +72 | +48 | 項目情報を設定する場合は、タスクリンクのテキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーはタスクテキストを受け取るバッファーのアドレスを指定します。この項目はヘッダーテキストの反対側に右揃えで描画されます。ユーザーがクリックすると、タスクリンクは LVN_LINKCLICK 通知を生成します。 | ||||||||||||||||||||||||||||||||
| cchTask | DWORD | 4 | +80 | +52 | pszTask メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| pszDescriptionTop | LPWSTR | 8/4 | +88 | +56 | 項目情報を設定する場合は、上部の説明テキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーは上部の説明テキストを受け取るバッファーのアドレスを指定します。この項目は、タイトル画像があり、拡張画像がなく、かつ uAlign==LVGA_HEADER_CENTER の場合に、タイトル画像の反対側に描画されます。 | ||||||||||||||||||||||||||||||||
| cchDescriptionTop | DWORD | 4 | +96 | +60 | pszDescriptionTop メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| pszDescriptionBottom | LPWSTR | 8/4 | +104 | +64 | 項目情報を設定する場合は、下部の説明テキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーは下部の説明テキストを受け取るバッファーのアドレスを指定します。この項目は、タイトル画像があり、拡張画像がなく、かつ uAlign==LVGA_HEADER_CENTER の場合に、上部の説明テキストの下に描画されます。 | ||||||||||||||||||||||||||||||||
| cchDescriptionBottom | DWORD | 4 | +112 | +68 | pszDescriptionBottom メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 | ||||||||||||||||||||||||||||||||
| iTitleImage | INT | 4 | +116 | +72 | コントロールのイメージリスト内のタイトル画像のインデックス。 | ||||||||||||||||||||||||||||||||
| iExtendedImage | INT | 4 | +120 | +76 | コントロールのイメージリスト内の拡張画像のインデックス。 | ||||||||||||||||||||||||||||||||
| iFirstItem | INT | 4 | +124 | +80 | 読み取り専用です。 | ||||||||||||||||||||||||||||||||
| cItems | DWORD | 4 | +128 | +84 | 非オーナーデータモードでは読み取り専用です。 | ||||||||||||||||||||||||||||||||
| pszSubsetTitle | LPWSTR | 8/4 | +136 | +88 | グループがサブセットでない場合は NULL です。項目情報を設定する場合は、サブセットタイトルテキストを格納した null 終端文字列へのポインターです。グループ情報を取得する場合は、このメンバーはサブセットタイトルテキストを受け取るバッファーのアドレスを指定します。 | ||||||||||||||||||||||||||||||||
| cchSubsetTitle | DWORD | 4 | +144 | +92 | pszSubsetTitle メンバーが指すバッファーのサイズ (TCHAR 単位)。構造体がグループに関する情報を受け取らない場合、このメンバーは無視されます。 |
公式ドキュメント
グループの設定と取得に使用します。
解説(Remarks)
この構造体で返されるすべての文字列は、読み取り専用として扱う必要があります。
サブセットの作成は現在サポートされておらず、pszSubsetTitle をアプリケーションから設定することはできません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// LVGROUP (x64 152 / x86 96 バイト)
typedef struct LVGROUP {
DWORD cbSize;
LVGROUP_MASK mask;
LPWSTR pszHeader;
INT cchHeader;
LPWSTR pszFooter;
INT cchFooter;
INT iGroupId;
LIST_VIEW_GROUP_STATE_FLAGS stateMask;
LIST_VIEW_GROUP_STATE_FLAGS state;
LIST_VIEW_GROUP_ALIGN_FLAGS uAlign;
LPWSTR pszSubtitle;
DWORD cchSubtitle;
LPWSTR pszTask;
DWORD cchTask;
LPWSTR pszDescriptionTop;
DWORD cchDescriptionTop;
LPWSTR pszDescriptionBottom;
DWORD cchDescriptionBottom;
INT iTitleImage;
INT iExtendedImage;
INT iFirstItem;
DWORD cItems;
LPWSTR pszSubsetTitle;
DWORD cchSubsetTitle;
} LVGROUP;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LVGROUP
{
public uint cbSize;
public uint mask;
public IntPtr pszHeader;
public int cchHeader;
public IntPtr pszFooter;
public int cchFooter;
public int iGroupId;
public uint stateMask;
public uint state;
public uint uAlign;
public IntPtr pszSubtitle;
public uint cchSubtitle;
public IntPtr pszTask;
public uint cchTask;
public IntPtr pszDescriptionTop;
public uint cchDescriptionTop;
public IntPtr pszDescriptionBottom;
public uint cchDescriptionBottom;
public int iTitleImage;
public int iExtendedImage;
public int iFirstItem;
public uint cItems;
public IntPtr pszSubsetTitle;
public uint cchSubsetTitle;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure LVGROUP
Public cbSize As UInteger
Public mask As UInteger
Public pszHeader As IntPtr
Public cchHeader As Integer
Public pszFooter As IntPtr
Public cchFooter As Integer
Public iGroupId As Integer
Public stateMask As UInteger
Public state As UInteger
Public uAlign As UInteger
Public pszSubtitle As IntPtr
Public cchSubtitle As UInteger
Public pszTask As IntPtr
Public cchTask As UInteger
Public pszDescriptionTop As IntPtr
Public cchDescriptionTop As UInteger
Public pszDescriptionBottom As IntPtr
Public cchDescriptionBottom As UInteger
Public iTitleImage As Integer
Public iExtendedImage As Integer
Public iFirstItem As Integer
Public cItems As UInteger
Public pszSubsetTitle As IntPtr
Public cchSubsetTitle As UInteger
End Structureimport ctypes
from ctypes import wintypes
class LVGROUP(ctypes.Structure):
_fields_ = [
("cbSize", wintypes.DWORD),
("mask", wintypes.DWORD),
("pszHeader", ctypes.c_void_p),
("cchHeader", ctypes.c_int),
("pszFooter", ctypes.c_void_p),
("cchFooter", ctypes.c_int),
("iGroupId", ctypes.c_int),
("stateMask", wintypes.DWORD),
("state", wintypes.DWORD),
("uAlign", wintypes.DWORD),
("pszSubtitle", ctypes.c_void_p),
("cchSubtitle", wintypes.DWORD),
("pszTask", ctypes.c_void_p),
("cchTask", wintypes.DWORD),
("pszDescriptionTop", ctypes.c_void_p),
("cchDescriptionTop", wintypes.DWORD),
("pszDescriptionBottom", ctypes.c_void_p),
("cchDescriptionBottom", wintypes.DWORD),
("iTitleImage", ctypes.c_int),
("iExtendedImage", ctypes.c_int),
("iFirstItem", ctypes.c_int),
("cItems", wintypes.DWORD),
("pszSubsetTitle", ctypes.c_void_p),
("cchSubsetTitle", wintypes.DWORD),
]#[repr(C)]
pub struct LVGROUP {
pub cbSize: u32,
pub mask: u32,
pub pszHeader: *mut core::ffi::c_void,
pub cchHeader: i32,
pub pszFooter: *mut core::ffi::c_void,
pub cchFooter: i32,
pub iGroupId: i32,
pub stateMask: u32,
pub state: u32,
pub uAlign: u32,
pub pszSubtitle: *mut core::ffi::c_void,
pub cchSubtitle: u32,
pub pszTask: *mut core::ffi::c_void,
pub cchTask: u32,
pub pszDescriptionTop: *mut core::ffi::c_void,
pub cchDescriptionTop: u32,
pub pszDescriptionBottom: *mut core::ffi::c_void,
pub cchDescriptionBottom: u32,
pub iTitleImage: i32,
pub iExtendedImage: i32,
pub iFirstItem: i32,
pub cItems: u32,
pub pszSubsetTitle: *mut core::ffi::c_void,
pub cchSubsetTitle: u32,
}import "golang.org/x/sys/windows"
type LVGROUP struct {
cbSize uint32
mask uint32
pszHeader uintptr
cchHeader int32
pszFooter uintptr
cchFooter int32
iGroupId int32
stateMask uint32
state uint32
uAlign uint32
pszSubtitle uintptr
cchSubtitle uint32
pszTask uintptr
cchTask uint32
pszDescriptionTop uintptr
cchDescriptionTop uint32
pszDescriptionBottom uintptr
cchDescriptionBottom uint32
iTitleImage int32
iExtendedImage int32
iFirstItem int32
cItems uint32
pszSubsetTitle uintptr
cchSubsetTitle uint32
}type
LVGROUP = record
cbSize: DWORD;
mask: DWORD;
pszHeader: Pointer;
cchHeader: Integer;
pszFooter: Pointer;
cchFooter: Integer;
iGroupId: Integer;
stateMask: DWORD;
state: DWORD;
uAlign: DWORD;
pszSubtitle: Pointer;
cchSubtitle: DWORD;
pszTask: Pointer;
cchTask: DWORD;
pszDescriptionTop: Pointer;
cchDescriptionTop: DWORD;
pszDescriptionBottom: Pointer;
cchDescriptionBottom: DWORD;
iTitleImage: Integer;
iExtendedImage: Integer;
iFirstItem: Integer;
cItems: DWORD;
pszSubsetTitle: Pointer;
cchSubsetTitle: DWORD;
end;const LVGROUP = extern struct {
cbSize: u32,
mask: u32,
pszHeader: ?*anyopaque,
cchHeader: i32,
pszFooter: ?*anyopaque,
cchFooter: i32,
iGroupId: i32,
stateMask: u32,
state: u32,
uAlign: u32,
pszSubtitle: ?*anyopaque,
cchSubtitle: u32,
pszTask: ?*anyopaque,
cchTask: u32,
pszDescriptionTop: ?*anyopaque,
cchDescriptionTop: u32,
pszDescriptionBottom: ?*anyopaque,
cchDescriptionBottom: u32,
iTitleImage: i32,
iExtendedImage: i32,
iFirstItem: i32,
cItems: u32,
pszSubsetTitle: ?*anyopaque,
cchSubsetTitle: u32,
};type
LVGROUP {.bycopy.} = object
cbSize: uint32
mask: uint32
pszHeader: pointer
cchHeader: int32
pszFooter: pointer
cchFooter: int32
iGroupId: int32
stateMask: uint32
state: uint32
uAlign: uint32
pszSubtitle: pointer
cchSubtitle: uint32
pszTask: pointer
cchTask: uint32
pszDescriptionTop: pointer
cchDescriptionTop: uint32
pszDescriptionBottom: pointer
cchDescriptionBottom: uint32
iTitleImage: int32
iExtendedImage: int32
iFirstItem: int32
cItems: uint32
pszSubsetTitle: pointer
cchSubsetTitle: uint32struct LVGROUP
{
uint cbSize;
uint mask;
void* pszHeader;
int cchHeader;
void* pszFooter;
int cchFooter;
int iGroupId;
uint stateMask;
uint state;
uint uAlign;
void* pszSubtitle;
uint cchSubtitle;
void* pszTask;
uint cchTask;
void* pszDescriptionTop;
uint cchDescriptionTop;
void* pszDescriptionBottom;
uint cchDescriptionBottom;
int iTitleImage;
int iExtendedImage;
int iFirstItem;
uint cItems;
void* pszSubsetTitle;
uint cchSubsetTitle;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; LVGROUP サイズ: 96 バイト(x86)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; mask : LVGROUP_MASK (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pszHeader : LPWSTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; cchHeader : INT (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; pszFooter : LPWSTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; cchFooter : INT (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; iGroupId : INT (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; stateMask : LIST_VIEW_GROUP_STATE_FLAGS (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; state : LIST_VIEW_GROUP_STATE_FLAGS (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; uAlign : LIST_VIEW_GROUP_ALIGN_FLAGS (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pszSubtitle : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; cchSubtitle : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pszTask : LPWSTR (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; cchTask : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; pszDescriptionTop : LPWSTR (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; cchDescriptionTop : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; pszDescriptionBottom : LPWSTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; cchDescriptionBottom : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; iTitleImage : INT (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; iExtendedImage : INT (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; iFirstItem : INT (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; cItems : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; pszSubsetTitle : LPWSTR (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; cchSubsetTitle : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LVGROUP サイズ: 152 バイト(x64)
dim st, 38 ; 4byte整数×38(構造体サイズ 152 / 4 切り上げ)
; cbSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; mask : LVGROUP_MASK (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pszHeader : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; cchHeader : INT (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pszFooter : LPWSTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; cchFooter : INT (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; iGroupId : INT (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; stateMask : LIST_VIEW_GROUP_STATE_FLAGS (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; state : LIST_VIEW_GROUP_STATE_FLAGS (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; uAlign : LIST_VIEW_GROUP_ALIGN_FLAGS (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; pszSubtitle : LPWSTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; cchSubtitle : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; pszTask : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; cchTask : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; pszDescriptionTop : LPWSTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; cchDescriptionTop : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; pszDescriptionBottom : LPWSTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; cchDescriptionBottom : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; iTitleImage : INT (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; iExtendedImage : INT (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; iFirstItem : INT (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; cItems : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; pszSubsetTitle : LPWSTR (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; cchSubsetTitle : DWORD (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global LVGROUP
#field int cbSize
#field int mask
#field intptr pszHeader
#field int cchHeader
#field intptr pszFooter
#field int cchFooter
#field int iGroupId
#field int stateMask
#field int state
#field int uAlign
#field intptr pszSubtitle
#field int cchSubtitle
#field intptr pszTask
#field int cchTask
#field intptr pszDescriptionTop
#field int cchDescriptionTop
#field intptr pszDescriptionBottom
#field int cchDescriptionBottom
#field int iTitleImage
#field int iExtendedImage
#field int iFirstItem
#field int cItems
#field intptr pszSubsetTitle
#field int cchSubsetTitle
#endstruct
stdim st, LVGROUP ; NSTRUCT 変数を確保
st->cbSize = 100
mes "cbSize=" + st->cbSize