Mac の Safari ブラウザ用のプラグインを作成しています。
インターネットで閲覧した後、Mac のプラグインは一般にウィンドウレスですが、ウィンドウ付きのプラグインが必要であることがわかりました。関数NPP_SetWindowでも、次のように変数タイプ(タイプNPWindowType ) の値を出力しようとしました:
NPError NPP_SetWindow(NPP instance, NPWindow * pNPWindow)
{
...
printf("....: %d",pNPWindow->type);
...
}
2を出力します。つまり、その値は NPWindowTypeDrawable であり、ウィンドウがないことを意味します。
さらに、次のコードをどこかで読みました。
NPError NPP_New(NPMIMEType pluginType,
NPP instance, uint16 mode,
int16 argc, char *argn[],
char *argv[], NPSavedData *saved)
{
...
NPError result = NPN_SetValue(instance, NPPVpluginWindowBool, (void*)false);
}
ここでは、 NPN_SetValue関数呼び出しでNPPVpluginWindowBool の値をfalseとして渡すことにより、プラグインをウィンドウレスにすることができると述べています。プラグインがこの呼び出しを行わない場合、ウィンドウ化されたプラグインと見なされます。しかし、「Mac OS X のプラグインは常にウィンドウなし」とも書かれています。これについてはまだ確信が持てません。
私の質問は、ここでNPPVpluginWindowBool に真の値を渡すと、プラグインがウィンドウ化されますか? まだ試していません。
pNPWindow->type (最初のコードスニペット) も 1を出力するように、プログラムまたはその他の方法でウィンドウ化されたプラグインにする方法を提案してください。つまり、 NPWindowTypeWindowはウィンドウ化されたプラグインを意味します。
ありがとう。