2011-12-04 4 views
3

FireBreath 및 OpenGL을 사용하여 브라우저 플러그인을 작성하고 객체 태그를 사용하여 플러그인을 삽입 한 후 플러그인 상단에 다양한 HTML 요소를 오버레이하려했습니다. 불행히도, 태그와 플러그인 그래픽은 내가 시도한 것에 관계없이 항상 페이지의 다른 HTML 요소 위에 머물러있었습니다. HTML의에 오버레이 또는 태그를 가능하게하는 일반적인 방법은NPAPI 플러그인 상단의 HTML

<param name="wmode" value="transparent"> 

거기에 다음과 같이

는 지금까지 내가 아는 한, 플래시 플러그인은 HTML 오버레이를 허용? 그렇지 않다면, NPAPI/ActiveX 플러그인에 오버레이를 활성화하는 방법이 있습니까? 아니면 FireBreath가이 기능을 어떻게 든 지원합니까?

프로그래밍을 시작한 이래로 StackOverFlow가 내 주요 리소스 였으므로 많은 분들께 감사드립니다.

답변

7

플러그인에는 두 가지 유형이 있습니다. 창없는 창없는 FireBreath는 창없는 플러그인을 지원합니다 (플러그인 클래스의 isWindowless 함수에서 true를 반환합니다.) 창없는 플러그인을 사용하는 경우 플러그인을 통해 HTML을 오버레이 할 수 있지만, 창 플러그인을 사용하는 경우에는 플러그인 할 수 없습니다.

그러나 주변을 읽으면 wmode = transparent로 플래시의 성능이 정상적인 wmode와 거의 비슷하지 않다는 것을 알 수 있으며, 그 이유는 윈도우가없는 것을 그리려면 플래시를 그려야한다는 것입니다. 브라우저가 지시 한 경우에만 브라우저에 다시 그려달라고 요청할 수 있습니다. FireWire는 FireWire에서 PluginWindowlessWin 객체를 창으로 사용할 때 InvalidateWindow를 호출하여 호출 할 수 있습니다.

불행히도 창없는 그리기 모드에서는 hWND를 얻지 마십시오 - 단지 hDC이며 그리기 이벤트 (FireBreath의 RefreshEvent) 기간 동안 만 유효합니다. 내가 결정할 수있는 가장 좋은 방법은 draw 콜 사이에 변경되거나 사라질 수있는 hDC에서 OpenGL 드로잉 컨텍스트를 만들 수 없으므로 Windows에서 윈도우가없는 드로잉을 사용하는 OpenGL 플러그인 작업을 본 유일한 방법은 화면을 떼어내는 것입니다. GDI를 사용하여 비트를 hDC에 블릿합니다. https://gist.github.com/1068352

5

하는이 솔루션을 시도해보십시오 여기

그리기의 유형 당신은 내가 위의 설명하려고했습니다 무엇에 대한 이해를 공고히 도움이 될 수 있습니다 (창 또는 창문)을 사용하여 원시 비트 맵을 그릴 것입니다 예입니다 그것은 나를 위해 완벽하게 작동했습니다.

플러그인 아래에 더미 IFrame을 놓고 필요한 HTML을 바로 아래에있는 div에 넣으십시오.

<object id="myPlugin" height="yourRequiredHeight" width="yourRequiredWidth"></object> 

<div id="wrapperDiv"> 
    <iframe class="myClass" > </iframe> 
    <div class="myClass" > My html goes here. It will be placed over the plugin! </div> 

</div> 

와 CSS

.myClass이 방법은 나를 위해 작동

{ 

position:absolute; 
width:250px; // your required height and width for the overlay html 
height:250px; 
other css as per your style 

} 
+0

. 내 플러그인은 FB를 사용하여 개발되었고 창으로 열렸습니다. –

+1

간단하고 영리합니다. 당신은 투명성을 얻지 못하지만, 과거에 가지고있는 것처럼 iframe 콘텐츠를 소동하지 않고도 메인 페이지에 html을 유지하는 데 효과적입니다. – mcanfield

관련 문제