//************************************************************************** // // Copyright 2002 // Sybase Inc. // // ALL RIGHTS RESERVED. NO PORTION OF THIS MATERIAL MAY BE COPIED // IN ANY WAY WITHOUT PRIOR WRITTEN CONSENT FROM COMPUTER SOLUTIONS // INCORPORATED. // // ------------------------------------------------------------------------ // // Filename : pbext.h // // Author : PB kernel team // // Purpose : structures and interfaces used to implement PB Extensions. // //**************************************************************************** #ifndef PBPSPP_H #define PBPSPP_H #include "pbni.h" #ifndef PBOS_UNIX #include "pbevtid.h" #endif //**************************************************************************** // Interfaces should be implemented by PB Extensions //**************************************************************************** struct IPBX_UserObject { virtual PBXRESULT Invoke( IPB_Session *session, pbobject obj, pbmethodID mid, PBCallInfo *ci) = 0; virtual void Destroy() = 0; virtual ~IPBX_UserObject(){}; }; //**************************************************************************** // IPBX_NonVisualObject // The IPBX_NonVisualObject interface needs to be implemented by the native // classes that inherit from nonvisualobject. //**************************************************************************** struct IPBX_NonVisualObject : public IPBX_UserObject { }; // A duplicate of PB internal definition #define PB_NULL -1 //**************************************************************************** // IPBX_VisualObject // The IPBX_VisualObject interface needs to be implemented by the native // classes that inherit from userobject. //**************************************************************************** struct IPBX_VisualObject : public IPBX_UserObject { virtual LPCTSTR GetWindowClassName() = 0; virtual HWND CreateControl( DWORD dwExStyle, // extended window style LPCTSTR lpWindowName, // window name DWORD dwStyle, // window style int x, // horizontal position of window int y, // vertical position of window int nWidth, // window width int nHeight, // window height HWND hWndParent, // handle to parent or owner window HINSTANCE hInstance // handle to application instance ) = 0; virtual int GetEventID( HWND hWnd, /* Handle to owner window */ UINT iMsg, /* Owner message */ WPARAM wParam, /* Owner word parm */ LPARAM lParam /* Owner long parm */ ) { return PB_NULL; } }; //**************************************************************************** // IPBX_Marshaler // Each marshaler extension should have at least one class implementing // the IPBX_Marshaler interface. //**************************************************************************** struct IPBX_Marshaler { virtual PBXRESULT InvokeRemoteMethod( IPB_Session *session, pbproxyObject obj, LPCTSTR methodDesc, PBCallInfo *ci) = 0; virtual pbulong GetModuleHandle() = 0; virtual void Destroy() = 0; protected: virtual ~IPBX_Marshaler(){}; }; //**************************************************************************** // pbborder_style //**************************************************************************** enum pbborder_style { pbborderstyle_none = 0, pbborderstyle_shadowbox = 1, pbborderstyle_box = 2, pbborderstyle_lowered = 5, pbborderstyle_raised = 6 }; //**************************************************************************** // PBX_DrawItemStruct // The structure contains the properties of a external visual control. //**************************************************************************** struct PBX_DrawItemStruct { int x; int y; int width; int height; LPCTSTR objectName; LPCTSTR tag; BOOL enabled; BOOL visible; pbborder_style borderStyle; DWORD backColor; }; //**************************************************************************** // Functions should be exported by an PBExtension DLL //**************************************************************************** extern "C" { PBXEXPORT LPCTSTR PBXCALL PBX_GetDescription(); PBXEXPORT PBXRESULT PBXCALL PBX_CreateNonVisualObject( IPB_Session *pbsession, pbobject pbobj, LPCTSTR className, IPBX_NonVisualObject **obj); PBXEXPORT PBXRESULT PBXCALL PBX_CreateVisualObject( IPB_Session *pbsession, pbobject pbobj, LPCTSTR className, IPBX_VisualObject **obj); PBXEXPORT PBXRESULT PBXCALL PBX_InvokeGlobalFunction( IPB_Session *pbsession, LPCTSTR functionName, PBCallInfo *ci); PBXEXPORT PBXRESULT PBXCALL PBX_DrawVisualObject( HDC hDC, LPCTSTR className, const PBX_DrawItemStruct &property); const pbint kAfterDllLoaded = 1; const pbint kBeforeDllUnloaded = 2; PBXEXPORT PBXRESULT PBXCALL PBX_Notify( IPB_Session *pbsession, pbint reasonForCall); //**************************************************************************** // PBX_GetVersion Function indicate the version information of PBExtension DLL //**************************************************************************** const pbint kPBVMVersion = 0x0a00; #if defined(UNICODE) || defined(_UNICODE) const pbint kUnicodeEnabled = 1; #else const pbint kUnicodeEnabled = 0; #endif PBXEXPORT inline long PBXCALL PBX_GetVersion() { return MAKELONG(kPBVMVersion, kUnicodeEnabled); }; } #endif