IRichEditOle
COM公式ドキュメント
IRichEditOle インターフェイスは、リッチエディットコントロールの Component Object Model (COM) 機能を公開します。このインターフェイスは、EM_GETOLEINTERFACE メッセージを送信することで取得できます。このインターフェイスには次のメソッドがあります。
メソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
新しいオブジェクトを作成する際に使用する IOleClientSite インターフェイスを取得します。リッチエディットコントロールに挿入されるすべてのオブジェクトは、この関数が返すクライアントサイトインターフェイスを使用する必要があります。1 つのクライアントサイトは、ちょうど 1 つのオブジェクトに対してのみ使用できます。
| lplpolesite | IOleClientSite** | out | IOleClientSite インターフェイスのアドレス。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。クライアントサイト用のメモリを割り当てられなかった場合は E_OUTOFMEMORY が返されます。
リッチエディットコントロールに現在含まれているオブジェクトの数を返します。
戻り値
Type: LONG
このメソッドはオブジェクトの数を返します。
リッチエディットコントロール内でリンクであるオブジェクトの数を返します。
戻り値
Type: LONG
このメソッドはリンクの数を返します。
リッチエディットコントロール内のオブジェクトに関する情報を、REOBJECT 構造体に格納して取得します。
| iob | INT | in | 情報を返す対象のオブジェクトを指定する 0 から始まるインデックス。このパラメーターが REO_IOB_USE_CP の場合、REOBJECT 構造体で指定された文字位置にあるオブジェクトに関する情報が返されます。 | ||||||||||||
| lpreobject | REOBJECT* | inout | オブジェクトに関する情報を受け取る構造体。この構造体で返されるインターフェイスの参照カウントはインクリメントされています。Release メソッドを使用してカウントをデクリメントするのは呼び出し元の責任です。 | ||||||||||||
| dwFlags | RICH_EDIT_GET_OBJECT_FLAGS | in | 構造体で返すインターフェイスを指定する操作フラグ。dwFlags パラメーターには、次の値の組み合わせを指定できます。
|
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合はエラー値を返します。REOBJECT 構造体用のバッファーが指定されていない場合、または iob の値や文字位置が無効な場合は E_INVALIDARG が返されます。
リッチエディットコントロールにオブジェクトを挿入します。
| lpreobject | REOBJECT* | inout | オブジェクトの情報とインターフェイス。リッチエディットコントロールがインターフェイスを保持する場合は、その参照カウントを自動的にインクリメントします。そのため、インターフェイスが不要であれば呼び出し元は安全に解放できます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。オブジェクトを挿入するためのメモリを割り当てられなかった場合は E_OUTOFMEMORY が返されます。
解説(Remarks)
REOBJECT 構造体の cp メンバーが REO_CP_SELECTION の場合、選択範囲は指定されたオブジェクトで置き換えられます。
オブジェクトを新しい型に変換します。この呼び出しはオブジェクトを再読み込みしますが、更新を強制はしません。更新は呼び出し元が行う必要があります。
| iob | INT | in | 変換するオブジェクトのインデックス。このパラメーターが REO_IOB_SELECTION の場合、選択されているオブジェクトが変換対象になります。 |
| rclsidNew | GUID* | in | オブジェクトの変換先となるクラスのクラス識別子。 |
| lpstrUserTypeNew | LPSTR | in | オブジェクトの変換先となるクラスの、ユーザーに表示される型名。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。インデックスが無効な場合は E_INVALIDARG が返されます。
旧クラスのすべてのオブジェクトをアンロードし、それらのオブジェクトを新クラスのオブジェクトとして扱うよう OLE に指示し、オブジェクトを再読み込みすることで、Activate As の動作を処理します。オブジェクトを再読み込みできない場合は削除されます。
| rclsid | GUID* | in | 旧クラスのクラス識別子。 |
| rclsidAs | GUID* | in | 新クラスのクラス識別子。 |
戻り値
オブジェクトがリッチエディットコントロールに挿入される際に、それらのオブジェクトに与えるホスト名を設定します。ホスト名は、開かれたオブジェクトのコンテナーコンテキストを説明するために、サーバーのユーザーインターフェイスで使用されます。
| lpstrContainerApp | LPSTR | in | コンテナーアプリケーションの名前 (null 終端)。 |
| lpstrContainerObj | LPSTR | in | コンテナーのドキュメントまたはオブジェクトの名前 (null 終端)。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。文字列を保持するためのメモリを割り当てられなかった場合は E_OUTOFMEMORY が返されます。
オブジェクトのフラグ内の link-available ビットの値を設定します。
| iob | INT | in | ビットを設定する対象のオブジェクトのインデックス。このパラメーターが REO_IOB_SELECTION の場合、選択されているオブジェクトのビットが設定対象になります。 |
| fAvailable | BOOL | in | 設定操作で使用する値。値は TRUE または FALSE を指定できます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。インデックスが無効な場合は E_INVALIDARG が返されます。
リッチエディットコントロールがオブジェクトを描画する際に使用するアスペクトを設定します。この呼び出しは、オブジェクトにキャッシュされている描画情報を変更しません。これは呼び出し元が行う必要があります。ただし、この呼び出しによってオブジェクトは再描画されます。
| iob | INT | in | アスペクトを設定する対象のオブジェクトのインデックス。このパラメーターが REO_IOB_SELECTION の場合、選択されているオブジェクトのアスペクトが設定対象になります。 |
| dvaspect | DWORD | in | 描画時に使用するアスペクト。値は OLE によって定義されます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。インデックスが無効な場合は E_INVALIDARG が返されます。
リッチエディットコントロールが、指定されたオブジェクトに関連付けられたストレージインターフェイスへの参照を解放するタイミングを示します。この呼び出しは、オブジェクトの IRichEditOle::HandsOffStorage メソッドを呼び出しません。それは呼び出し元が行う必要があります。
| iob | INT | in | ストレージを解放する対象のオブジェクトのインデックス。このパラメーターが REO_IOB_SELECTION の場合、選択されているオブジェクトのストレージが解放対象になります。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。インデックスが無効な場合は E_INVALIDARG が返されます。
直近の保存操作が完了したこと、およびリッチエディットコントロールがそのオブジェクトに対して別のストレージを保持すべきことを示します。
| iob | INT | in | ストレージを指定する対象のオブジェクトのインデックス。このパラメーターが REO_IOB_SELECTION の場合、選択されているオブジェクトが使用されます。 |
| lpstg | IStorage* | in | オブジェクトの新しいストレージ。ストレージが NULL でない場合、リッチエディットコントロールは現在そのオブジェクトに対して保持しているストレージをすべて解放し、代わりにこの新しいストレージを使用します。 |
戻り値
Type: HRESULT
成功した場合は S_OK を、それ以外の場合は失敗コードを返します。インデックスが無効な場合は E_INVALIDARG が返されます。
リッチエディットコントロールが、現在アクティブなインプレースオブジェクト (存在する場合) を非アクティブ化するタイミングを示します。
戻り値
リッチエディットコントロールがコンテキスト依存ヘルプモードに移行するか、そこから抜けるかを示します。状態変化が発生している場合、リッチエディットコントロールは、現在アクティブなインプレースオブジェクトの IRichEditOle::ContextSensitiveHelp メソッドを呼び出します。
| fEnterMode | BOOL | in | コントロールがコンテキスト依存ヘルプモードに入る (TRUE) か、そこから抜ける (FALSE) かを示すインジケーター。 |
戻り値
エディットコントロール内の範囲に対するクリップボードオブジェクトを取得します。
| lpchrg | CHARRANGE* | inout | クリップボードオブジェクトを作成する対象の範囲。 |
| reco | DWORD | in | 未使用。 |
| lplpdataobj | IDataObject** | out | lpchrg パラメーターで指定された範囲を表すクリップボードオブジェクトの IDataObject インターフェイス。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。メソッドが失敗した場合は、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 無効な引数がありました。 | |
| 操作を実行するのに十分なメモリがありませんでした。 |
クリップボードオブジェクトをリッチエディットコントロールにインポートし、現在の選択範囲を置き換えます。
| lpdataobj | IDataObject* | in | インポートするクリップボードオブジェクト。 |
| cf | WORD | in | 使用するクリップボード形式。0 を指定すると、利用可能な最適な形式が使用されます。 |
| hMetaPict | HGLOBAL | in | オブジェクトのアイコン表示を含むメタファイルへのハンドル。このハンドルは、Paste Special 操作で DVASPECT_ICON 表示アスペクトが必要とされる場合にのみ使用されます。 |
戻り値
Type: HRESULT
成功した場合は S_OK を返します。メソッドが失敗した場合は、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 無効な引数がありました。 | |
| 操作を実行するのに十分なメモリがありませんでした。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IRichEditOle "{00020D00-0000-0000-C000-000000000046}" #usecom global IRichEditOle IID_IRichEditOle "{}" #comfunc global IRichEditOle_GetClientSite 3 sptr #comfunc global IRichEditOle_GetObjectCount 4 #comfunc global IRichEditOle_GetLinkCount 5 #comfunc global IRichEditOle_GetObject 6 int,var,int #comfunc global IRichEditOle_InsertObject 7 var #comfunc global IRichEditOle_ConvertObject 8 int,var,str #comfunc global IRichEditOle_ActivateAs 9 var,var #comfunc global IRichEditOle_SetHostNames 10 str,str #comfunc global IRichEditOle_SetLinkAvailable 11 int,int #comfunc global IRichEditOle_SetDvaspect 12 int,int #comfunc global IRichEditOle_HandsOffStorage 13 int #comfunc global IRichEditOle_SaveCompleted 14 int,sptr #comfunc global IRichEditOle_InPlaceDeactivate 15 #comfunc global IRichEditOle_ContextSensitiveHelp 16 int #comfunc global IRichEditOle_GetClipboardData 17 var,int,sptr #comfunc global IRichEditOle_ImportDataObject 18 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IRichEditOle "{00020D00-0000-0000-C000-000000000046}" #usecom global IRichEditOle IID_IRichEditOle "{}" #comfunc global IRichEditOle_GetClientSite 3 sptr #comfunc global IRichEditOle_GetObjectCount 4 #comfunc global IRichEditOle_GetLinkCount 5 #comfunc global IRichEditOle_GetObject 6 int,sptr,int #comfunc global IRichEditOle_InsertObject 7 sptr #comfunc global IRichEditOle_ConvertObject 8 int,sptr,str #comfunc global IRichEditOle_ActivateAs 9 sptr,sptr #comfunc global IRichEditOle_SetHostNames 10 str,str #comfunc global IRichEditOle_SetLinkAvailable 11 int,int #comfunc global IRichEditOle_SetDvaspect 12 int,int #comfunc global IRichEditOle_HandsOffStorage 13 int #comfunc global IRichEditOle_SaveCompleted 14 int,sptr #comfunc global IRichEditOle_InPlaceDeactivate 15 #comfunc global IRichEditOle_ContextSensitiveHelp 16 int #comfunc global IRichEditOle_GetClipboardData 17 sptr,int,sptr #comfunc global IRichEditOle_ImportDataObject 18 sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。