コマンドを送る関数(高度な制御)  LTCustomizer21 for AutoCAD LT リファレンスマニュアル

ActiveX
   Function command3(cmd As String, commandline_strings As String, commandline_histories As String) As Integer
C/C++
    int WINAPI LTC_command3(const wchar_t *cmd,
    const wchar_t *commandline_strings[],int cmdline_num,
    const wchar_t *commandline_histories[],int history_num)

パラメータ
cmd :送出する文字列(AutoCAD/LTのコマンドでなくても構わない)。送出する際は改行コードが最後に追加されます。
commandline_strings :コマンドラインに表示される文字列。ActiveXでは、文字列をヌル文字で区切り、最後には2つのヌル文字を入れる。
例(VisualBasicの場合): 文字列1 & chr(0) & 文字列2 chr(0) & chr(0)
commandline_histories :コマンドラインの履歴(ヒストリー)ウィンドウに表示される文字列。ActiveX上における文字列の区切り方法はcommandline_stringsと同じ
cmdline_num : commandline_stringsの配列の個数
history_num : commandline_historiesの配列の個数

返り値
0:キャンセルキーを押したか、その他の致命的なエラー
1:正常終了。リターンキーを押した場合か、コマンドが正常終了したかのどちらか。
それ以外の値: 
2以上1+commandline_stringsにある文字列の個数(cmdline_num)までの値:
コマンドラインウィンドウ上の文字列がcommandline_stringsにある文字列のどれかにヒットし、その配列の添え字は、帰り値 - 2 (1を最初の添え字とする場合。C/C++なら帰り値-3)番目にあたります。
2 + commandline_stringsの配列の個数(cmdline_num)以上の値:
コマンドラインの履歴ウィンドウの文字列がcommandline_historiesのどれかの文字列にヒットしたことを意味し、その配列のインデックス(添え字)は、帰り値 - commandline_stringsにある文字列の個数 - 1 (1を最初の添え字とする場合。C/C++なら帰り値 - cmdline_num - 2)番目にあたります。

command3()はcommand2()関数を更に強力にした関数です。指定した文字列にヒットした場合、キャンセルキー(ESC)が押された場合、コマンドプロンプトが表示された場合のどれかに該当した場合にのみ、はじめてこの関数は呼び出し側に帰ってきます。
 加えてcommand3()はユーザがどのような操作を行ったのかこの関数の返り値で知ることができます。コマンドラインウィンドウ上に指定した複数の文字列のどれかが表示されれば、帰り値にどの文字列がヒットしたかを示す数を返します。また、同時にコマンドライン履歴ウィンドウ(コマンドラインウィンドウの1つ上に表示してある領域。AutoCAD/LT上でF2キーを押した時に見ることができる)に表示される文字列も同じように指定した文字列にヒットした場合、それを示す値を帰り値として返します。

これにより、ユーザが送出したコマンドをどのように操作したかをcommand3()の帰り値で知ることができ、ユーザの操作に即したユーザインターフェイスを提供することができます。

使用例は LTCustomizer21 test applicationの「command3」ボタンのハンドラを参照してください。


 複数文字列の指定はActiveXとC/C++では記述の仕方が違います。ActiveX上では、String型に複数の文字列を入れて、ヌル文字(chr(0))で区切り、文字列の最後にはヌル文字を2つ入れます。C/C++ではchar型のポインタ変数の配列変数を指定します。配列の個数はcmdline_num,history_numで指定します。

注意:コマンドライン履歴(ヒストリー)ウィンドウ上でヒットする文字列は一番最後に表示されている文字列に限定されます。加えて、その文字列の最後の文字は、コマンドライン履歴(ヒストリー)ウィンドウの一番最後の文字である必要があります