SetFlags
関数シグネチャ
// inkobjcore.dll
#include <windows.h>
HRESULT SetFlags(
HRECOCONTEXT hrc,
DWORD dwFlags
);パラメーター
| 名前 | 型 | 方向 | 説明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hrc | HRECOCONTEXT | in | 認識エンジンコンテキストへのハンドル。 | ||||||||||||||
| dwFlags | DWORD | in | 次の表は、認識エンジンがインクをどのように解釈し、結果文字列を決定するかを指定するために設定できるフラグの一覧です。必要に応じて OR 演算子 (|) を使用してフラグを組み合わせてください。
|
戻り値の型: HRESULT
公式ドキュメント
認識エンジンがインクをどのように解釈し、結果文字列を決定するかを指定します。インクを初めて処理する前に、この関数を呼び出してください。したがって、Process 関数を呼び出す前に SetFlags 関数を呼び出します。
戻り値
この関数は次の値のいずれかを返すことがあります。
| HRESULT 値 | 説明 |
|---|---|
| 成功しました。 | |
| フラグが無効です。 | |
| 認識エンジンはこの関数をサポートしていません。 | |
| 操作を完了するためのメモリを割り当てることができません。 | |
| 不特定のエラーが発生しました。 | |
| コンテキストが無効であるか、パラメーターのいずれかが無効なポインターです。 |
解説(Remarks)
Microsoft Windows XP Tablet PC Edition Development Kit 1.7 より前のバージョンでは、Tablet PC Input Panel がスマートスペーシングを実行していました。Tablet PC SDK 1.7 以降も、Input Panel は予備的なスペーシングの推奨を含む結果を生成します。ただし、Tablet PC Input Panel のスペーシング結果は、認識エンジンの推奨 (結果) によって変更される場合があります。認識エンジンは、テキストのコンテキスト情報 (Input Panel が行った SetTextContext の呼び出しに基づく) と内部の言語モデル規則を使用することで、これを実現できます。
Input Panel は、RECOFLAG_AUTOSPACE フラグを設定してこの関数を呼び出すことにより、認識エンジンが自動スペーシングに対応しているかどうかを判断できます。認識エンジンが自動スペーシングをサポートしていない場合は、E_INVALIDARG が返されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// inkobjcore.dll
#include <windows.h>
HRESULT SetFlags(
HRECOCONTEXT hrc,
DWORD dwFlags
);[DllImport("inkobjcore.dll", ExactSpelling = true)]
static extern int SetFlags(
IntPtr hrc, // HRECOCONTEXT
uint dwFlags // DWORD
);<DllImport("inkobjcore.dll", ExactSpelling:=True)>
Public Shared Function SetFlags(
hrc As IntPtr, ' HRECOCONTEXT
dwFlags As UInteger ' DWORD
) As Integer
End Function' hrc : HRECOCONTEXT
' dwFlags : DWORD
Declare PtrSafe Function SetFlags Lib "inkobjcore" ( _
ByVal hrc As LongPtr, _
ByVal dwFlags As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
SetFlags = ctypes.windll.inkobjcore.SetFlags
SetFlags.restype = ctypes.c_int
SetFlags.argtypes = [
wintypes.HANDLE, # hrc : HRECOCONTEXT
wintypes.DWORD, # dwFlags : DWORD
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('inkobjcore.dll')
SetFlags = Fiddle::Function.new(
lib['SetFlags'],
[
Fiddle::TYPE_VOIDP, # hrc : HRECOCONTEXT
-Fiddle::TYPE_INT, # dwFlags : DWORD
],
Fiddle::TYPE_INT)#[link(name = "inkobjcore")]
extern "system" {
fn SetFlags(
hrc: *mut core::ffi::c_void, // HRECOCONTEXT
dwFlags: u32 // DWORD
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("inkobjcore.dll")]
public static extern int SetFlags(IntPtr hrc, uint dwFlags);
"@
$api = Add-Type -MemberDefinition $sig -Name 'inkobjcore_SetFlags' -Namespace Win32 -PassThru
# $api::SetFlags(hrc, dwFlags)#uselib "inkobjcore.dll"
#func global SetFlags "SetFlags" sptr, sptr
; SetFlags hrc, dwFlags ; 戻り値は stat
; hrc : HRECOCONTEXT -> "sptr"
; dwFlags : DWORD -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。#uselib "inkobjcore.dll"
#cfunc global SetFlags "SetFlags" sptr, int
; res = SetFlags(hrc, dwFlags)
; hrc : HRECOCONTEXT -> "sptr"
; dwFlags : DWORD -> "int"; HRESULT SetFlags(HRECOCONTEXT hrc, DWORD dwFlags)
#uselib "inkobjcore.dll"
#cfunc global SetFlags "SetFlags" intptr, int
; res = SetFlags(hrc, dwFlags)
; hrc : HRECOCONTEXT -> "intptr"
; dwFlags : DWORD -> "int"import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
inkobjcore = windows.NewLazySystemDLL("inkobjcore.dll")
procSetFlags = inkobjcore.NewProc("SetFlags")
)
// hrc (HRECOCONTEXT), dwFlags (DWORD)
r1, _, err := procSetFlags.Call(
uintptr(hrc),
uintptr(dwFlags),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction SetFlags(
hrc: THandle; // HRECOCONTEXT
dwFlags: DWORD // DWORD
): Integer; stdcall;
external 'inkobjcore.dll' name 'SetFlags';result := DllCall("inkobjcore\SetFlags"
, "Ptr", hrc ; HRECOCONTEXT
, "UInt", dwFlags ; DWORD
, "Int") ; return: HRESULT●SetFlags(hrc, dwFlags) = DLL("inkobjcore.dll", "int SetFlags(void*, dword)")
# 呼び出し: SetFlags(hrc, dwFlags)
# hrc : HRECOCONTEXT -> "void*"
# dwFlags : DWORD -> "dword"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "inkobjcore" fn SetFlags(
hrc: ?*anyopaque, // HRECOCONTEXT
dwFlags: u32 // DWORD
) callconv(std.os.windows.WINAPI) i32;proc SetFlags(
hrc: pointer, # HRECOCONTEXT
dwFlags: uint32 # DWORD
): int32 {.importc: "SetFlags", stdcall, dynlib: "inkobjcore.dll".}pragma(lib, "inkobjcore");
extern(Windows)
int SetFlags(
void* hrc, // HRECOCONTEXT
uint dwFlags // DWORD
);ccall((:SetFlags, "inkobjcore.dll"), stdcall, Int32,
(Ptr{Cvoid}, UInt32),
hrc, dwFlags)
# hrc : HRECOCONTEXT -> Ptr{Cvoid}
# dwFlags : DWORD -> UInt32
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
int32_t SetFlags(
void* hrc,
uint32_t dwFlags);
]]
local inkobjcore = ffi.load("inkobjcore")
-- inkobjcore.SetFlags(hrc, dwFlags)
-- hrc : HRECOCONTEXT
-- dwFlags : DWORD
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('inkobjcore.dll');
const SetFlags = lib.func('__stdcall', 'SetFlags', 'int32_t', ['void *', 'uint32_t']);
// SetFlags(hrc, dwFlags)
// hrc : HRECOCONTEXT -> 'void *'
// dwFlags : DWORD -> 'uint32_t'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("inkobjcore.dll", {
SetFlags: { parameters: ["pointer", "u32"], result: "i32" },
});
// lib.symbols.SetFlags(hrc, dwFlags)
// hrc : HRECOCONTEXT -> "pointer"
// dwFlags : DWORD -> "u32"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t SetFlags(
void* hrc,
uint32_t dwFlags);
C, "inkobjcore.dll");
// $ffi->SetFlags(hrc, dwFlags);
// hrc : HRECOCONTEXT
// dwFlags : DWORD
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface Inkobjcore extends StdCallLibrary {
Inkobjcore INSTANCE = Native.load("inkobjcore", Inkobjcore.class);
int SetFlags(
Pointer hrc, // HRECOCONTEXT
int dwFlags // DWORD
);
}@[Link("inkobjcore")]
lib Libinkobjcore
fun SetFlags = SetFlags(
hrc : Void*, # HRECOCONTEXT
dwFlags : UInt32 # DWORD
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef SetFlagsNative = Int32 Function(Pointer<Void>, Uint32);
typedef SetFlagsDart = int Function(Pointer<Void>, int);
final SetFlags = DynamicLibrary.open('inkobjcore.dll')
.lookupFunction<SetFlagsNative, SetFlagsDart>('SetFlags');
// hrc : HRECOCONTEXT -> Pointer<Void>
// dwFlags : DWORD -> Uint32
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function SetFlags(
hrc: THandle; // HRECOCONTEXT
dwFlags: DWORD // DWORD
): Integer; stdcall;
external 'inkobjcore.dll' name 'SetFlags';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "SetFlags"
c_SetFlags :: Ptr () -> Word32 -> IO Int32
-- hrc : HRECOCONTEXT -> Ptr ()
-- dwFlags : DWORD -> Word32
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let setflags =
foreign "SetFlags"
((ptr void) @-> uint32_t @-> returning int32_t)
(* hrc : HRECOCONTEXT -> (ptr void) *)
(* dwFlags : DWORD -> uint32_t *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library inkobjcore (t "inkobjcore.dll"))
(cffi:use-foreign-library inkobjcore)
(cffi:defcfun ("SetFlags" set-flags :convention :stdcall) :int32
(hrc :pointer) ; HRECOCONTEXT
(dw-flags :uint32)) ; DWORD
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $SetFlags = Win32::API::More->new('inkobjcore',
'int SetFlags(HANDLE hrc, DWORD dwFlags)');
# my $ret = $SetFlags->Call($hrc, $dwFlags);
# hrc : HRECOCONTEXT -> HANDLE
# dwFlags : DWORD -> DWORD
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。関連項目
- f SetFactoid — 認識コンテキストにファクトイドを設定し入力を制約する。
- f SetTextContext — 認識コンテキストに前後の文脈テキストを設定する。