質問

私はラインの問題に関連付け呼び出されたメソッドにプラグインを書い、適切なプラグインインスタンス.の文書 http://developer.mozilla.org/en/Gecko_Plugin_API_Reference/Scripting_plugins な情報が十分に本当に使える。

このように、私は理解しようとうする選択した)オブジェクトにプラグインに復帰していく姿が想定される応答の呼び出しNPP_GetValueの可変数の引数に等しいNPPpluginScriptableNPObject.私は推測ることがあってしかるべきだと思うNPObjectインスタンスのための各インスタンスのプラグインがどのように、呼び出し()メソッドのNPClassるプラグインのインスタンス(NPP)から選択した)NPObjectで引数として与えられた?私が実施するルックアップテーブルになっている感じもない。

私は保存のポインタをインスタンスのC++クラスのインスタンスを実装する機能をインストールのpdataのNPP、NPP_New().

役に立ちましたか?

解決

これやって答えを自分の問題...

の液見つかったとしてもコメントし、その有効性、特にたくさんありそのために配置するNPObject由来の構造を指すポインター私の実装クラスの配分機能しなFirefoxからの引き出しおよび設定ができますそこでのポインタを格納するNPObjectの原子力発電所のpdata員、NPP_New().

に呼び出し()、キャストのNPObjectポインタを取得しますの派生構造のメンバーの追加ができるよう、取得データへのバッファへのポインタのインスタンスの実装クラスです。

たとえしましたが、意図のデザイン-NPObjectジのインスタンスのNPClassいポイントなども実施方法や特性をコントロールNPClassの関数ポインタを処理するこれらの団体、個人データが割り当てられや割を実施し、その形式は指定されていません。

ストとの同時購入で今ならこのようなもの:

 static NPClass refObject = {
    NP_CLASS_STRUCT_VERSION,
    My_Allocate,
    My_Deallocate,
    NULL,
    My_HasMethod,
    My_Invoke,
    My_InvokeDefault,
    My_HasProperty,
    My_GetProperty,
    NULL,
    NULL,
};

class MyImplClass {
    // Implementation goes here
};

struct MyNPObject : public NPObject {
    MyImplClass *my_impl_instance;
};

// This is just a bit of memory management - Mozilla wants us to allocate our own memory:
NPObject *My_Allocate(NPP inst, NPClass *)
{
    // We initialize the structure in NPP_New() below
    return (NPObject *)malloc(sizeof(MyNPObject));
}

NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
             char* argn[], char* argv[], NPSavedData* saved )
{
    NPObject *scriptable_object = npnfuncs->createobject(instance, &refObject);
    npnfuncs->retainobject(scriptable_object);
    MyImplClass *new_player = new MyImplClass(); 

    instance->pdata = scriptable_object;
    ((MyNPObject*)instance->pdata)->my_impl_instance = new_player;
    return NPERR_NO_ERROR;

}

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top