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

IMathInputControl

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDeba615aa-fac6-4738-ba5f-ff09e9fe473e継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

インク入力を解釈して数式として出力するためのメソッドを公開します。

メソッド 17

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Show()

コントロールを表示します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Math Input Control が表示されていない場合に表示します。コントロールが既に表示されている場合は、コントロールを z オーダーの最前面に移動します。 SetPosition が呼び出されていない場合、Show はコントロールを画面の左上隅 (画面座標で (0, 0)) に表示します。 コントロールの幅と高さは最小値になります。


    HRESULT hr = CoInitialize(NULL);
    hr = g_spMIC.CoCreateInstance(CLSID_MathInputControl);
    hr = g_spMIC->EnableExtendedButtons(VARIANT_TRUE);
    hr = g_spMIC->Show();  
    
vtbl 8 HRESULT Hide()

コントロールを非表示にします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT IsVisible(VARIANT_BOOL* pvbShown)

コントロールが表示されているかどうかを判断します。

pvbShownVARIANT_BOOL*outコントロールを表示する場合は VARIANT_TRUE、コントロールを非表示にする場合は VARIANT_FALSE です。

戻り値

このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
pvbShown パラメーターが NULL です。
vtbl 10 HRESULT GetPosition(INT* Left, INT* Top, INT* Right, INT* Bottom)

コントロールの位置とサイズを取得します。

LeftINT*outコントロールの左端の位置。
TopINT*outコントロールの上端の位置。
RightINT*outコントロールの右端の位置。
BottomINT*outコントロールの下端の位置。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、コントロールが表示されていない場合でもコントロールのサイズと位置を返します。

コントロールの作成直後にこのメソッドを呼び出した場合は、コントロールの最小の幅と高さを返します。

vtbl 11 HRESULT SetPosition(INT Left, INT Top, INT Right, INT Bottom)

コントロールの位置とサイズを変更します。

LeftINTinコントロールの左端の位置。
TopINTinコントロールの上端の位置。
RightINTinコントロールの右端の位置。
BottomINTinコントロールの下端の位置。

戻り値

このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
コントロールのサイズは変更されましたが、結果として得られた幅、高さ、またはその両方が入力パラメーターと一致しません。
E_FAIL
不特定のエラーが発生しました。

解説(Remarks)

このメソッドは、コントロールの表示状態にかかわらず呼び出すことができます。

パラメーターが有効でない場合でも、このメソッドは成功します。矩形がコントロールの最大許容サイズ (デスクトップウィンドウ) より大きい場合は、代わりに可能な最大サイズが使用されます。矩形がコントロールの最小サイズより小さい場合、またはインクと結果プレビューを保持できないほど小さい場合は、代わりに可能な最小サイズが使用されます。

このメソッドが S_FALSE を返した場合、GetPosition メソッドはコントロールの実際のサイズ情報を返します。

vtbl 12 HRESULT Clear()

コントロールからすべてのインクを消去します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT SetCustomPaint(INT Element, VARIANT_BOOL Paint)

ボタンまたは背景をカスタム描画するかどうかを設定します。

ElementINTinボタンまたは背景の識別子。
PaintVARIANT_BOOLin指定した UI 要素のカスタム描画を有効にする場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

カスタム描画が有効な場合、ボタンまたは背景は少なくとも部分的に (場合によっては完全に) コンテナーによって描画されます。

vtbl 14 HRESULT SetCaptionText(LPWSTR CaptionText)

ウィンドウの作成時にコントロールのキャプションとして使用される文字列を変更します。

CaptionTextLPWSTRinキャプションのテキスト。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 15 HRESULT LoadInk(IInkDisp* Ink)

インクを処理し、認識を実行します。

InkIInkDisp*inoptionalインク (手書き) オブジェクト。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、コントロールが表示されている場合にのみ動作します。 インクがコントロールの現在のサイズを超え、かつ自動拡大が有効になっている場合、コントロールは入力に合わせて領域を確保しようとします。十分な領域を確保できない場合、インクは利用可能な最大サイズに収まるように比例して縮小されます。

vtbl 16 HRESULT SetOwnerWindow(INT_PTR OwnerWindow)

このコントロールを所有するウィンドウを変更します。

OwnerWindowINT_PTRin所有者ウィンドウへのハンドル。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Math Input Control は、常にそれを所有するウィンドウの前面に表示されます。

vtbl 17 HRESULT EnableExtendedButtons(VARIANT_BOOL Extended)

拡張されたコントロールボタンのセットを表示するかどうかを設定します。

ExtendedVARIANT_BOOLin拡張ボタンセットを表示する場合は VARIANT_TRUE、基本ボタンセットを表示する場合は VARIANT_FALSE です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

既定では基本ボタンセットが表示されます。

基本ボタンセットには、ClearEraseInsertSelect and CorrectWrite の各ボタンが含まれます。拡張ボタンセットには、基本セットに加えて Redo ボタンと Undo ボタンが含まれます。

次の画像は、拡張ボタンを有効にした Math Input Control を示しています。

拡張ボタンを有効にした Math Input Control 次の画像は、拡張ボタンを無効にした Math Input Control を示しています。 拡張ボタンを無効にした Math Input Control


    hr = g_spMIC->EnableExtendedButtons(VARIANT_TRUE);
  
vtbl 18 HRESULT GetPreviewHeight(INT* Height)

プレビュー領域の高さをピクセル単位で取得します。

HeightINT*outプレビュー領域の高さ (ピクセル単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

コントロールのサイズを手動で変更すると、結果プレビュー領域の高さに影響する場合があります。

vtbl 19 HRESULT SetPreviewHeight(INT Height)

プレビュー領域の高さをピクセル単位で変更します。

HeightINTinプレビュー領域の高さ (ピクセル単位)。

戻り値

このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
Height パラメーターで指定された高さがコントロールの範囲外です。

解説(Remarks)

プレビュー領域には、コントロールの現在の高さに応じてあらかじめ定義された最小サイズと最大サイズがあります。 このメソッドが S_FALSE を返した場合、GetPreviewHeight メソッドはコントロールの実際のサイズ情報を返します。

次の画像は、既定のプレビュー高さの Math Input Control を示しています。

既定のプレビュー高さの Math Input Control 次の画像は、カスタムのプレビュー高さを設定した Math Input Control を示しています。 カスタムのプレビュー高さを設定した Math Input Control


    CComPtr<IMathInputControl> g_spMIC; // Math Input Control
        
    // プレビューの高さを設定します
    // 注: 先にコントロールを初期化しておく必要があります
    void CMath_Input_Control_testDlg::OnBnClickedSetPreviewAreaSize()
    {
      LONG height = 200;
      HRESULT hr = S_OK;
      hr = g_spMIC->SetPreviewHeight(height);
    }          
        
vtbl 20 HRESULT EnableAutoGrow(VARIANT_BOOL AutoGrow)

コントロールの現在の範囲を超えて入力が行われたときに、コントロールを自動的に拡大するかどうかを設定します。

AutoGrowVARIANT_BOOLin自動拡大を有効にする場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

自動拡大は既定で有効になっています。

vtbl 21 HRESULT AddFunctionName(LPWSTR FunctionName)

認識エンジンが受け付けるカスタム数学関数の一覧に、新しい関数名の定義を追加します。

FunctionNameLPWSTRin追加する関数の名前。

戻り値

このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
名前を追加できませんでした。

解説(Remarks)

この関数は、既定の辞書に存在しないカスタム数学関数を追加するために使用します。関数が関数辞書に追加されると、認識エンジンはその関数を読み取れるようになります。ただし、カスタム関数名は、筆記体では単語全体としてではなく 1 文字ずつしか認識されない場合があります。

vtbl 22 HRESULT RemoveFunctionName(LPWSTR FunctionName)

認識エンジンが受け付けるカスタム数学関数の一覧から、関数名の定義を削除します。

FunctionNameLPWSTRin削除する関数の名前。

戻り値

このメソッドは HRESULT を返します。有効な値には次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
指定された数学関数は、認識エンジンが受け付けるカスタム数学関数の一覧に存在しないため削除できません。
vtbl 23 HRESULT GetHoverIcon(IPictureDisp** HoverImage)

Math Input Control を起動するためのホバーターゲットに使用するアイコンを取得します。

HoverImageIPictureDisp**outホバーターゲットアイコンへのポインターのアドレス。

戻り値

このメソッドは HRESULT を返します。返される可能性のあるコードには次の表の値が含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
アイコンを取得できませんでした。

解説(Remarks)

ホバーターゲットを実装する場合は、このアイコンを使用することを強く推奨します。 アイコンは .ico 形式で返され、システムの DPI (dots per inch) 設定に一致します。

アイコンは、幅と高さが固定された 32 ビット画像として提供されます。 96 DPI では、値は Width = 63、Height = 49 です。 その他の DPI では、これらの値はそれに応じて変更されます。 たとえば 144 DPI のシステムでは、Width = 63 * 144 / 96、Height = 49 *144 / 96 となります。 ホバーアイコンを取得したアプリケーションは、アイコンリソースを解放する責任があります。


CComPtr <IMathInputControl> g_spMIC; // Math Input Control

BOOL TestDlg::OnInitDialog(){
    
    HRESULT hr = CoInitialize(NULL);
    hr = g_spMIC.CoCreateInstance(CLSID_MathInputControl);

    CComPtr<IPictureDisp> hoverImage;
    CComPtr<IPicture> pictureHoverImage;  

    g_spMIC->GetHoverIcon(&hoverImage); 

    hoverImage.QueryInterface(&pictureHoverImage);

    short type;
    pictureHoverImage->get_Type(&type);
    
    if (type == PICTYPE_ICON){
        OLE_HANDLE oleHandle;
        hr = pictureHoverImage->get_Handle(&oleHandle);        

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

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMathInputControl "{EBA615AA-FAC6-4738-BA5F-FF09E9FE473E}"
#usecom global IMathInputControl IID_IMathInputControl "{C561816C-14D8-4090-830C-98D994B21C7B}"
#comfunc global IMathInputControl_Show                   7
#comfunc global IMathInputControl_Hide                   8
#comfunc global IMathInputControl_IsVisible              9 var
#comfunc global IMathInputControl_GetPosition            10 var,var,var,var
#comfunc global IMathInputControl_SetPosition            11 int,int,int,int
#comfunc global IMathInputControl_Clear                  12
#comfunc global IMathInputControl_SetCustomPaint         13 int,int
#comfunc global IMathInputControl_SetCaptionText         14 wstr
#comfunc global IMathInputControl_LoadInk                15 sptr
#comfunc global IMathInputControl_SetOwnerWindow         16 sptr
#comfunc global IMathInputControl_EnableExtendedButtons  17 int
#comfunc global IMathInputControl_GetPreviewHeight       18 var
#comfunc global IMathInputControl_SetPreviewHeight       19 int
#comfunc global IMathInputControl_EnableAutoGrow         20 int
#comfunc global IMathInputControl_AddFunctionName        21 wstr
#comfunc global IMathInputControl_RemoveFunctionName     22 wstr
#comfunc global IMathInputControl_GetHoverIcon           23 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。