xref: /trunk/main/odk/examples/OLE/activex/SOComWindowPeer.h (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb) !
1 /*************************************************************************
2  *
3  *  The Contents of this file are made available subject to the terms of
4  *  the BSD license.
5  *
6  *  Copyright 2000, 2010 Oracle and/or its affiliates.
7  *  All rights reserved.
8  *
9  *  Redistribution and use in source and binary forms, with or without
10  *  modification, are permitted provided that the following conditions
11  *  are met:
12  *  1. Redistributions of source code must retain the above copyright
13  *     notice, this list of conditions and the following disclaimer.
14  *  2. Redistributions in binary form must reproduce the above copyright
15  *     notice, this list of conditions and the following disclaimer in the
16  *     documentation and/or other materials provided with the distribution.
17  *  3. Neither the name of Sun Microsystems, Inc. nor the names of its
18  *     contributors may be used to endorse or promote products derived
19  *     from this software without specific prior written permission.
20  *
21  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28  *  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
29  *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
30  *  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
31  *  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  *
33  *************************************************************************/
34 
35 // SOComWindowPeer.h: Definition of the SOComWindowPeer class
36 //
37 //////////////////////////////////////////////////////////////////////
38 
39 #if !defined __SOCOMWINDOWPEER_H_
40 #define __SOCOMWINDOWPEER_H_
41 
42 #if _MSC_VER > 1000
43 #pragma once
44 #endif // _MSC_VER > 1000
45 
46 #include "resource.h"       // main symbols
47 #include <ExDispID.h>
48 #include <ExDisp.h>
49 #include <shlguid.h>
50 #include <atlctl.h>
51 
52 #include "so_activex.h"
53 
54 /////////////////////////////////////////////////////////////////////////////
55 // SOComWindowPeer
56 
57 class SOComWindowPeer :
58     public IDispatchImpl<ISOComWindowPeer, &IID_ISOComWindowPeer, &LIBID_SO_ACTIVEXLib>,
59     public ISupportErrorInfo,
60     public CComObjectRoot,
61     public CComCoClass<SOComWindowPeer,&CLSID_SOComWindowPeer>
62 {
63     HWND m_hwnd;
64 public:
65     SOComWindowPeer() : m_hwnd( NULL ) {}
66 
67 BEGIN_COM_MAP(SOComWindowPeer)
68     COM_INTERFACE_ENTRY(IDispatch)
69     COM_INTERFACE_ENTRY(ISOComWindowPeer)
70     COM_INTERFACE_ENTRY(ISupportErrorInfo)
71 END_COM_MAP()
72 DECLARE_NOT_AGGREGATABLE(SOComWindowPeer)
73 // Remove the comment from the line above if you don't want your object to
74 // support aggregation.
75 
76 DECLARE_REGISTRY_RESOURCEID(IDR_SOCOMWINDOWPEER)
77 
78 // ISupportsErrorInfo
79     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
80 
81 // ISOComWindowPeer
82         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE getWindowHandle(
83             /* [in] */ SAFEARRAY __RPC_FAR * procId,
84             /* [in] */ short s,
85             /* [retval][out] */ long __RPC_FAR *ret)
86         {
87             *ret = (long) m_hwnd;
88             return S_OK;
89         }
90 
91         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE getToolkit(
92             /* [retval][out] */ IDispatch __RPC_FAR *__RPC_FAR *retVal)
93         {
94             *retVal = NULL;
95             return S_OK;
96         }
97 
98         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE setPointer(
99             /* [in] */ IDispatch __RPC_FAR *xPointer)
100         {
101             return S_OK;
102         }
103 
104         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE setBackground(
105             /* [in] */ int nColor)
106         {
107             return S_OK;
108         }
109 
110         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE invalidate(
111             /* [in] */ short __MIDL_0015)
112         {
113             return S_OK;
114         }
115 
116         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE invalidateRect(
117             /* [in] */ IDispatch __RPC_FAR *aRect,
118             /* [in] */ short nFlags)
119         {
120             return S_OK;
121         }
122 
123         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE dispose( void)
124         {
125             return S_OK;
126         }
127 
128         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE addEventListener(
129             /* [in] */ IDispatch __RPC_FAR *xListener)
130         {
131             return S_OK;
132         }
133 
134         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE removeEventListener(
135             /* [in] */ IDispatch __RPC_FAR *xListener)
136         {
137             return S_OK;
138         }
139 
140         virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Bridge_implementedInterfaces(
141             /* [retval][out] */ SAFEARRAY __RPC_FAR * __RPC_FAR *pVal)
142         {
143             *pVal = SafeArrayCreateVector( VT_BSTR, 0, 2 );
144 
145             if( !*pVal )
146                 return E_FAIL;
147 
148             long ix = 0;
149             CComBSTR aInterface( OLESTR( "com.sun.star.awt.XSystemDependentWindowPeer" ) );
150             SafeArrayPutElement( *pVal, &ix, aInterface );
151 
152             ix = 1;
153             aInterface = CComBSTR( OLESTR( "com.sun.star.awt.XWindowPeer" ) );
154             SafeArrayPutElement( *pVal, &ix, aInterface );
155 
156             return S_OK;
157         }
158 
159         void SetHWNDInternally( HWND hwnd ) { m_hwnd = hwnd; }
160 };
161 
162 #endif // __SOCOMWINDOWPEER_H_
163