2012-05-23 5 views
0

NPAPI в MacOs дает мне CGrafPtr в структуре NPWindow, мне нужен WindowRef. Есть ли способ получить WindowRef от CGrafPtr?CGrafPtr to WindowRef

Спасибо!

ответ

2

NPAPI предоставляет вам CGrafPtr, если вы используете очень, очень устаревшую модель чертежа QuickDraw (с моделью событий Carbon). Написание нового плагина с использованием модели QuickDraw было бы ужасной идеей: Firefox 64-бит не поддерживает его, 64-битная версия Safari не поддерживает его, и Chrome на самом деле не поддерживает его (и скоро совсем не будет). Ваш плагин не будет работать для большинства пользователей.

Вместо этого вы должны использовать либо Core Animation (рисунок) + Cocoa (событие), либо CoreGraphics + Cocoa. В модели событий Cocoa есть намеренно, нет способа получить ссылку на окно браузера. Современные браузеры почти все запускают плагины в отдельном процессе, и вы не можете ссылаться на окна через процессы.

Короче говоря, если вы пытаетесь создать новый плагин NPAPI, который требует доступа к окну браузера, ваш дизайн неправильный.

+0

Я использую код с сайта Mozilla, который, вероятно, очень старый. Можете ли вы указать мне на какой-то более новый пример? Какую целевую цель я должен использовать вместо окна? –

+0

Отъезд FireBreath (http://firebreath.org). Даже если вы не используете фреймворк, на веб-сайте есть много хорошей информации. Однако на веб-сайте mozilla есть обновленная информация. Вам просто нужно найти это =] https://wiki.mozilla.org/NPAPI и https://developer.mozilla.org/en/Gecko_Plugin_API_Reference - это основные места документации. – taxilian

+0

Я не знаю, что вы подразумеваете под «целью события»; Я бы предложил опубликовать новый вопрос с добавлением NPAPI с дополнительной информацией о том, что вы на самом деле пытаетесь выполнить, поскольку «какая цель я должна использовать» вполне может быть неправильным вопросом, так же как «как получить WindowRef из CGrafPtr «Это был неправильный вопрос. – smorgan