ホーム › UI.Input.Ime › IMEINFO
IMEINFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwPrivateDataSize | DWORD | 4 | +0 | +0 | IMEが要求するプライベートデータのサイズである。 |
| fdwProperty | DWORD | 4 | +4 | +4 | IMEの基本特性を示すフラグである。 |
| fdwConversionCaps | DWORD | 4 | +8 | +8 | 変換モードの対応能力を示すフラグである。 |
| fdwSentenceCaps | DWORD | 4 | +12 | +12 | 文節変換モードの対応能力を示すフラグである。 |
| fdwUICaps | DWORD | 4 | +16 | +16 | UI機能の対応能力を示すフラグである。 |
| fdwSCSCaps | DWORD | 4 | +20 | +20 | 文字列変換(SetCompositionString)の対応能力を示すフラグである。 |
| fdwSelectCaps | DWORD | 4 | +24 | +24 | 選択時の対応能力を示すフラグである。 |
各言語での定義
#include <windows.h>
// IMEINFO (x64 28 / x86 28 バイト)
typedef struct IMEINFO {
DWORD dwPrivateDataSize;
DWORD fdwProperty;
DWORD fdwConversionCaps;
DWORD fdwSentenceCaps;
DWORD fdwUICaps;
DWORD fdwSCSCaps;
DWORD fdwSelectCaps;
} IMEINFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IMEINFO
{
public uint dwPrivateDataSize;
public uint fdwProperty;
public uint fdwConversionCaps;
public uint fdwSentenceCaps;
public uint fdwUICaps;
public uint fdwSCSCaps;
public uint fdwSelectCaps;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IMEINFO
Public dwPrivateDataSize As UInteger
Public fdwProperty As UInteger
Public fdwConversionCaps As UInteger
Public fdwSentenceCaps As UInteger
Public fdwUICaps As UInteger
Public fdwSCSCaps As UInteger
Public fdwSelectCaps As UInteger
End Structureimport ctypes
from ctypes import wintypes
class IMEINFO(ctypes.Structure):
_fields_ = [
("dwPrivateDataSize", wintypes.DWORD),
("fdwProperty", wintypes.DWORD),
("fdwConversionCaps", wintypes.DWORD),
("fdwSentenceCaps", wintypes.DWORD),
("fdwUICaps", wintypes.DWORD),
("fdwSCSCaps", wintypes.DWORD),
("fdwSelectCaps", wintypes.DWORD),
]#[repr(C)]
pub struct IMEINFO {
pub dwPrivateDataSize: u32,
pub fdwProperty: u32,
pub fdwConversionCaps: u32,
pub fdwSentenceCaps: u32,
pub fdwUICaps: u32,
pub fdwSCSCaps: u32,
pub fdwSelectCaps: u32,
}import "golang.org/x/sys/windows"
type IMEINFO struct {
dwPrivateDataSize uint32
fdwProperty uint32
fdwConversionCaps uint32
fdwSentenceCaps uint32
fdwUICaps uint32
fdwSCSCaps uint32
fdwSelectCaps uint32
}type
IMEINFO = record
dwPrivateDataSize: DWORD;
fdwProperty: DWORD;
fdwConversionCaps: DWORD;
fdwSentenceCaps: DWORD;
fdwUICaps: DWORD;
fdwSCSCaps: DWORD;
fdwSelectCaps: DWORD;
end;const IMEINFO = extern struct {
dwPrivateDataSize: u32,
fdwProperty: u32,
fdwConversionCaps: u32,
fdwSentenceCaps: u32,
fdwUICaps: u32,
fdwSCSCaps: u32,
fdwSelectCaps: u32,
};type
IMEINFO {.bycopy.} = object
dwPrivateDataSize: uint32
fdwProperty: uint32
fdwConversionCaps: uint32
fdwSentenceCaps: uint32
fdwUICaps: uint32
fdwSCSCaps: uint32
fdwSelectCaps: uint32struct IMEINFO
{
uint dwPrivateDataSize;
uint fdwProperty;
uint fdwConversionCaps;
uint fdwSentenceCaps;
uint fdwUICaps;
uint fdwSCSCaps;
uint fdwSelectCaps;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IMEINFO サイズ: 28 バイト(x64)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; dwPrivateDataSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; fdwProperty : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; fdwConversionCaps : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; fdwSentenceCaps : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; fdwUICaps : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; fdwSCSCaps : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; fdwSelectCaps : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IMEINFO
#field int dwPrivateDataSize
#field int fdwProperty
#field int fdwConversionCaps
#field int fdwSentenceCaps
#field int fdwUICaps
#field int fdwSCSCaps
#field int fdwSelectCaps
#endstruct
stdim st, IMEINFO ; NSTRUCT 変数を確保
st->dwPrivateDataSize = 100
mes "dwPrivateDataSize=" + st->dwPrivateDataSize