Win32 API 日本語リファレンス
ホームSystem.WindowsProgramming › IMESTRUCT

IMESTRUCT

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

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

フィールド

フィールドサイズx64x86説明
fncDWORD4+0+0

サブ関数です。次のいずれかの値を指定します。

IME_ENTERWORDREGISTERMODE

単語を登録するために使用します。アプリケーションが単語とその読みを送信することで単語が登録されます。構造体のメンバーは次のように解釈されます。

メンバー 説明
lParam1 [Windows 3.1] LPARAM 下位ワードは、0 で終わる単語文字列を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです。
lParam2 [Windows 3.1] LPARAM 下位ワードは、0 で終わる読み文字列を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです
lParam3 [Windows 3.1] LPARAM NULL でなければなりません。
lParam1 [Windows NT] LPARAM 0 で終わる単語文字列を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです。
lParam2 [Windows NT] LPARAM 0 で終わる読み文字列を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです。
lParam3 [Windows NT] LPARAM 品詞に関する情報を指定するために使用します。現在の Windows の仕様ではそのような情報を指定できないため、ここには NULL が設定されます。
 

戻り値は単語登録の結果を示します。登録が正常に処理された場合は TRUE、それ以外の場合は FALSE です。

品詞などの情報が必要な場合は、ダイアログボックスを表示してユーザーに入力を求めてください。メンバー lParam1 および lParam2 には NULL を指定できます。その場合、ダイアログボックス内の対応する入力フィールドには何も表示しないでください。

IME_GETCONVERSIONMODE

IME の現在の変換モードを取得します。このサブプログラムはパラメーターを使用しません。

これは IME_GET_MODE と同じです。

IME の現在の変換モードを、IME_MODE_ALPHANUMERIC から IME_MODE_NOCODEINPUT までの組み合わせとして返します。変換モードは次のとおりです。

変換モード モード
IME_MODE_ALPHANUMERIC 英数字
IME_MODE_KATAKANA カタカナ
IME_MODE_HIRAGANA ひらがな
IME_MODE_SBCSCHAR 半角文字
IME_MODE_DBCSCHAR 全角文字
IME_MODE_ROMAN ローマ字
IME_MODE_NOROMAN 非ローマ字
IME_MODE_CODEINPUT コード入力
IME_MODE_NOCODEINPUT 非コード入力
 

IME_GET_MODE

IME_GETCONVERSIONMODE と同じです。

IME_MOVECONVERTWINDOW

IME_SETCONVERSIONWINDOW と同じです。

IME_SETCONVERSIONFONTEX

変換ウィンドウに表示される未確定文字列の表示に使用するフォントです。構造体のメンバーは次のように解釈されます。

メンバー 説明
lParam1 [Windows 3.1] LPARAM 下位ワードは、論理フォントを指定する LOGFONT 構造体を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです。NULL はシステムフォントを示します。
lParam1 [Windows NT] LPARAM 論理フォントを指定する LOGFONT 構造体を格納するグローバルメモリへのハンドルを指定します。このグローバルメモリは、GlobalAlloc 関数で GMEM_MOVEABLE フラグと GMEM_SHARE フラグを指定して割り当てたメモリブロックです。NULL はシステムフォントを示します。
 

このサブ関数に戻り値はありません。

IME_SETCONVERSIONFONTEX で指定したフォントは、未確定文字列の表示にのみ使用できます。

未確定文字列を既定の位置に表示する場合は、システムフォントを使用します。表示位置が既定の位置ではなくなった場合は、以前に指定したフォントを有効にします。

LOGFONT 構造体を格納するグローバルメモリは、アプリケーションが解放します。

変換ウィンドウを表示中の IME が IME_SETCONVERSIONFONTEX コマンドを受け取り、そのコマンドの処理の結果として変換ウィンドウが変化した場合、IME は WM_IME_REPORT:IR_CHANGECONVERT メッセージを送信してください。IME_SETCONVERSIONFONTEX で指定されたフォントが IME で使用中のフォントと同じ場合は、このメッセージを送信しないでください。

IME_SETCONVERSIONMODE

IME の変換モードを設定します。wParam メンバーには、次の値の 1 つ以上を指定します。

意味
IME_MODE_ALPHANUMERIC 英数字変換モードです。この値は IME_MODE_KATAKANA または IME_MODE_HIRAGANA と組み合わせて使用できません。
IME_MODE_KATAKANA カタカナ変換モードです。この値は IME_MODE_ALPHANUMERIC または IME_MODE_HIRAGANA と組み合わせて使用できません。
IME_MODE_HIRAGANA ひらがな変換モードです。この値は IME_MODE_ALPHANUMERIC または IME_MODE_HIRAGANA と組み合わせて使用できません。
IME_MODE_SBCSCHAR 半角文字変換モードです。このパラメーターは IME_MODE_DBCSCHAR と組み合わせて使用できません。
IME_MODE_DBCSCHAR 全角文字変換モードです。このパラメーターは IME_MODE_SBCSCHAR と組み合わせて使用できません。
IME_MODE_ROMAN ローマ字変換モードです。このパラメーターは IME_MODE_NOROMAN と組み合わせて使用できません。
IME_MODE_NOROMAN 非ローマ字変換モードです。このパラメーターは IME_MODE_ROMAN と組み合わせて使用できません。
IME_MODE_CODEINPUT コード入力変換モードです。このパラメーターは IME_MODE_NOCODEINPUT と組み合わせて使用できません。コード入力モードでの IME の動作は、個々の IME に依存します。
IME_MODE_NOCODEINPUT 非コード入力変換モードです。このパラメーターは IME_MODE_CODEINPUT と組み合わせて使用できません。
 

戻り値は、指定された変換モードが正常に設定されたかどうかを示します。新しい変換モードが設定された場合は、直前まで有効だった変換モードの状態を返します。それ以外の場合は NULL を返します。

IME_SETCONVERSIONWINDOW

IME の外接矩形のサイズと位置、および変換ウィンドウの初期位置です。IME は、このサブ関数で指定された位置に未確定文字列を表示します。

wParam メンバーには、次のいずれかの値を指定します。

意味
MCW_DEFAULT 変換ウィンドウを既定の位置(通常は画面の下端)に表示します。

IME_SETCONVERSIONWINDOW メッセージで MCW_DEFAULT スタイルが指定されている場合、IME が既定の位置に変換ウィンドウを表示または描画するときに、IR_OPENCONVERTIR_CHANGECONVERTIR_FULLCONVERTIR_CLOSECONVERT の各メッセージを送信してはなりません。

MCW_WINDOW WM_CONVERTREQUEST または WM_CONVERTREQUESTEX メッセージの wParam パラメーターで指定されたウィンドウ内の、lParam1 メンバーで指定された座標に変換ウィンドウを表示します。lParam1 の値はウィンドウの左上隅を基準とした座標を示し、下位ワードが X 座標、上位ワードが Y 座標を表します。外接矩形は指定されたウィンドウのクライアント矩形であり、かな漢字変換を呼び出す最も一般的な方法です。

IME_SETCONVERSIONWINDOW メッセージで MCW_WINDOW スタイルが指定されている場合、変換ウィンドウの状態が閉じた状態から開いた状態に変化したときは、IME は IR_OPENCOVERT メッセージを送信しなければなりません。変換ウィンドウの状態が開いた状態から閉じた状態に変化したときは、IME は IR_CLOSECONVERT メッセージを送信しなければなりません。ただし例外があります。詳細については IME_WINDOWUPDATE を参照してください。

MCW_WINDOW | MCW_RECT 外接矩形が lParam2 メンバーと lParam3 メンバーで指定される点を除き、MCW_WINDOW と同じです。lParam2 メンバーは左上の点を、lParam3 は右下の点を指定し、いずれも下位ワードが X 座標、上位ワードが Y 座標を表します。座標はウィンドウの左上を基準とします。
MCW_SCREEN 左上隅を lParam1 メンバーで指定して変換ウィンドウを表示します。lParam1 メンバーは、画面の左上隅を原点とする絶対座標を示します。下位ワードが X 座標、上位ワードが Y 座標を表します。外接矩形は画面全体です。

IME_SETCONVERSIONWINDOW メッセージで MCW_SCREEN スタイルが指定されている場合、変換ウィンドウの状態が閉じた状態から開いた状態に変化したときは、IME は IR_OPENCOVERT メッセージを送信しなければなりません。変換ウィンドウの状態が開いた状態から閉じた状態に変化したときは、IME は IR_CLOSECONVERT メッセージを送信しなければなりません。ただし例外があります。詳細については IME_WINDOWUPDATE を参照してください。

MCW_SCREEN | MCW_RECT 外接矩形が lParam2 メンバーと lParam3 メンバーで指定される点を除き、MCW_SCREEN と同じです。lParam2 メンバーは左上の点を、lParam3 は右下の点を指定し、いずれも下位ワードが X 座標、上位ワードが Y 座標を表します。座標は、画面の左上を原点とする絶対座標です。
MCW_HIDDEN [Windows 3.1] このフラグが指定されている場合、IME は変換ウィンドウを表示しません。代わりに、アプリケーション自身が未確定文字列を表示します。lParam1 メンバーは、アプリケーションが表示しているカーソル位置、または注目点の座標を指定します。lParam2 メンバーと lParam3 メンバーは、IME による表示を行わない領域を指定します。確定文字列の候補をポップアップウィンドウに表示する IME は、これらの情報を利用して、確定文字列の候補ウィンドウを表示する位置を決定できます。候補文字列を表示するウィンドウはシステムウィンドウとみなされます。そのため、そのようなウィンドウを表示するかどうか、どこにどのように表示するか、どのキーボード入力を使用するかは、IME に依存します。lParam1lParam2lParam3 の 3 つのメンバーは、画面の左上からの絶対座標を指定し、いずれも下位ワードが X 座標、上位ワードが Y 座標を表します。

MCW_HIDDEN フラグが指定されている場合、IME は IR_UNDETERMINE メッセージを送信して、未確定文字列の表示をアプリケーションに要求します。アプリケーション自身が、このメッセージに含まれる未確定文字列を表示します。

MCW_HIDDEN フラグを指定すると、IME は IR_OPENCONVERTIR_CHANGECONVERTIR_CLOSECONVERT の各メッセージを送信しなくなります。

アプリケーションが MCW_HIDDEN を指定し、同時に確定文字列の候補ウィンドウを表示できないほど大きな矩形を要求した場合は、エラーとして扱ってください。 エラーコードは IME_RD_TOOLONG でなければなりません。

IME_SETCONVERSIONWINDOW メッセージで MCW_HIDDEN スタイルが指定されている場合、IME は IR_OPENCONVERTIR_CHANGECONVERTIR_FULLCONVERTIR_CLOSECONVERT を決して送信してはなりません。

MCW_VERTICAL アプリケーションが文字列を縦書き形式で表示していることを IME に伝えます。このフラグが指定されている場合、変換ウィンドウは縦書き用に表示され、lParam1 メンバーで指定された位置が右上隅になります。このフラグは、MCW_WINDOWMCW_WINDOW|MCW_RECTMCW_SCREEN、または MCW_SCREEN|MCW_RECT と組み合わせて指定できます。IME は MCW_VERTICAL をサポートしなければなりません。
                                MCW_VERTICAL が指定され、選択されているフォントが縦書き用でない場合、IME は既定の縦書き用フォントを使用します。この既定のフォントは次のように作成されます。
  1. SYSTEM_FONT のフォントハンドルを使用して GetObject 関数を呼び出し、フォント情報を LOGFONT 構造体に取得します。
  2. フェイス名の先頭にアットマーク (@) を追加し、escapement と orientation を 270 度に設定してフォントを作成します。
 

戻り値は、コマンドが実行されたかどうかを示します。コマンドの実行に成功した場合は TRUE、それ以外の場合は FALSE です。

未確定文字列が外接矩形からあふれると判断される場合、IME はその文字列を表示する前に、レポートメッセージ WM_IME_REPORT:IR_FULLCONVERT をアプリケーションに送信しなければなりません。アプリケーションがこのメッセージを処理しない場合、その後の表示処理は本仕様では規定されておらず、IME に委ねられます。たとえば、未確定文字列を外接矩形内でスクロールさせたり、一時的に既定の位置へ移動させたりすることが考えられます。

IME が未確定文字列を保持しているときに IME_SETCONVERSIONWINDOW メッセージが呼び出された場合、IME は WM_IME_REPORT:IR_CLOSECONVERT メッセージを送信してください。パラメーターとして指定されたウィンドウに文字列が収まる場合は、IME は WM_IME_REPORT:IR_OPENCONVERT メッセージを送信してください。変換ウィンドウを描画するのは、そのあとにしてください。文字列がウィンドウに収まらない場合、IME は WM_IME_REPORT:IR_FULLCONVERT メッセージを送信してください。

外接矩形の位置は、物理画面の領域外に指定される場合があります。外接矩形全体が物理画面の外にある場合、未確定文字列を表示してはなりません。 外接矩形の一部が物理画面の外にある場合、IME は未確定文字列が画面からはみ出さないように外接矩形をクリップし、表示開始位置も調整します。

変換ウィンドウに表示する最大行数や最大文字数を設定しないことを推奨します。

変換ウィンドウがシステムウィンドウと重なる場合、変換ウィンドウが見えるようにしなければなりません。たとえば、変換ウィンドウの表示を最優先にするか、システムウィンドウを別の場所へ移動させます。

変換ウィンドウのサイズ、表示内容、または表示色が変化した場合、IME は IR_CHANGECONVERT メッセージを送信しなければなりません。ただし、指定されたウィンドウに未確定文字列が収まらない場合は、IR_CHANGECONVERT ではなく IR_FULLCONVERT メッセージを送信しなければなりません。

IME が MCW_WINDOW モードまたは MCW_SCREEN モードから MCW_DEFAULT に移行した場合、未確定文字列が存在するときは IR_CLOSECONVERT メッセージを送信しなければなりません。

IME が MCW_WINDOW モードまたは MCW_SCREEN モードから MCW_HIDDEN に移行した場合、未確定文字列が存在するときは IR_CLOSECONVERT メッセージを送信しなければなりません。

IME が MCW_HIDDEN モードから MCW_DEFAULTMCW_SCREEN、または MCW_WINDOW に移行した場合、IME は未確定文字列 = 0、確定文字列 = 0 として IR_UNDETERMINE メッセージを送信しなければなりません。

IME_SETLEVEL

現在のアプリケーションに対する IME レベルを設定する、韓国語固有のサブ関数です。wParam メンバーには、次のいずれかのレベル値を指定します。

レベル 意味
1 IME をサポートしません。IME 固有のメッセージはすべて無視されます。
2 IME を部分的にサポートします。変換ウィンドウや候補ウィンドウの位置、入力モードや状態など、IME の動作の一部をサポートします。
3 IME を完全にサポートします。
 

IME_SETOPEN

IME のかな漢字変換機能の状態を設定します。

wParam メンバーには、IME を開く場合は 0 以外、IME を閉じる場合は 0 を設定します

戻り値は、かな漢字変換機能の以前の状態を示します。開いていた場合は TRUE、それ以外の場合は FALSE を返します。

IME_SETOPEN によってかな漢字変換機能が閉じられた場合、未確定文字列を確定してはなりません。

IME_SETOPEN によってかな漢字変換機能が閉じられるとき、IME が MCW_WINDOW モードまたは MCW-SCREEN モードで変換ウィンドウが開いている場合、IME は IR_CLOSECONVERT メッセージを送信しなければなりません。ただし、MCW_HIDDEN モードで未確定文字列が存在する場合は、IR_CLOSECONVERT を送信する必要はありません。

IME_SET_MODEK

IME_SETCONVERSIONMODE の韓国語固有版です。

wParamWPARAM8/4+8+4使い方は fnc で指定されたサブ関数によって異なります。
wCountDWORD4+16+8使い方は fnc で指定されたサブ関数によって異なります。
dchSourceDWORD4+20+12使い方は fnc で指定されたサブ関数によって異なります。
dchDestDWORD4+24+16使い方は fnc で指定されたサブ関数によって異なります。
lParam1LPARAM8/4+32+20使い方は fnc で指定されたサブ関数によって異なります。
lParam2LPARAM8/4+40+24使い方は fnc で指定されたサブ関数によって異なります。
lParam3LPARAM8/4+48+28使い方は fnc で指定されたサブ関数によって異なります。

公式ドキュメント

SendIMEMessageEx が、Input Method Editor (IME) メッセージで実行するサブ関数とそのパラメーターを指定するために使用します。この構造体は、それらのサブ関数からの戻り値を受け取るためにも使用されます。

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

各言語での定義

#include <windows.h>

// IMESTRUCT  (x64 56 / x86 32 バイト)
typedef struct IMESTRUCT {
    DWORD fnc;
    WPARAM wParam;
    DWORD wCount;
    DWORD dchSource;
    DWORD dchDest;
    LPARAM lParam1;
    LPARAM lParam2;
    LPARAM lParam3;
} IMESTRUCT;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IMESTRUCT
{
    public uint fnc;
    public UIntPtr wParam;
    public uint wCount;
    public uint dchSource;
    public uint dchDest;
    public IntPtr lParam1;
    public IntPtr lParam2;
    public IntPtr lParam3;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IMESTRUCT
    Public fnc As UInteger
    Public wParam As UIntPtr
    Public wCount As UInteger
    Public dchSource As UInteger
    Public dchDest As UInteger
    Public lParam1 As IntPtr
    Public lParam2 As IntPtr
    Public lParam3 As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class IMESTRUCT(ctypes.Structure):
    _fields_ = [
        ("fnc", wintypes.DWORD),
        ("wParam", ctypes.c_size_t),
        ("wCount", wintypes.DWORD),
        ("dchSource", wintypes.DWORD),
        ("dchDest", wintypes.DWORD),
        ("lParam1", ctypes.c_ssize_t),
        ("lParam2", ctypes.c_ssize_t),
        ("lParam3", ctypes.c_ssize_t),
    ]
#[repr(C)]
pub struct IMESTRUCT {
    pub fnc: u32,
    pub wParam: usize,
    pub wCount: u32,
    pub dchSource: u32,
    pub dchDest: u32,
    pub lParam1: isize,
    pub lParam2: isize,
    pub lParam3: isize,
}
import "golang.org/x/sys/windows"

type IMESTRUCT struct {
	fnc uint32
	wParam uintptr
	wCount uint32
	dchSource uint32
	dchDest uint32
	lParam1 uintptr
	lParam2 uintptr
	lParam3 uintptr
}
type
  IMESTRUCT = record
    fnc: DWORD;
    wParam: NativeUInt;
    wCount: DWORD;
    dchSource: DWORD;
    dchDest: DWORD;
    lParam1: NativeInt;
    lParam2: NativeInt;
    lParam3: NativeInt;
  end;
const IMESTRUCT = extern struct {
    fnc: u32,
    wParam: usize,
    wCount: u32,
    dchSource: u32,
    dchDest: u32,
    lParam1: isize,
    lParam2: isize,
    lParam3: isize,
};
type
  IMESTRUCT {.bycopy.} = object
    fnc: uint32
    wParam: uint
    wCount: uint32
    dchSource: uint32
    dchDest: uint32
    lParam1: int
    lParam2: int
    lParam3: int
struct IMESTRUCT
{
    uint fnc;
    size_t wParam;
    uint wCount;
    uint dchSource;
    uint dchDest;
    ptrdiff_t lParam1;
    ptrdiff_t lParam2;
    ptrdiff_t lParam3;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; IMESTRUCT サイズ: 32 バイト(x86)
dim st, 8    ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; fnc : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; wParam : WPARAM (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; wCount : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dchSource : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dchDest : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; lParam1 : LPARAM (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; lParam2 : LPARAM (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; lParam3 : LPARAM (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IMESTRUCT サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; fnc : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; wParam : WPARAM (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; wCount : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dchSource : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dchDest : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; lParam1 : LPARAM (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; lParam2 : LPARAM (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; lParam3 : LPARAM (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IMESTRUCT
    #field int fnc
    #field intptr wParam
    #field int wCount
    #field int dchSource
    #field int dchDest
    #field intptr lParam1
    #field intptr lParam2
    #field intptr lParam3
#endstruct

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