/***************************************************** SariAPLクラス(CLSID_SariAPL) interface ISRAPL (ver.1.0)解説 1999/12 by Kazuhiro Kito_ *****************************************************/ 【概説】 SARIの基本となるインターフェースです。 デュアルインターフェースです。 外部からSARIオブジェクトを作成するには、CoCreateInstanceでこのインターフ ェースを作ります。 アドインプログラムでは、ISariAddinのOnConnectionメソッドにおいてこのイン ターフェースが渡されます。 (なをこの説明中に使うTRUEは0以外の数値, FALSEは0です。) 【メソッド】 HRESULT ShowApp(); <説明> SARIのメインウィンドウを表示します。 CoCreateInstanceで外部からSARIオブジェクトを作成した場合は、まず このメソッドでメインウィンドウを作成してください。メインウィンド ウがない状態では、他のインターフェースを取得することができませ ん。 アドインプログラムからはこのメソッドを呼ぶ必要はありませんし、ま た呼ばないでください。 HRESULT AddCommand( [in]long lCookie, // SARIから渡されたCookie値 [in]long lInnerNumber, //アドイン内部でのコマンドの番号。 [in]BSTR bsCommandName,// 登録するコマンドの名前。 [in]VARIANT_BOOL bMenu,// 登録と同時にメニューを作成するか。_ [out, retval]long *plCommandNumber //SARI内部におけるコマンド番号。 ); <説明> SARIに任意のコマンドを登録します。 アドインプログラムが、ISariAddinインターフェースのOnConnectionメ ソッドのなかで、自身のコマンドをSARIに登録するために使います。 第1パラメータは、ISariAddinのOnConnectionメソッドにおいて、その Addinを他から識別するためにSARIから渡されるCookie値を指定します。 第2パラメータは、登録しようとしているコマンドの、そのアドイン内 部での番号です。この番号は正の整数であり、かつそのアドイン内部で 一意であれば、任意のものが使えます。 第3パラメータはメニューやショートカットキーの割り当てに使うコマ ンド名です。 第4パラメータをTRUEにすると、コマンドの登録と同時にメニューも作 成されます。 登録が成功すると、第5パラメータに、そのコマンドのSARI内部におけ る番号が格納されて返ります。このコマンド番号は、ツールバーの作成 とショートカットキーの割り当てにおいて使用します。 具体的な使用法は添付サンプルソースをご覧ください。 HRESULT SetAddinMenu( [in]long lCommandNumber //SARI内部におけるコマンド番号。 ); <説明> SARIのアドインメニューにコマンドをひとつだけ追加します。 パラメータは、AddCommandメソッドで得た数値です。 HRESULT SetAddinMenuGroup( [in]BSTR bsGroupName, // ポップアップメニューの名前。_ [in]VARIANT vrCommandNumber// コマンド番号を格納したSAFEARRAY ); <説明> 一連のコマンドをまとめてSARIのアドインメニューのポップアップメニ ューにします。 第1パラメータにはポップアップメニューの名前を指定します。 第2パラメータでは、 vrCommandNumber.vt=(VT_ARRAY|VT_I4); とし、long型のSAFEARRAYを指定してください。インデックスの下底は0 にします。そしてコマンドの数だけの要素をつくり、各要素には、 AddCommandメソッドで得たSARI内部のコマンド番号を収納します。 添付サンプルコードに例があります。参考にしてください。 HRESULT CreateToolBar( [in]long lCookie, //SARIから渡されたCookie値 [in]BSTR bsName, //ツールバーの名前 [in]long lResourseID, //ツールバーのビットマップのリソースID [in]VARIANT vrCommandNumber// コマンド番号を格納したSAFEARRAY ); <説明> SARIにツールバーを作ります。ツールバーのビットマップは一つのボタ ンが16x15ピクセルの大きさを持った、ツールバー用のビットマップであ る必要があります。また割り当てるコマンドの数とビットマップの大き さが一致していなければなりません。具体的な使用法は、添付サンプル ソースのOnConnectionメソッドを参照してください。 HRESULT GetMainWindowHandle( [out]long *lhwnd, // メインウィンドウのハンドル。 ); <説明> SARIのメインウィンドウのハンドルを得ます。 このメソッドはSARIのメインウィンドウが作成された後でなければ失敗 します。すなわち、外部からCoCreatInstanceなどでSARIオブジェクトを 作ったときはShowApp()メソッドを呼び出したあと、アドインプログラム の場合は、OnNewInstanceが通知された後です。 HRESULT FindShortcutKey( [in]long lCommandNumber,//SARI内部のコマンド番号を指定 [out]VARIANT *pvrState, //Shift,Ctlr, Altキーの状態格納用 [out]VARIANT *pvrVKey //仮想キーコード格納用 ); <説明> ひとつのコマンドに対してショートカットキーが複数個割り当てられて いることがあります。このメソッドは、あるコマンドに割り当てられて いるショートカットキーのすべてを、SAFEARRAYとして取得します。 第1パラメータには、調べる対象のコマンド番号を指定します。 第2パラメータと第3パラメータが結果です。 第2パラメータではlong型のSAFEARRAY、第3パラメータではshort型の SAFEARRAYが返ります。 第2パラメータの要素である各long値の上位16ビットには2ストロ ークキーの状態が入ります。すなわち、 0 =2ストロークキーではない。 1 =2ストロークキーA 2 =2ストロークキーB 3 =2ストロークキーC 4 =2ストロークキーD 下位16ビット(実際は3ビット)にShift, Ctrl, Altキーの状態が入りま す。すなわち、これらのキーを押した状態を、各ビットが立っているか どうかで示します。 Shiftキー 0x00000001 Ctrlキー 0x00000002 Alt キー 0x00000004 です。 第3パラメータの要素であるshort値は、各キーの仮想キーコードです。 具体的な使用法は、添付サンプルソースのOnConnectionメソッドを参照 してください。 HRESULT SetShortcutKey( [in]long lCommandNumber, //SARI内部のコマンド番号 [in]long lState, // Shift, Ctrl, Altキーの状態等。 [in]short stVKey // 割り当てるキー ); <説明> あるコマンドに対してショートカットキーを設定します。このコマンド コマンドはアドインコマンドである必要はありません。各パラメータに ついてはFindShortcutKeyメソッドの説明を参照してください。 また具体的な使い方は添付サンプルソースのOnConnection関数の部分を ご覧ください。 HRESULT GetCommandWithShortcutKey( [in]long lState, // Shift, Ctrl, Altキーの状態等。 [in]short stVKey, // キー [out, retval]long *plCommandNumber // 割り当てられているコマンド ); <説明> ひとつのショートカットキーに対して、設定されているコマンド番号を 得ます。そのショートカットキーが使われていなかったら、コマンド番 号として0が返ります。各パラメータについてはFindFirstShortcutKeyメ ソッドの説明を参照してください。 具体的な使い方は添付サンプルソースのOnConnection関数の部分をご覧 ください。 HRESULT RedrawMenu(); <説明> メニューを再構築します。 HRESULT BroadcastMessage( [in]long lCookie, // SARIから渡されたCookie値 [in]long lMessage // メッセージを識別する数値 ); <説明> アドインプログラム用のメソッドです。 あるインスタンスで設定変更が行われ、その変更を他のインスタンスに 通知する必要がある場合などに使ってください。 このメソッドでブロードキャストすると、各インスタンスには OnBroadcastMessageメソッドの呼び出しとなって通知されます。 ただ、OnBroadcastMessageは、それを呼び出したインスタンスにも送ら れる点にご注意ください。 HRESULT CreateFileObject( [out, retval]ISRFile **ppFile // ISRFileへのポインタが返ります。 ); <説明> ISRFileインターフェースを得ます。 AddRef()して渡されますので、使いおわったらRelease()する必要があり ます。 ISRFileインターフェースはSARIのメインウィンドウが作成された後でな ければ取得できません。SARIのメインウィンドウがない状態でこのメソ ッドを使うとE_FAILが返ります。 HRESULT CreateEditObject( [out, retval]ISREdit** ppEdit // ISREditへのポインタが返ります。 ); <説明> ISREditインターフェースを得ます。 AddRef()して渡されますので、使いおわったらRelease()する必要があり ます。 ISREditインターフェースはSARIのメインウィンドウが作成された後でな ければ取得できません。SARIのメインウィンドウがない状態でこのメソ ッドを使うとE_FAILが返ります。 HRESULT CreateDisplayObject( [out, retval]ISRDisplay** ppDisplay //ISRDisplayへのポインタが返ります。 ); <説明> ISRDisplaytインターフェースを得ます。 AddRef()して渡されますので、使いおわったらRelease()する必要があり ます。 ISRDisplayインターフェースはSARIのメインウィンドウが作成された後 でなければ取得できません。SARIのメインウィンドウがない状態でこの メソッドを使うとE_FAILが返ります。 HRESULT CreateSearchObject( [out, retval]ISRSearch** ppSearch //ISRSearchへのポインタが返ります。 ); <説明> ISRSearchインターフェースを得ます。 AddRef()して渡されますので、使いおわったらRelease()する必要があり ます。 ISRSearchインターフェースはSARIのメインウィンドウが作成された後で なければ取得できません。SARIのメインウィンドウがない状態でこのメ ソッドを使うとE_FAILが返ります。 HRESULT CreateMiscObject( [out, retval]ISRMisc** ppMisc //ISRMiscへのポインタが返ります。 ); <説明> ISRMiscインターフェースを得ます。 AddRef()して渡されますので、使いおわったらRelease()する必要があり ます。 ISRMiscインターフェースはSARIのメインウィンドウが作成された後でな ければ取得できません。SARIのメインウィンドウがない状態でこのメソ ッドを使うとE_FAILが返ります。