Win32 API 日本語リファレンス
ホームUI.TabletPC › RECO_GUIDE

RECO_GUIDE

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

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

フィールド

フィールドサイズx64x86説明
xOriginINT4+0+0インクスペース座標での最初のボックスの左端です。
yOriginINT4+4+4インクスペース座標での最初のボックスの上端です。
cxBoxINT4+8+8インクスペース単位での各ボックスの幅です。
cyBoxINT4+12+12インクスペース単位での各ボックスの高さです。
cxBaseINT4+16+16ガイドラインまでのマージンです。これは、隣接するボックス間の距離 (インクスペース単位) の半分です。
cyBaseINT4+20+20ベースラインからボックスの上端までの垂直方向の距離 (インクスペース単位) です。
cHorzBoxINT4+24+24ボックスの列数です。
cVertBoxINT4+28+28ボックスの行数です。
cyMidINT4+32+32ベースラインからミッドラインまでの距離 (インクスペース単位) です。ミッドラインが存在しない場合は 0 です。

公式ドキュメント

認識エンジンに渡すインクの境界を定義します。

解説(Remarks)

ユーザーが書き込むことを想定した画面上にアプリケーションがガイドラインを描画している場合、アプリケーションは認識エンジンに通知するために RECO_GUIDE 構造体に値を設定してください。RECO_GUIDE 構造体は認識エンジンが使用するためのものです。RECO_GUIDE 構造体を設定しても、それ自体が画面に視覚的な手掛かりを描画することはありません。視覚的な手掛かりは、アプリケーションまたはコントロールが描画します。

xOrigin メンバーと yOrigin メンバーは、書き込む領域の左上隅のインクスペース座標です。cyBox メンバーと cxBox メンバーは、書き込む個々のボックスの高さと幅です。ガイドが罫線形式の場合、cyBox と cxBox は各罫線の高さと幅になります。cHorzBox メンバーと cVertBox メンバーは、列数と行数を指定します。cyBase メンバーは、ボックス内のベースラインを指定します。cyBase メンバーに 0 を設定すると、ベースラインが存在しないことを示します。cxBase メンバーは、書き込みの開始が想定されるボックスの端から、ガイドラインの端までの水平方向の変位を示します。

cHorzBox と cVertBox の値を使用して、使用する認識入力の種類を制御します。cHorzBox と cVertBox がどちらも 0 より大きい場合は、ボックス入力が使用されます。次の表に、指定できる入力モードと、各モードで cHorzBox および cVertBox に設定する値を示します。

この種類の入力の場合 cHorzBox に設定する値 cVertBox に設定する値
自由入力 0 0
水平罫線 1 本の罫線入力 0 1
垂直罫線 1 本の罫線入力 1 0
水平罫線 n 本の罫線入力 0 n
垂直罫線 n 本の罫線入力 n 0
ボックス 1 個のボックス入力 1 1
n 個のボックスを水平方向に並べたボックス入力 n 1
x 行 z 列のグリッド状に並べたボックス入力 z x

次の図は、5 列 3 行のボックスに対する認識ガイド構造体を表しています。

認識ガイド構造体の図 次の図は、前の図に含まれる 1 つのボックスを表しています。 認識ガイドの 1 つのボックスの図
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// RECO_GUIDE  (x64 36 / x86 36 バイト)
typedef struct RECO_GUIDE {
    INT xOrigin;
    INT yOrigin;
    INT cxBox;
    INT cyBox;
    INT cxBase;
    INT cyBase;
    INT cHorzBox;
    INT cVertBox;
    INT cyMid;
} RECO_GUIDE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RECO_GUIDE
{
    public int xOrigin;
    public int yOrigin;
    public int cxBox;
    public int cyBox;
    public int cxBase;
    public int cyBase;
    public int cHorzBox;
    public int cVertBox;
    public int cyMid;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RECO_GUIDE
    Public xOrigin As Integer
    Public yOrigin As Integer
    Public cxBox As Integer
    Public cyBox As Integer
    Public cxBase As Integer
    Public cyBase As Integer
    Public cHorzBox As Integer
    Public cVertBox As Integer
    Public cyMid As Integer
End Structure
import ctypes
from ctypes import wintypes

class RECO_GUIDE(ctypes.Structure):
    _fields_ = [
        ("xOrigin", ctypes.c_int),
        ("yOrigin", ctypes.c_int),
        ("cxBox", ctypes.c_int),
        ("cyBox", ctypes.c_int),
        ("cxBase", ctypes.c_int),
        ("cyBase", ctypes.c_int),
        ("cHorzBox", ctypes.c_int),
        ("cVertBox", ctypes.c_int),
        ("cyMid", ctypes.c_int),
    ]
#[repr(C)]
pub struct RECO_GUIDE {
    pub xOrigin: i32,
    pub yOrigin: i32,
    pub cxBox: i32,
    pub cyBox: i32,
    pub cxBase: i32,
    pub cyBase: i32,
    pub cHorzBox: i32,
    pub cVertBox: i32,
    pub cyMid: i32,
}
import "golang.org/x/sys/windows"

type RECO_GUIDE struct {
	xOrigin int32
	yOrigin int32
	cxBox int32
	cyBox int32
	cxBase int32
	cyBase int32
	cHorzBox int32
	cVertBox int32
	cyMid int32
}
type
  RECO_GUIDE = record
    xOrigin: Integer;
    yOrigin: Integer;
    cxBox: Integer;
    cyBox: Integer;
    cxBase: Integer;
    cyBase: Integer;
    cHorzBox: Integer;
    cVertBox: Integer;
    cyMid: Integer;
  end;
const RECO_GUIDE = extern struct {
    xOrigin: i32,
    yOrigin: i32,
    cxBox: i32,
    cyBox: i32,
    cxBase: i32,
    cyBase: i32,
    cHorzBox: i32,
    cVertBox: i32,
    cyMid: i32,
};
type
  RECO_GUIDE {.bycopy.} = object
    xOrigin: int32
    yOrigin: int32
    cxBox: int32
    cyBox: int32
    cxBase: int32
    cyBase: int32
    cHorzBox: int32
    cVertBox: int32
    cyMid: int32
struct RECO_GUIDE
{
    int xOrigin;
    int yOrigin;
    int cxBox;
    int cyBox;
    int cxBase;
    int cyBase;
    int cHorzBox;
    int cVertBox;
    int cyMid;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RECO_GUIDE サイズ: 36 バイト(x64)
dim st, 9    ; 4byte整数×9(構造体サイズ 36 / 4 切り上げ)
; xOrigin : INT (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; yOrigin : INT (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; cxBox : INT (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; cyBox : INT (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; cxBase : INT (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; cyBase : INT (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; cHorzBox : INT (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; cVertBox : INT (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; cyMid : INT (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global RECO_GUIDE
    #field int xOrigin
    #field int yOrigin
    #field int cxBox
    #field int cyBox
    #field int cxBase
    #field int cyBase
    #field int cHorzBox
    #field int cVertBox
    #field int cyMid
#endstruct

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