aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_swf/SWFContainer.h
blob: 2591bc0c65558aa8876b1fcd3ba75dd779882d50 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#ifndef NULLSOFT_HTMLCONTAINERH
#define NULLSOFT_HTMLCONTAINERH

#include <oleidl.h>
#include <ocidl.h>
//#import	<system32/macromed/Flash/Flash9e.ocx> /*no_namespace, */named_guids, raw_interfaces_only, exclude("IServiceProvider")
#include "Flash9e.tlh"
#include "FlashDispInterface.h"
//#include <shlobj.h> 

/**************************************************************************
   class definitions
**************************************************************************/


#ifndef DOCHOSTUIFLAG_HOST_NAVIGATES
#define DOCHOSTUIFLAG_HOST_NAVIGATES 0x02000000
#endif 
#ifndef DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION
#define DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION 0x04000000
#endif 
#ifndef DOCHOSTUIFLAG_USE_WINDOWLESS_SELECTCONTROL
#define DOCHOSTUIFLAG_USE_WINDOWLESS_SELECTCONTROL 0x08000000
#endif 
#ifndef DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL
#define DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL 0x10000000
#endif 
#ifndef DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE
#define DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE 0x20000000
#endif 


class SWFContainer : public IOleClientSite,
			public IOleInPlaceSite,
			public IOleInPlaceFrame,
			public IOleControlSite,
			public IDispatch
{
protected:
	ULONG m_cRefs;        // ref count

	IUnknown *m_punk;        // IUnknown of contained object
	RECT m_rect;         // size of control
	
	bool bInitialized;
public:
	HWND m_hwnd;         // window handle of the container
	SWFContainer(HWND hwnd);
	virtual ~SWFContainer();

public:
	// *** IUnknown Methods ***
	STDMETHOD(QueryInterface)(REFIID riid, PVOID *ppvObject);
	STDMETHOD_(ULONG, AddRef)(void);
	STDMETHOD_(ULONG, Release)(void);

	// *** IOleInPlaceUIWindow Methods ***
	STDMETHOD (GetBorder)(LPRECT lprectBorder);
	STDMETHOD (RequestBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
	STDMETHOD (SetBorderSpace)(LPCBORDERWIDTHS lpborderwidths);
	STDMETHOD (SetActiveObject)(IOleInPlaceActiveObject * pActiveObject,
	                            LPCOLESTR lpszObjName);
	// *** IOleClientSite Methods ***
	STDMETHOD (SaveObject)();
	STDMETHOD (GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, LPMONIKER *ppMk);
	STDMETHOD (GetContainer)(LPOLECONTAINER *ppContainer);
	STDMETHOD (ShowObject)();
	STDMETHOD (OnShowWindow)(BOOL fShow);
	STDMETHOD (RequestNewObjectLayout)();

	// *** IOleWindow Methods ***
	STDMETHOD (GetWindow) (HWND * phwnd);
	STDMETHOD (ContextSensitiveHelp) (BOOL fEnterMode);

	// *** IOleInPlaceSite Methods ***
	STDMETHOD (CanInPlaceActivate) (void);
	STDMETHOD (OnInPlaceActivate) (void);
	STDMETHOD (OnUIActivate) (void);
	STDMETHOD (GetWindowContext) (IOleInPlaceFrame ** ppFrame, IOleInPlaceUIWindow ** ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo);
	STDMETHOD (Scroll) (SIZE scrollExtent);
	STDMETHOD (OnUIDeactivate) (BOOL fUndoable);
	STDMETHOD (OnInPlaceDeactivate) (void);
	STDMETHOD (DiscardUndoState) (void);
	STDMETHOD (DeactivateAndUndo) (void);
	STDMETHOD (OnPosRectChange) (LPCRECT lprcPosRect);


	// *** IOleInPlaceFrame Methods ***
	STDMETHOD (InsertMenus)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths);
	STDMETHOD (SetMenu)(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject);
	STDMETHOD (RemoveMenus)(HMENU hmenuShared);
	STDMETHOD (SetStatusText)(LPCOLESTR pszStatusText);
	STDMETHOD (EnableModeless)(BOOL fEnable);
	STDMETHOD (TranslateAccelerator)(LPMSG lpmsg, WORD wID);

	// *** IOleControlSite Methods ***
	STDMETHOD (OnControlInfoChanged)(void);
	STDMETHOD (LockInPlaceActive)(BOOL fLock);
	STDMETHOD (GetExtendedControl)(IDispatch **ppDisp);
	STDMETHOD (TransformCoords)(POINTL *pptlHimetric, POINTF *pptfContainer, DWORD dwFlags);
	STDMETHOD (TranslateAccelerator)(LPMSG pMsg, DWORD grfModifiers);
	STDMETHOD (OnFocus)(BOOL fGotFocus);
	STDMETHOD (ShowPropertyFrame)(void);

	// *** IDispatch Methods ***
	STDMETHOD (GetIDsOfNames)(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid);
	STDMETHOD (GetTypeInfo)(unsigned int itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
	STDMETHOD (GetTypeInfoCount)(unsigned int FAR * pctinfo);
	STDMETHOD (Invoke) (
            /* [in] */ DISPID dispIdMember,
            /* [in] */ REFIID riid,
            /* [in] */ LCID lcid,
            /* [in] */ WORD wFlags,
            /* [out][in] */ DISPPARAMS *pDispParams,
            /* [out] */ VARIANT *pVarResult,
            /* [out] */ EXCEPINFO *pExcepInfo,
            /* [out] */ UINT *puArgErr);


public:
	void add(CLSID clsid);
	void remove();

	void setLocation(int x, int y, int width, int height);
	void setVisible(BOOL fVisible);
	void setFocus(BOOL fFocus);
	void setStatusWindow(HWND hwndStatus);
	bool translateKey(LPMSG pMsg);
	

	void close();

	IUnknown * getUnknown();
	void SyncSizeToWindow(HWND window);
	IConnectionPoint *GetConnectionPoint(REFIID riid);
	DWORD m_dwCookie;
	struct ShockwaveFlashObjects::IShockwaveFlash *flash;
	FlashDispInterface *externalInterface;
private:
	
};


#endif