7 #ifndef _INC_cOleControl_H
8 #define _INC_cOleControl_H
12 #include "../WinAPI/WinTypes.h"
14 #if defined(_WIN32) && defined(_MSC_VER)
15 #include "../Windows/cWindow.h"
16 #include "../WinAPI/cWinVariant.h"
17 #include "../Geometry/cRectI.h"
18 #include "../Input/cInputBase.h"
31 MIDL_INTERFACE(
"0CFBAF3A-9FF6-429a-99B3-A2796AF8B89B") IDirect3DSurface9;
40 class cOleWebBrowserRedir;
49 OLE_WINDOW_Unknown = 0,
64 cOleControl* m_pParentControl;
70 cOleWindowBase(cOleControl* pParentControl)
71 : m_pParentControl(pParentControl)
75 ASSERT(m_rectDirty.isRectNull());
78 bool isDisposed() const noexcept
80 return m_pParentControl ==
nullptr;
82 virtual void DisposeThis()
85 m_pParentControl =
nullptr;
88 bool isRectDirty()
const
91 return(!m_rectDirty.IsRectEmpty());
93 const cRectI& get_RectDirty()
const
97 void addRectDirty(
const RECT* pRect =
nullptr);
99 virtual HRESULT InitInstance() = 0;
100 virtual bool CheckRectDirty()
102 return isRectDirty();
104 virtual HRESULT DrawControl(HDC hDC, DWORD dwDrawAspect) = 0;
105 virtual LRESULT OnWindowMessage1(MSG& sMsg);
117 friend class cOleWindowless;
118 friend class cOleWindowProxy;
119 friend class cOleClientSite;
122 cIUnkPtr<IOleObject> m_pOleObject;
125 const INT_PTR m_nChildId;
130 THREADID_t m_nThreadIdCreated;
133 cIUnkPtr<IOleInPlaceObject> m_pInPlaceObject;
134 cIUnkPtr<IViewObjectEx> m_pViewObject;
137 OLE_WINDOW_TYPE m_eWindowType;
139 cRefPtr<cOleWindowBase> m_pOleWindowBase;
140 cRefPtr<cOleClientSite> m_pOleClientSite;
142 cOleWebBrowserRedir* m_pWebBrowserRedir;
143 OLE_WINDOW_TYPE m_eDesireWindowType;
144 bool m_bDesireTransparent;
150 cOleControl(INT_PTR nChildId, cOleWebBrowserRedir* pBrowserRedir);
151 virtual ~cOleControl();
157 cOleWindowless* get_OleWindowless()
const;
158 cOleWindowProxy* get_OleWindowProxy()
const;
163 virtual HRESULT InitOleControl(OLE_WINDOW_TYPE eDesireWindowType,
bool bDesireTransparent =
false) = 0;
166 virtual bool isDisposed()
const = 0;
167 virtual void DisposeThis();
174 virtual void put_Name(
const char* pszName);
175 void put_Name(BSTR bsName);
176 void put_Name(VARIANT* pvName);
178 HWND get_WndParent()
const
183 void put_WndParent(HWND hWndParent);
185 HWND get_WndFrame()
const;
187 const cRectI& get_Rect()
const
191 HRESULT SetRect(
const cRectI& rectNew,
int iForceChange=0);
192 HRESULT put_Rect(
const cRectI& rectNew)
194 return SetRect(rectNew, 1);
197 bool CheckRectDirty();
200 virtual tagREADYSTATE get_ReadyState()
const;
201 HRESULT WaitForReadyState(
TIMESYSD_t nTimeMax,
bool bMsgLoop,
int eReadyStateMin);
203 virtual HRESULT DrawControl(HDC hDC, DWORD dwDrawAspect = DVASPECT_CONTENT);
206 virtual HRESULT DrawControl(IDirect3DSurface9* pSurface);
209 virtual LRESULT OnWindowMessage1(MSG& msg);
210 LRESULT OnWindowMessage(HWND hWndSrc,
WINMSG_t msg, WPARAM wParam, LPARAM lParam);
212 bool isMouseHit(
const POINT& pt)
const;
213 virtual void OnMouseMove(
MBUTTON_TYPE button,
const POINT& pt);
215 bool isCreationThread()
const
226 typedef cRefPtr<cOleControl> cOleControlPtr;
MIDL_INTERFACE("7ED943DD-52E8-40b5-A8D8-76685C406330") ID3DXBaseMesh
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
UINT WINMSG_t
Supplement _WIN32 "windows.h".
Definition: WinTypes.h:111
#define ASSERT(exp)
Definition: cDebugAssert.h:87
static THREADID_t GetCurrentId() noexcept
Definition: cThreadLock.h:97
static const THREADID_t k_NULL
Not a valid thread Id.
Definition: cThreadLock.h:64
MBUTTON_TYPE
Definition: cInputBase.h:40
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
cStringT< char > cStringA
Definition: cString.h:635
char GChar_t
My version of TCHAR, _TCHAR.
Definition: StrConst.h:26
static void Zero(void *pData, size_t nSizeBlock) noexcept
Definition: cMem.h:100
Definition: IUnknown.h:34