Display a Web Page in a Plain C Win32 Application 是一篇好文章
Transparent Flash Control in Plain C++ 也是一篇好文章
为了把WebBrowser画在窗体上
两个工程对比了下
		
				对比
				Flash
				的接口
				?
		
		
				IOleClientSite
		
		
				IOleInPlaceSiteWindowless
		
		
				IOleInPlaceFrame
		
		
				IStorage
		
		
				
						 
				
		
		
				IOleClientSite
		
		
				IOleInPlaceFrame 
		
		
				IDocHostUIHandler
		
		
				// IOleInPlaceSite
		
		
				// IOleClientSite
		
		
				---------------------------------------
		
		
				So?
		
		
				IOleInPlaceFrame 
		
		
				IOleClientSite
		
		
				IDocHostUIHandler
		
		
				IOleInPlaceSiteWindowless
		
		
				IOleClientSite
		
		 
		
				尝试方案
				
						
						
				
		
		
				Flash WindowLess 
				用法
				
						
						
				
		
		
				// IOleInPlaceSiteWindowless interface
		
		
				virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate(void);
		
		
				
						          return S_OK;
		
		
				virtual HRESULT STDMETHODCALLTYPE GetCapture(void);
		
		
				
						          return S_FALSE;
		
		
				virtual HRESULT STDMETHODCALLTYPE SetCapture(/* [in] */ BOOL fCapture);
		
		
				
						          return S_FALSE;
		
		
				virtual HRESULT STDMETHODCALLTYPE GetFocus(void);
		
		
				
						          return S_OK;
		
		
				virtual HRESULT STDMETHODCALLTYPE SetFocus(/* [in] */ BOOL fFocus);
		
		
				
						          return S_OK;
		
		
				virtual HRESULT STDMETHODCALLTYPE GetDC(/* [in] */ LPCRECT pRect, 
		
		
				/* [in] */ DWORD grfFlags, 
		
		
				/* [out] */ HDC __RPC_FAR *phDC);
		
		
				
						          return S_FALSE;
		
		
				virtual HRESULT STDMETHODCALLTYPE ReleaseDC(/* [in] */ HDC hDC);
		
		
				
						          return S_FALSE;
		
		
				virtual HRESULT STDMETHODCALLTYPE InvalidateRect(/* [in] */ LPCRECT pRect, 
		
		
				/* [in] */ BOOL fErase);
		
		
				virtual HRESULT STDMETHODCALLTYPE InvalidateRgn(/* [in] */ HRGN hRGN, 
		
		
				/* [in] */ BOOL fErase);
		
		
				return S_OK;
		
		
				virtual HRESULT STDMETHODCALLTYPE ScrollRect(/* [in] */ INT dx, 
		
		
				/* [in] */ INT dy, 
		
		
				/* [in] */ LPCRECT pRectScroll, 
		
		
				/* [in] */ LPCRECT pRectClip);
		
		
				NOTIMPLEMENTED
		
		
				virtual HRESULT STDMETHODCALLTYPE AdjustRect(/* [out][in] */ LPRECT prc); 
		
		
				return S_FALSE; 
		
		
				virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage(/* [in] */ UINT msg, 
		
		
				/* [in] */ WPARAM wParam, 
		
		
				/* [in] */ LPARAM lParam, 
		
		
				/* [out] */ LRESULT __RPC_FAR *plResult);
		
		
				return S_FALSE;
		
		
				
						如何获取
						
								IID_IViewObjectEx?
						
				
		
		
				
						只能获取
				
				IID_IViewObject
		
		
				
						
								 
						
				
		
		
				
						Q5: 
						研究
						Flash 
						这两个
						Object 
						如何获得?
						
								
								
						
				
		
		
				
						
								    
						
						IViewObjectEx
						 *
						m_lpViewObject
						;
				
		
		
				
						
								    
						
						IViewObjectEx
						 *
						m_lpViewObjectEx
						;
				
		
		
				
						
								 
						
				
		
		
				
						
								    
						
						在
						 Flash 
						的代码中有以下的特殊处理
						
								
								
						
				
		
		
				
						
								    
						
						hr
						 = 
						m_lpO
						->
						QueryInterface
						(
						IID_IViewObjectEx
						, (
						void
						 **)&
						m_lpViewObjectEx
						);
				
		
		
				
						
								    
								
								
						
				
		
		
				
						
								    
						
						if
						( 
						FAILED
						(
						hr
						) )
				
		
		
				
						
								    {
				
		
		
				
						
								        
						
						m_lpViewObjectEx
						 = 
						NULL
						;
				
		
		
				
						
								        
						
						hr
						 = 
						m_lpO
						->
						QueryInterface
						(
						IID_IViewObject
						, (
						void
						 **)&
						m_lpViewObject
						);
				
		
		
				
						
								        
								
								
						
				
		
		
				
						
								        
						
						if
						 (
						FAILED
						(
						hr
						))
				
		
		
				
						
								            
						
						return
						
						
						FALSE
						;
				
		
		
				
						
								    }
				
		
		
				
						
								 
						
				
		
		
				
						
								     
						
						实验后,发现
						
								
								
						
				
		
		
				
						     IOleInPlaceSiteWindowless::InvalidateRect() 
				根本没有响应到
				
						
								在
								 Flash 
								的基础上修改