2012-09-19 5 views
0

NPAPI를 사용하여 사파리 플러그인을 만들었으며 플러그인에 NSView를 추가하고 싶습니다.창 플러그인을 만드는 방법은 무엇입니까?

NPWindow 던져 기능을 시도 할 때 NPP_SetWindow (NPP 인스턴스, NPWindow * 창), 두 번째 매개 변수는 nil입니다.

내 플러그인은 윈도우가 없다고 생각하지만 윈도우를 만드는 방법을 모르겠습니다.

답변

0

Mac의 NPAPI는 윈도우 모드로 NSView를 지원하지 않습니다. 두 가지 지원되는 모드입니다 (크롬과 파이어 폭스 또는 InvalidatingCoreAnimation)

퀵 드로우 모드로가 사용되는,하지만 사용되지 않는 것.

자세한 내용은 Stuart Morgan's excellent blog post on the subject을 참조하십시오.

NSView를 CoreGraphics 컨텍스트로 렌더링 할 수는 있지만 모든 이벤트를 프록시 처리해야하며 완벽하지 않습니다.

는 편집 : 그렇지 전무 ... 그들이 같은 일 임에도 불구하고, NULL 그래서 더 귀하의 질문에 대한 답변을 설명하려면, 윈도우 매개 변수가 NULL 인 이유는 (그것은 C API를,하지의 Obj C의 =])은 Cocoa Event Model에서 draw event의 일부로 CGContextRef를 얻었 기 때문에 해당 이벤트 컨텍스트에서만 유효합니다.

+0

안녕하세요! 두 번째 매개 변수 "window"가 nil 인 이유를 알고 싶습니다. 나는 애플 개발자 문서에서 아래의 코드를 찾았지만, 이제는 작동하지 않는다. 내가 놓친 게 있니? NPError setwindow_cb (NPP 인스턴스, NPWindow * npw) { ... NP_CGContext * npcontext = npw.window; CGContextRef context = npcontext.context; CGRect boundingBox = CGContextGetClipBoundingBox (컨텍스트); – Magical

+0

당신은 윈도우가 현재 NULL이고 당신이 이벤트의 일부로 CGContextRef를 얻는 코코아에 대한 업데이트를 놓쳤습니다. https://wiki.mozilla.org/NPAPI:CocoaEventModel – taxilian

+0

대단히 감사합니다. ** NPWindow **는 내 기능이 매우 중요합니다. 내 선수가 내보내기 기능으로 생성 되었기 때문에'void SetHwnd (void * hWnd, CGRect rect)'CGContextRef 만 사용 가능합니다. 새 함수를 다시 작성해야합니까? – Magical