;-------------------------------------------------- ; HSP ヘルプ ソースファイル (hs 形式) ; hs ファイルの書式については、HS_BIBLE.txt を参照してください。 ;-------------------------------------------------- ; この hs ファイルのデフォルトのフィールド値を設定 %dll ; プラグイン/モジュール名 を記入 modclbk3 %ver 3b2 %date ; 日付 を記入 2015/4/25 %author ; 著作者 を記入 tds12 %url http://hsp.tv/play/pforum.php?mode=pastwch&num=62130 %note ; 備考 (補足情報等) を記入 %type ; タイプ を記入 コールバック %port ; 対応環境 を記入 Windows %portinfo ; 移植のヒント を記入 %index newclbk3 新しい関数ポインタを取得 %prm clbkptr, argmax, clbklb, mode var clbkptr : 関数ポインタを受け取る変数 int argmax : 引数の数 label clbklb : 呼び出されるラベル int mode : 作成のモード(CLBKMODE) %inst ; 解説文 を記入 ラベルを使ったサブルーチンをコールバック関数として設定し、その関数ポインタを取得します。 取得した関数ポインタはコールバック関数の指定が必要なAPI関数などで使用することができます。 clbkptr コールバック関数へのポインタが返されます。 argmax コールバック関数の引数の数を指定します。 clbklb gosub命令で指定するように、サブルーチンへのラベルを指定します。 mode 省略(=0)すると thiscall( clbk_getthisptr を呼ばなければ stdcall )に設定します。 CLBKMODE_CDECL 定数(=$00000001)を指定すると、呼び出し規約をcdeclに設定します。 %sample ; サンプルスクリプト を記入 %href clbkargprotect clbk_getthisptr %group ; グループ を記入 %index clbkargprotect コールバック関数の引数を取得 %prm v1 v1 : 引数を受け取るための変数 %inst ; 解説文 を記入 newclbk3命令で設定したコールバック関数の呼び出し時に、その引数(lParam)を取得します。 v1 には、引数を受け取りたい変数を指定してください。 指定した変数に代入してしまった場合は、再度 clbkargprotect を実行して取得し直すことで引数を受け取り直せます。 %sample ; サンプルスクリプト を記入 %href newclbk3 %group ; グループ を記入 %index clbk_getthisptr Thisポインタを取得 %prm () val : Thisポインタ %inst コールバックとして呼び出された直後に別変数へコピーしなければなりません。 コールバック呼び出し直後のecxレジスタの内容が代入されます。 thiscall規約で呼ばれた場合オブジェクトのthisポインタが入ります。 ※動作未確認 %sample ; サンプルスクリプト を記入 %href newclbk3 %group ; グループ を記入