/***************************************************** SARI interface ISREdit (ver.1.0)解説 1999/12 by Kazuhiro Kito_ *****************************************************/ 【概説】 SARIの編集、範囲選択、モード設定などを扱うインターフェースです。 デュアルインターフェースです。 外部から直接生成することはできません。インターフェースを得るには、ISRAPL インターフェースのCreateEditObjectメソッドを使います。 またSARIのメインウィンドウが作成された後でなければ、このインターフェース を取得することはできません。 このインターフェースのメソッドの多くは、マクロ記述用インタープリタ言語 ATIONのメソッドの変形です。ATIONのヘルプの使用例も参考にしてください。 (なをこの説明中に使うTRUEは0以外の数値, FALSEは0です。) 【メソッド】 HRESULT CaretUp( [in]long lRows, // 移動させる行数(表示行数で) [out,retval]long* plRtn // 実際に移動した量 ); <説明> カレットを行番号を減らす方向へ移動します。すなわち横書き時は上、 縦書き時は右へ移動します。移動させる行数に負値を指定することはで きません。 HRESULT CaretDown( [in]long lRows, // 移動させる行数(表示行数で) [out, retval]long* plRtn // 実際に移動した量 ); <説明> カレットを行番号をふやす方向へ移動します。すなわち横書き時は下、 縦書き時は左へ移動します。移動させる行数に負値を指定することはで きません。 HRESULT CaretLeft( [in]long lBytes, // 移動させるバイト数 [out, retval]long* plRtn // 実際に移動した量 ); <説明> カレットを桁数をへらす方向へ移動します。すなわち横書き時は左、縦 書き時は上へ移動します。移動させるバイト数に負値を指定することは できません。カレットは行頭では止まりません。移動量があるときは前 行の末尾に行きます。 タブ展開部、自動整形モード時の左インデント部も移動量に含みます。 また指定した移動量が2バイト文字の2バイト目をさすときは、その文 字全体を含んで1バイト目まで移動します。 HRESULT CaretRight( [in]long lBytes, [out, retval]long* plRtn ); <説明> カレットを桁数をふやす方向へ移動します。すなわち横書き時は右、縦 書き時は下へ移動します。移動させるバイト数に負値を指定することは できません。カレットは行末では止まりません。移動量があるときは次 行の先頭へ行きます。 タブ展開部、自動整形モード時の左インデント部も移動量に含みます。 また指定した移動量が2バイト文字の2バイト目をさすときは、その文 字全体を含んで次の1バイト目まで移動します。 HRESULT ToDRowTop(); <説明> カレットを表示行先頭へ移動します。 HRESULT ToDRowEnd(); <説明> カレットを表示行末尾へ移動します。 HRESULT ToLRowTop(); <説明> カレットを論理行先頭へ移動します。 HRESULT ToLRowEnd(); <説明> カレットを論理行末尾へ移動します。 HRESULT ToDocTop(); <説明> カレットを文書先頭へ移動します。 HRESULT ToDocEnd(); <説明> カレットを文書末尾へ移動します。 HRESULT NextLRowTop( [out, retval]VARIANT_BOOL* pbResult // 結果の格納 ); <説明> カレットを次の論理行先頭へ移動します。カレットが最終行にあるとき はFALSEが返ります。 HRESULT PrevLRowTop([out, retval]VARIANT_BOOL* pbResult); <説明> カレットを前の論理行先頭へ移動します。カレットが先頭行にあるとき はFALSEが返ります。 HRESULT CaretLMoveTo( [in]long lRow, // 移動先の論理行番号 [in]long lCol // 移動先の論理桁数。 ); <説明> カレットlRow, lColで指定される位置に移動します。論理行番号は先頭 行を0として数えたインデックスです。論理桁数は、その論理行の先頭を 0とし、表示行をこえて累積的に数えたバイト数です。タブ展開部、自動 整形モード時の左インデント部を含みます。 HRESULT CaretDMoveTo( [in]long lRow, // 移動先の表示行番号 [in]long lCol // 移動先の桁数 ); <説明> カレットlRow, lColで指定される位置に移動します。表示行番号は先頭 行を0として数えたインデックスです。桁数は、その表示行の先頭を0と して数えたバイト数です。タブ展開部、自動整形モード時の左インデン ト部を含みます。 存在しない行・桁を指定したときの動作は不定です。ハングすることは ありません。 HRESULT CaretRealLMoveTo( [in]long lRow, // 移動先の論理行番号 [in]long lCol // 移動先の真の論理桁数。 ); <説明> カレットlRow, lColで指定される位置に移動します。論理行番号は先頭 行を0として数えたインデックスです。論理桁数は、その論理行の先頭を 0とし、表示行をこえて累積的に数えたバイト数です。このメソッドでは タブ展開部、自動整形モード時の左インデント部を含みません。 存在しない行・桁を指定したときの動作は不定です。ハングすることは ありません。 HRESULT GetDCaretPos( [out]long* plDRow, // 表示行番号 [out]long* plDCol // 桁数 ); <説明> 現在のカレット位置を、表示行番号、桁数として得ます。 HRESULT GetLCaretPos( [out]long* plLRow, // 論理行番号 [out]long* plLCol, // 論理桁数 [out]long* plRealLCol //真の論理桁数 ); <説明> 現在のカレット位置を、論理行番号、論理桁数として得ます。第3パラ メータの真の論理桁数は、論理桁数から、タブ展開部、自動整形モード 時の左インデント部をのぞいたものです。 HRESULT SelUp(); <説明> 選択状態で、カレットを行番号を減らす方向へひとつ移動します。すな わち横書き時は上、縦書き時は右へ移動します。 HRESULT SelDown(); <説明> 選択状態で、カレットを行番号をふやす方向へひとつ移動します。すな わち横書き時は下、縦書き時は左へ移動します。 HRESULT SelLeft(); <説明> 選択状態で、カレットを桁数をへらす方向へ移動します。すなわち横書 き時は左、縦書き時は上へ移動します。行頭で実行したときは前行の末 尾に行きます。 HRESULT SelRight(); <説明> 選択状態で、カレットを桁数をふやす方向へ移動します。すなわち横書 き時は右、縦書き時は下へ移動します。行末で実行したときは次行の先 頭に行きます。 HRESULT SelDRow(); <説明> カレットのある表示行全体を選択状態にします。 HRESULT SelLRow(); <説明> カレットのある論理行全体を選択状態にします。 HRESULT SelAllDoc(); <説明> 全文書を選択状態にします。 HRESULT SelToDRowTop(); <説明> 選択状態でカレットを表示行先頭へ移動します。 HRESULT SelToDRowEnd(); <説明> 選択状態でカレットを表示行末尾へ移動します。 HRESULT SelToLRowTop(); <説明> 選択状態でカレットを論理行先頭へ移動します。 HRESULT SelToLRowEnd(); <説明> 選択状態でカレットを論理行末尾へ移動します。 HRESULT SelToDocTop(); <説明> 選択状態でカレットを文書先頭へ移動します。 HRESULT SelToDocEnd(); <説明> 選択状態でカレットを文書末尾へ移動します。 HRESULT GetSelRange( [out]long* plARow, // 選択範囲の一端の表示行番号を格納 [out]long* plACol, // 選択範囲の一端の桁数を格納 [out]long* plBRow, // 選択範囲の他の一端の表示行番号を格納 [out]long* plBCol, // 選択範囲の他の一端の桁数を格納 [out, retval]VARIANT_BOOL *pbResult // 結果を格納 ); <説明> 現在の選択範囲を得ます。選択範囲がなかったら、pbResultにFALSEがセ ットされて返ります。なを*pARow<=*pBRowは保証されません。*pARow>* pBRowとなる場合があります。 HRESULT GetSelRangeSFA( [out]VARIANT *pvrRange, //選択範囲を示すSAFEARRAY [out, retval]VARIANT_BOOL *pbResult // 結果を格納 ); <説明> 現在の選択範囲を得ます。 GetSelRangeメソッドのSAFEARRAY版です。 pvrRangeには、0をインデックスの下底とした、要素数4、long型の SAFEARRAYがセットされて返ります。各要素は下記の値を持ちます。 pvrRange[0]; // 選択範囲の一端の表示行番号 pvrRange[1]; // 選択範囲の一端の桁数 pvrRange[2]; // 選択範囲の他の一端の表示行番号 pvrRange[3]; // 選択範囲の他の一端の桁数 選択範囲がなかったら、pbResultにFALSEがセットされて返ります。 HRESULT SetSelRange( [in]long lARow,// 選択範囲の一端の表示行番号 [in]long lACol,// 選択範囲の一端の桁数 [in]long lBRow,// 選択範囲の他の一端の表示行番号 [in]long lBCol,// 選択範囲の他の一端の桁数 [out, retval]VARIANT_BOOL* pbResult // 結果を格納 ); <説明> 新たに選択範囲を設定します。存在しない行・桁を指定するなどして、 設定できなかったときは、*pbResultにFALSEが返ります。 HRESULT SetSelRangeSFA( [in]VARIANT vrRange,//選択範囲のSAFEARRAY [out, retval]VARIANT_BOOL *pbResult // 結果を格納 ); <説明> 新たに選択範囲を設定します。 SetSelRangeメソッドのSAFEARRAY版です。第1パラメータのVARIANTに は、0をインデックスの下底とした、要素数4、long型のSAFEARRAYをセ ットしてください。各要素の意味はGetSelRangeSFAメソッドの説明をご 覧ください。存在しない行・桁を指定するなどして、設定できなかった ときは、*pbResultにFALSEが返ります。 HRESULT CancelSelect(); <説明> 選択状態をキャンセルし、非選択状態にします。 HRESULT GetDRowString( [in]VARIANT_BOOL bIntact,// 内部表現状態のまま得るか [out, retval]BSTR *pbsStr // 文字列格納用 ); <説明> カレットのある表示行の文字列を取得します。 第1パラメータbIntactがTRUEのときは、SARIの内部表現状態のまま、文 字列をえます。すなわち、タブ展開のためのダミー文字0xFEを含み、改 行は\rで表現された状態です。FALSEを指定したときは、タブ展開のため のダミー文字を除去し、改行を\r\nとした形で文字列が返されます。( ATIONのヘルプ「SARIの内部処理」の項を参照) HRESULT GetLRowString( [in]VARIANT_BOOL bReserved,//現在は使いません。TRUE/FALSEどちらでも。 [out, retval]BSTR *pbsStr // 文字列格納用 ); <説明> カレットのある論理行の文字列を取得します。 第1パラメータは将来のために予約されています。このメソッドは GetDRowStringと異なり、常に、タブ展開のためのダミー文字を除去し、 改行を\r\nとした形で文字列が返されます。 HRESULT GetString( [in]long lARow, //範囲の一端を示す表示行番号 [in]long lACol, //範囲の一端を示す桁数 [in]long lBRow, //範囲の他の一端を示す表示行番号 [in]long lBCol, //範囲の他の一端を示す桁数 [in]VARIANT_BOOL bIntact,// 内部表現状態のまま得るか [out, retval]BSTR *pbsStr // 文字列格納用 ); <説明> lARow行lACol桁から、lBRow行lBCol桁までの範囲の文字列を得ます。 第5パラメータは、SARIの内部表現状態のままで文字列を得るかどうかを指 定します。GetDRowStringの説明を参考にしてください。 HRESULT GetStringSFA( [in]VARIANT vrRange, //範囲を示すSAFEARRAY [in]VARIANT_BOOL bIntact,// 内部表現状態のまま得るか [out, retval]BSTR *pbsStr// 文字列格納用 ); <説明> 範囲を指定して文字列を得ます。 GetStringメソッドのSAFEARRAY版です。 第1パラメータのVARIANTには、0をインデックスの下底とした、要素数 4、long型のSAFEARRAYをセットしてください。各要素の意味は GetSelRangeSFAメソッドの説明をご覧ください。 HRESULT GetSelString( [in]VARIANT_BOOL bIntact,// 内部表現状態のまま得るか [out, retval]BSTR* pbsStr // 文字列格納用 ); <説明> 選択範囲の文字列を得ます。 第1パラメータについては、GetDRowStringの説明を参考にしてくださ い。 HRESULT GetCharacter( [out]short* stKindOfChar, //文字の種類が返ります。 [out, retval]BSTR* pbsStr //文字が格納されて返ります。 ); <説明> カレット位置の文字を一文字得ます。 第1パラメータに返される文字の種類は次のとおりです。 1バイト文字 0 2バイト文字 1 何らかの不正常 0xff HRESULT DelDRowString( [in]VARIANT_BOOL bStack //削除文字列をスタックバッファに入れるかどうか。 ); <説明> カレットのある表示行を削除します。削除した文字列をスタックバッフ ァにいれるかどうかを、第1パラメータで指定します。 スタックバッファに関してはATIONのヘルプをご覧ください。 HRESULT DelLRowString( [in]VARIANT_BOOL bStack //削除文字列をスタックバッファに入れるかどうか。 ); <説明> カレットのある論理行を削除します。削除した文字列をスタックバッフ ァにいれるかどうかを、第1パラメータで指定します。 スタックバッファに関してはATIONのヘルプをご覧ください。 HRESULT DelSelString( [in]VARIANT_BOOL bStack //削除文字列をスタックバッファに入れるかどうか。 ); <説明> 選択範囲の文字列を削除します。削除した文字列をスタックバッファに いれるかどうかを、第1パラメータで指定します。 スタックバッファに関してはATIONのヘルプをご覧ください。 HRESULT BackSpace(); <説明> バックスペースです。 HRESULT DelCharacter(); <説明> カレットのある一文字を削除します。 HRESULT DelAllDocument( [in]VARIANT_BOOL bQuery // 確認メッセージの有無 ); <説明> 全文書を削除し、ドキュメントを空にします。第1パラメータがTRUEの ときは、削除してもよいかどうかを問いかけるメッセージを表示しま す。メッセージに対してユーザーがキャンセルすると、削除は実行され ません。 HRESULT PutString( [in]BSTR bsStr // 挿入する文字列 ); <説明> カレット位置に文字列を挿入します。そのときSARIが上書きモードな ら、上書きモードで挿入されます。行折り処理などはすべてSARIがおこ ないます。挿入によりカレットは挿入した文字列の次を示す位置に移動 します。たとえば挿入文字列が"\r\n"で終わっていたなら、挿入によっ てカレットは次行の先頭へ移動します。 HRESULT InsertFromFile( [in]BSTR bsPath, // ファイルのパス [out, retval]VARIANT_BOOL * pbResult // 結果格納用 ); <説明> カレット位置にファイルから文書を挿入します。ファイルが見つからな かったり、開くことができなかったときは、pbResultにFALSEが返りま す。 HRESULT IsInSelectMode( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> カレットのある位置が選択範囲内かどうかを返します。 HRESULT IsDocModified( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> 文書が更新されているかどうかを返します。 HRESULT IsOverwriteMode( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> 上書きモードならTRUEを、挿入モードならFALSEを返します。 HRESULT EnableEdit( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> 編集禁止かどうかを返します。 HRESULT IsAutoFormatMode( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> 自動整形モードかどうかを返します。 HRESULT IsAutoIndentMode( [out, retval]VARIANT_BOOL *pbReturn // 結果格納用 ); <説明> 自動インデントモードかどうかを返します。 HRESULT SetModified( [in]VARIANT_BOOL bSet // セットする値。FALSE/TRUE ); <説明> 更新フラグを設定します。 HRESULT SetOverwriteMode( [in]VARIANT_BOOL bSet // セットする値。FALSE/TRUE ); <説明> 上書きモード/挿入モードを切り替えます。 パラメータがTRUEなら上書きモード、FALSEなら挿入モードに変わりま す。 HRESULT SetEnableEdit( [in]VARIANT_BOOL bSet // セットする値。FALSE/TRUE ); <説明> 編集禁止を設定/解除します。 パラメータがTRUEなら編集可能、FALSEなら編集禁止です。 HRESULT SetAutoFormatMode( [in]VARIANT_BOOL bSet // セットする値。FALSE/TRUE ); <説明> 自動整形モードをを設定/解除します。 パラメータがTRUEなら自動整形モード、FALSEなら非自動整形モードで す。 HRESULT SetAutoIndentMode( [in]VARIANT_BOOL bSet // セットする値。FALSE/TRUE ); <説明> 自動インデントを設定/解除します。 パラメータがTRUEなら自動インデント、FALSEなら自動インデントしませ ん。 HRESULT GetMaxColumn( [out, retval]long* lCol // 桁数格納用 ); <説明> 設定されている行折りの桁数を得ます。 HRESULT SetMaxColumn( [in]long lSetCol, // 設定する桁数 [in]VARIANT_BOOL bRemakeRows, // 行折り処理をしなおすかどうか。 [out, retval]long* lNewCol //実際に設定された桁数の格納用 ); <説明> 行折りの桁数を第1パラメータの値にします。ただし、一定数(現在は 10桁)以下の桁数を指定したときや、タブ展開数より小さな桁数を指定 したときなど、指定どおりの桁数に設定されない場合があります。第3 パラメータに実際に設定された新しい桁数が返ります。 第2パラメータがTRUEなら、新たな桁数によって、文書全体の行折り処 理をやりなおします。FALSEなら行折り処理はしません。その場合、それ 以降に編集される論理行だけ、新たな桁数が適用されます。 HRESULT GetTabSize( [out, retval]long* lSize // タブ展開桁数格納用 ); <説明> 設定されているタブ展開桁数を得ます。 HRESULT SetTabSize( [in]long lSetSize, // 設定するタブ展開数 [in]VARIANT_BOOL bRemakeRows,// 行折り処理をしなおすかどうか。 [out,retval]long* lNewSize //実際に設定された数値の格納用 ); <説明> タブ展開の桁数を第1パラメータの値にします。ただし、行折りの桁数 より大きな値を指定したときなど、指定どおりに設定されない場合があ ります。第3パラメータに実際に設定された数値が返ります。 第2パラメータがTRUEなら、文書全体の行折り処理をやりなおします。 FALSEなら行折り処理はしません。その場合、それ以降に編集される論理 行だけ、新たなタブ展開数が適用されます。 HRESULT GetLeftAutoIndentBytes( [out, retval]short* stBytes // 数値の格納用 ); <説明> 自動整形モードのときだけ意味をもちます。 カレットのある表示行で、左インデントのためにプログラムが挿入した 空白文字全体の桁数を返します。 HRESULT GetIndentAdjustment( [out]short* stHowMany, // インデントの増減値 [out]VARIANT_BOOL* bZenspace, // 増減値が全角文字の個数かどうか。 [out,retval]VARIANT_BOOL* pbResult // 自動整形モードかどうか。 ); <説明> 自動整形モードのときだけ意味をもちます。 左インデント処理で、2行目以降のインデント量の増減値を返します。 第2パラメータにTRUEが返ったときは、その増減値が、全角文字の数で 指定されていることを示します。FALSEなら、増減値はバイト数で指定さ れています。非自動整形モード時には第3パラメータにFALSEが返りま す。 HRESULT SetIndentAdjustment( [in]short stHowMany,// 設定するインデントの増減値 [in]VARIANT_BOOL bZenspace, // 増減値が全角文字の個数かどうか。 [out, retval]VARIANT_BOOL* pbResult // 成功したか ); <説明> 自動整形モードのときだけ意味をもちます。 左インデント処理で、2行目以降のインデント量の増減値を指定しま す。第2パラメータがTRUEなら、その増減値は全角文字の数で指定され たものとします。FALSEなら増減値はバイト数です。非自動整形モード時 には第3パラメータにFALSEが返ります。 HRESULT IsIMEOpened( [out,retval]VARIANT_BOOL* pbResult // 結果格納用 ); <説明> IMEがオンかオフかを返します。 HRESULT SetIME( [in]VARIANT_BOOL bOpen // TRUE/FALSE ); <説明> IMEをオン(TRUE)にし、あるいはオフ(FALSE)にします。 HRESULT IsFormattingNow( [out, retval]VARIANT_BOOL * pbResult // 結果格納用 ); <説明> SARIはファイルを読み込むとき、別スレッドで行折り処理を行います。 その処理中かどうかを返します。 HRESULT SetStatusBarText( [in]BSTR bsText // 表示する文字列 ); <説明> ステータスバーに文字列を表示します。 表示できる文字列の長さは画面のレゾルーションによります。 あまり長い文字列を指定しないでください。