home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_122 / 9.ddi / OLE.ZIP / OLECLNT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  3.7 KB  |  106 lines

  1. // ObjectWindows - (C) Copyright 1992 by Borland International
  2. //
  3. // oleclnt.h
  4.  
  5. _CLASSDEF( TOleApp )
  6. _CLASSDEF( TOwlClient )
  7. _CLASSDEF( TOleDocWindow )
  8. _CLASSDEF( TSelectObjectDialog )
  9.  
  10. // prototype for the standard Call back function used for Ole notifications.
  11. // it will route notifications on to the appropiate object.
  12. int FAR PASCAL _export StdCallBack( LPOLECLIENT , OLE_NOTIFICATION , LPOLEOBJECT );
  13.  
  14. // This is a typedef for the Call Back function which the
  15. // Ole API uses.
  16. typedef int   FAR PASCAL ( *TCallBack )( LPOLECLIENT , OLE_NOTIFICATION , LPOLEOBJECT );
  17.  
  18. class TOleApp : public TApplication {
  19.  
  20. public:
  21.     TOleApp(LPSTR name, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmd,
  22.           int nCmdShow)
  23.         : TApplication(name, hInstance,
  24.                    hPrevInstance, lpCmd, nCmdShow) {};
  25.     virtual void InitMainWindow();
  26.     virtual void InitInstance();
  27.  
  28.     OLECLIPFORMAT  vcfLink, vcfNative, vcfOwnerLink;
  29.      // These are clipboard formats that Ole
  30.      // applications use to determine the type of
  31.      // object on the clipboard.  This application does not
  32.      // make use of them.
  33. };
  34.  
  35. // class: TOwlClient
  36. // This is an OLECLIENT structure with a pointer to a TOleDocWindow.
  37. // An OLECLIENT's primary purpose is to provide the CallBack function
  38. // which the Ole librarys will call to give notifications about a
  39. // particular object.  The purpose of a TOwlClient instance is to send those
  40. // notification to the TOleDocWindow instance which constructed it.
  41. // It will have no knowledge of the actual Object which it receives
  42. // notifications for.
  43. // The OLECLIENT
  44. // structure has a vtable which has the address of the callback function.
  45. // since only one such vtable need be constructed for instances of this
  46. // class, a static data member is used to determine if a vtable has
  47. // been constructed.
  48.  
  49. struct TOwlClient : OLECLIENT
  50. {
  51.     PTOleDocWindow TOleDocWindowThis;
  52.     TOwlClient( PTOleDocWindow , HINSTANCE hInst = 0);
  53.     static LPOLECLIENTVTBL lpClientVtbl;
  54. };
  55.  
  56.  
  57. // An Ole Document window, it responds to the Ole edit commands to put
  58. // manipulate an object in the window.
  59.  
  60. #define WM_U_REDRAW         (WM_USER + 1)
  61.  
  62. class TOleDocWindow : public TWindow {
  63. protected:
  64.     OLESTATUS ret;   //last OleStatus
  65.     LHCLIENTDOC lhClientDoc;
  66.     char lpszDocName[ MAXPATH ];
  67.     BOOL bDefDocName;
  68.  
  69.     char lpszObjectName[ MAXPATH ];
  70.     char lpszLastObjectName[ MAXPATH ];
  71.     PTOwlClient pOwlClient;
  72.     BOOL bObjectLoaded,  bUndoObjectLoaded ;
  73.     LPOLEOBJECT lpObject;        // actual object we are housing
  74.     LPOLEOBJECT lpUndoObject;    // last change made to object
  75.     static int nNextObjectNum;
  76. public:
  77.     TOleDocWindow( PTWindowsObject , LPSTR  );
  78.     virtual LPSTR GetClassName();
  79.     virtual void GetWindowClass( WNDCLASS _FAR &);
  80.     virtual void SetupWindow();
  81.     virtual void Paint( HDC , PAINTSTRUCT _FAR &);
  82.  
  83.     virtual void RegisterClientDoc();
  84.     void RegisterClient();
  85.     virtual void ShutDownWindow();
  86.     void CloseCurrentOle();
  87.     void RegFileName( LPSTR );
  88.     void BackupObject();
  89.  
  90.     virtual void WMURedraw( RTMessage ) = [ WM_FIRST + WM_U_REDRAW ];
  91.     virtual void WMInitMenu( RTMessage ) = [ WM_FIRST + WM_INITMENU ];
  92.  
  93.     virtual void CMPBrush( RTMessage ) = [ CM_FIRST + CM_PBRUSH ];
  94.     virtual void CMUndo( RTMessage )   = [ CM_FIRST + CM_UNDO ];
  95.     virtual void CMCut( RTMessage )    = [ CM_FIRST + CM_CUT ];
  96.     virtual void CMCopy( RTMessage )   = [ CM_FIRST + CM_COPY ];
  97.     virtual void CMPaste( RTMessage )  = [ CM_FIRST + CM_PASTE ];
  98.     virtual void CMClear( RTMessage )  = [ CM_FIRST + CM_CLEAR ];
  99.     virtual void CMActivate( RTMessage)= [ CM_FIRST + CM_ACTIVATE ];
  100.     virtual void CMAbout( RTMessage)   = [ CM_FIRST + CM_ABOUT ];
  101.  
  102.     LPSTR GetNextObjectName();
  103.  
  104.     int CallBack( LPOLECLIENT , OLE_NOTIFICATION , LPOLEOBJECT );
  105. };
  106.