THUMBBUTTON
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwMask | THUMBBUTTONMASK | 4 | +0 | +0 | 有効なメンバを示すマスク(THB_定数)。 |
| iId | DWORD | 4 | +4 | +4 | ボタンのアプリ定義ID。 |
| iBitmap | DWORD | 4 | +8 | +8 | イメージリスト内のビットマップインデックス。 |
| hIcon | HICON | 8/4 | +16 | +12 | ボタンに表示するアイコンのハンドル。 |
| szTip | WCHAR | 520 | +24 | +16 | ボタンのツールチップ文字列(Unicode固定長配列)。 |
| dwFlags | THUMBBUTTONFLAGS | 4 | +544 | +536 | ボタンの状態フラグ(有効・無効・非表示等、THBF_定数)。 |
各言語での定義
#include <windows.h>
// THUMBBUTTON (x64 552 / x86 540 バイト)
typedef struct THUMBBUTTON {
THUMBBUTTONMASK dwMask;
DWORD iId;
DWORD iBitmap;
HICON hIcon;
WCHAR szTip[260];
THUMBBUTTONFLAGS dwFlags;
} THUMBBUTTON;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct THUMBBUTTON
{
public int dwMask;
public uint iId;
public uint iBitmap;
public IntPtr hIcon;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szTip;
public int dwFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure THUMBBUTTON
Public dwMask As Integer
Public iId As UInteger
Public iBitmap As UInteger
Public hIcon As IntPtr
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szTip As String
Public dwFlags As Integer
End Structureimport ctypes
from ctypes import wintypes
class THUMBBUTTON(ctypes.Structure):
_fields_ = [
("dwMask", ctypes.c_int),
("iId", wintypes.DWORD),
("iBitmap", wintypes.DWORD),
("hIcon", ctypes.c_void_p),
("szTip", ctypes.c_wchar * 260),
("dwFlags", ctypes.c_int),
]#[repr(C)]
pub struct THUMBBUTTON {
pub dwMask: i32,
pub iId: u32,
pub iBitmap: u32,
pub hIcon: *mut core::ffi::c_void,
pub szTip: [u16; 260],
pub dwFlags: i32,
}import "golang.org/x/sys/windows"
type THUMBBUTTON struct {
dwMask int32
iId uint32
iBitmap uint32
hIcon uintptr
szTip [260]uint16
dwFlags int32
}type
THUMBBUTTON = record
dwMask: Integer;
iId: DWORD;
iBitmap: DWORD;
hIcon: Pointer;
szTip: array[0..259] of WideChar;
dwFlags: Integer;
end;const THUMBBUTTON = extern struct {
dwMask: i32,
iId: u32,
iBitmap: u32,
hIcon: ?*anyopaque,
szTip: [260]u16,
dwFlags: i32,
};type
THUMBBUTTON {.bycopy.} = object
dwMask: int32
iId: uint32
iBitmap: uint32
hIcon: pointer
szTip: array[260, uint16]
dwFlags: int32struct THUMBBUTTON
{
int dwMask;
uint iId;
uint iBitmap;
void* hIcon;
wchar[260] szTip;
int dwFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; THUMBBUTTON サイズ: 540 バイト(x86)
dim st, 135 ; 4byte整数×135(構造体サイズ 540 / 4 切り上げ)
; dwMask : THUMBBUTTONMASK (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; iId : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; iBitmap : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; hIcon : HICON (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; szTip : WCHAR (+16, 520byte) varptr(st)+16 を基点に操作(520byte:入れ子/配列)
; dwFlags : THUMBBUTTONFLAGS (+536, 4byte) st.134 = 値 / 値 = st.134 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; THUMBBUTTON サイズ: 552 バイト(x64)
dim st, 138 ; 4byte整数×138(構造体サイズ 552 / 4 切り上げ)
; dwMask : THUMBBUTTONMASK (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; iId : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; iBitmap : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; hIcon : HICON (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; szTip : WCHAR (+24, 520byte) varptr(st)+24 を基点に操作(520byte:入れ子/配列)
; dwFlags : THUMBBUTTONFLAGS (+544, 4byte) st.136 = 値 / 値 = st.136 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global THUMBBUTTON
#field int dwMask
#field int iId
#field int iBitmap
#field intptr hIcon
#field wchar szTip 260
#field int dwFlags
#endstruct
stdim st, THUMBBUTTON ; NSTRUCT 変数を確保
st->dwMask = 100
mes "dwMask=" + st->dwMask