[リストへもどる]
一 括 講 読

投稿時間:05/01/01(Sat) 04:01
投稿者名:K-K
Eメール:
URL :
タイトル:PWPRegisterAyaoriFunc2について
はじめまして&あけまして,おめでとうございます.
久しぶり(数年ぶり)に綾織のプログラムを書いてます.

知人にプラグイン製作を頼まれて,plugin.txtを読んでみましたが,
PWPRegisterAyaoriFunc2関数の使い方がいまいちわかりませんでした.
登録した関数は呼び出されるのですが,IRTValue経由での引数の
取得ができません.

const char *str = pArgs[0].getString();
とだけ書いた関数を作ってみましたが,おかしなメモリに
アクセスしているようで,強制終了してしまいます
(文字列以外も試しましたが同じでした).
戻り値のIRTValue* pRetvalは正常に使えてます.
こちらの環境は,WindowsXP Pro. + VC++6.0 です.

型記述子pcTypeの説明では頭に付いてるimportの「i」が,
直後の例では付いていませんが,付けておくべきですよね?

今は,仕方なくPWPRegisterAyaoriFuncの法を使っています.
新しい関数の方が使いやすそうなので,できればそちらを使いたいのですが,
サンプルもVer.3.00以降で追加された関数は使って無いようですし….

あと,TPWPInvokeProcの定義には __stdcall が付いていないようですが,
plugin.txtの例で書かれた関数の呼び出し規約は__stdcallになってます.
他の関数は__stdcallなので,付け忘れかも知れませんが,現在の実装で
正しいのでしょうか?

長くなりましたが,よろしくお願いします.
#プラグインの作成についてもこの掲示板でOKでしょうか?

投稿時間:05/01/05(Wed) 13:56
投稿者名:中西弘明@プラエセンス
Eメール:hiroaki@praesens.co.jp
URL :
タイトル:Re: PWPRegisterAyaoriFunc2について
あけましておめでとうございます.
中西弘明@プラエセンスです.

> const char *str = pArgs[0].getString();
> とだけ書いた関数を作ってみましたが,おかしなメモリに
> アクセスしているようで,強制終了してしまいます

pArgsはIRTValue**型ですので"."ではなく"->"でアクセスする必要が
あります.


 const char *str = pArgs[0]->getString();

> 型記述子pcTypeの説明では頭に付いてるimportの「i」が,
> 直後の例では付いていませんが,付けておくべきですよね?

必要です.ドキュメントの記載ミスと思われますので,次回リリース時
には修正したいと思います.

> あと,TPWPInvokeProcの定義には __stdcall が付いていないようですが,

この記述で正しいです.C標準の呼び出し規約である__cdeclになります.
(本来的には__stdcallにするべきだった思いますが,この状態でも実害が
ありませんのでこれを仕様と致します)

> #プラグインの作成についてもこの掲示板でOKでしょうか?

問題ありません.プラグインを公開された際は弊社側にも教えていただけるとうれしいです.

良いプラグインを作ってください.

投稿時間:05/01/08(Sat) 00:15
投稿者名:K-K
Eメール:
URL :
タイトル:Re^2: PWPRegisterAyaoriFunc2について
ご返答ありがとうございます.

> pArgsはIRTValue**型ですので"."ではなく"->"でアクセスする必要が
> あります.

初歩的な勘違いでした.お恥ずかしい(^^;
おかしなことを考える前に,TPWCPluginProc2を良く見るべきでした.

ただ,plugin.txtでは,IRTValue* pArgs,になっているので,
こちらも修正してもらった方が,同じような間違いをする方が
減ると思います.



- Web Forum -