Windows NT 4.0 source code leak
 
 
 
 
 
 

90 lines
2.4 KiB

/*-------------------------------------**
** Declaration file for CXObject class **
** **
** Author: Phil Cooper **
** Created: 8-31-95 **
**-------------------------------------*/
#ifndef __XOBJ_HPP__
#define __XOBJ_HPP__
#ifdef _cplusplus
extern "C" {
#endif
// Only include class definitions if this is included by a C++ module
#ifdef __cplusplus
// Forward declaration
class CSite;
#define BASE_EXTENDED_PROPERTY 0x80010000
#define DISPID_NAME BASE_EXTENDED_PROPERTY | 0x00
class CXObject : public IDispatch
{
protected:
DWORD _dwRef; // Reference count
CSite * _pSite;
LPUNKNOWN _pInnerObj; // Pointer to inner control non-delegating IUnknown
LPOLEOBJECT _pIOleObject; // Pointer to inner control IOleObject
LPDISPATCH _pInnerDisp; // Pointer to inner control IDispatch
// Extended Properties
OLECHAR * _propName;
RECT _rcPos; // Used to return top, left, bottom, right.
SIZE _size; // Used to hold server extents
public: // ctor and dtor
CXObject(CSite *, const char*);
~CXObject(void);
public: // OLE Interface methods
// IUnknown methods
STDMETHOD (QueryInterface)(REFIID riid, LPVOID *ppvObj);
STDMETHOD_(ULONG,AddRef)();
STDMETHOD_(ULONG,Release)();
// IDispatch methods
STDMETHOD (Invoke)(LONG, REFIID, LCID, unsigned short, DISPPARAMS *, VARIANT *, EXCEPINFO *, unsigned int *);
STDMETHOD (GetIDsOfNames)(REFIID, LPOLESTR *, unsigned int, LCID, DISPID *);
STDMETHOD (GetTypeInfo)(UINT, LCID, ITypeInfo **);
STDMETHOD (GetTypeInfoCount)(unsigned int *);
STDMETHOD_(void, put_Name)(BSTR);
STDMETHOD_(BSTR, get_Name)(void);
public: // Public methods
DWORD GetRef() {return _dwRef;}
LPUNKNOWN *GetInnerUnknown(){return &_pInnerObj;}
LPOLEOBJECT GetObject(){ _pIOleObject->AddRef(); return _pIOleObject;}
SIZE * GetSize(void){ return &_size;}
RECT * GetRect(void){ return &_rcPos;}
HRESULT Initialize(void);
void Destroy(void);
HRESULT Activate(void);
HRESULT Deactivate(void);
HRESULT Hide(void);
HRESULT Show(void);
HRESULT GetExtents(DWORD, LPSIZEL);
HRESULT SetClientSite(LPOLECLIENTSITE);
private: // private helpers...
STDMETHOD (GetIDOfSingleName)(LCID lcid, LPOLESTR name, DISPID *dispptr);
HRESULT InitializeControl(LPSTREAM pStream = NULL);
};
typedef CXObject * LPCXOBJECT;
DECLARE_STANDARD_TYPES(CXObject);
#ifdef _cplusplus
}
#endif
#endif // __cplusplus
#endif // __XOBJ_HPP__