#ifndef __UIFLASH_H__ #define __UIFLASH_H__ #pragma once // \Utils\Flash11.tlb 为Flash11接口文件,部分方法在低版本不存在,使用需注意 // #import "PROGID:ShockwaveFlash.ShockwaveFlash" \ // raw_interfaces_only, /* Don't add raw_ to method names */ \ // named_guids, /* Named guids and declspecs */ \ // rename("IDispatchEx","IMyDispatchEx") /* fix conflicting with IDispatchEx ant dispex.h */ // using namespace ShockwaveFlashObjects; #include "Utils/FlashEventHandler.h" #include "Utils/flash11.tlh" class CActiveXCtrl; namespace DuiLib { class UILIB_API CFlashUI : public CActiveXUI // , public IOleInPlaceSiteWindowless // 透明模式绘图,需要实现这个接口 , public _IShockwaveFlashEvents , public ITranslateAccelerator { DECLARE_DUICONTROL(CFlashUI) public: CFlashUI(void); ~CFlashUI(void); void SetFlashEventHandler(CFlashEventHandler* pHandler); virtual bool DoCreateControl(); IShockwaveFlash* m_pFlash; private: virtual LPCTSTR GetClass() const; virtual LPVOID GetInterface( LPCTSTR pstrName ); virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount( __RPC__out UINT *pctinfo ); virtual HRESULT STDMETHODCALLTYPE GetTypeInfo( UINT iTInfo, LCID lcid, __RPC__deref_out_opt ITypeInfo **ppTInfo ); virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( __RPC__in REFIID riid, __RPC__in_ecount_full(cNames ) LPOLESTR *rgszNames, UINT cNames, LCID lcid, __RPC__out_ecount_full(cNames) DISPID *rgDispId); virtual HRESULT STDMETHODCALLTYPE Invoke( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr ); virtual HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void **ppvObject ); virtual ULONG STDMETHODCALLTYPE AddRef( void ); virtual ULONG STDMETHODCALLTYPE Release( void ); HRESULT OnReadyStateChange (long newState); HRESULT OnProgress(long percentDone ); HRESULT FSCommand (_bstr_t command, _bstr_t args); HRESULT FlashCall (_bstr_t request ); virtual void ReleaseControl(); HRESULT RegisterEventHandler(BOOL inAdvise); // ITranslateAccelerator // Duilib消息分发给WebBrowser virtual LRESULT TranslateAccelerator( MSG *pMsg ); private: LONG m_dwRef; DWORD m_dwCookie; CFlashEventHandler* m_pFlashEventHandler; }; } #endif // __UIFLASH_H__