Nous faisons un plugin pour le navigateur safari sur mac. Après la navigation sur internet, j'ai trouvé que généralement les plugins sur mac sont sans fenêtre mais je veux un plugin fenêtré. Même dans la fonction NPP_SetWindow j'ai essayé d'imprimer la valeur de la variable de type (qui est de type NPWindowType) comme suit:Un plugin (pour un safari sur Mac) peut-il être programmé en mode fenêtré ou sans fenêtre?
NPError NPP_SetWindow(NPP instance, NPWindow * pNPWindow)
{
...
printf("....: %d",pNPWindow->type);
...
}
Il imprime i.e. sa valeur est NPWindowTypeDrawable signifie sans fenêtre.
De plus, je l'ai lu quelque part le code suivant:
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);
}
Ici, il dit qu'un plug-in peut être fait par la valeur sans fenêtre pour passer NPPVpluginWindowBool comme faux dans appel de fonction NPN_SetValue. Si un plugin ne fait pas cet appel, il est considéré comme un plugin fenêtré. Mais il est aussi dit que "les plug-ins sur Mac OS X sont toujours sans fenêtre". Je n'ai pas encore entendu parler de ça.
Ma question est, va passer vraie valeur pour NPPVpluginWindowBool faire ici plug-in de fenêtré? Je ne l'ai pas encore essayé.
S'il vous plaît suggérer comment faire un plugin fenêtré si un programme ou de toute autre manière autour de sorte que pNPWindow-> type (dans le premier extrait de code) serait également imprimer 1 i.e. NPWindowTypeWindow signifie plug-in fenêtré.
Merci.
Salut @taxilian, merci pour votre réponse. Pourriez-vous partager un exemple de code concernant "Vous pouvez obtenir un CGContextRef, puis créer votre propre NSWindow et NSView hors écran et les rendre dans le CGContextRef", lire l'un des liens partagés ci-dessus? – user2181750
De même, existe-t-il un moyen d'obtenir NSWindow à partir de l'objet CGContextRef? – user2181750
Vous ne pouvez pas obtenir une NSWindow à partir d'un CGContextRef. Anticiper les questions futures: il n'y a * aucun moyen * d'obtenir NSWindow du broswer dans le processus du plugin. Il ne s'agit pas d'être intelligent, ni de trouver une échappatoire, vous ne pouvez pas l'obtenir, car les pointeurs de fenêtre sur OS X sont spécifiques au processus et vous êtes dans un processus différent (comme je l'ai dit dans la réponse à un autre des questions). Ce que vous essayez de faire ne peut pas être fait. Je recommande de poser une question qui exprime un objectif de plus haut niveau afin que quelqu'un puisse essayer de vous orienter dans la bonne direction, plutôt que de demander des détails sur le mauvais chemin. – smorgan