mirror of https://github.com/lianthony/NT4.0
90 lines
2.4 KiB
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__
|