home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / ocfinc.pak / OCLINK.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  5KB  |  161 lines

  1. //
  2. //----------------------------------------------------------------------------
  3. // ObjectComponents
  4. // (C) Copyright 1994 by Borland International, All Rights Reserved
  5. //
  6. //   Definition of TOcLinkView Class
  7. //----------------------------------------------------------------------------
  8. #if !defined(OCF_OCLINK_H)
  9. #define OCF_OCLINK_H
  10.  
  11. #if !defined(OCF_BOLEINTF_H)
  12. # include <ocf/boleintf.h>
  13. #endif
  14. #if !defined(OCF_OCREG_H)
  15. # include <ocf/ocreg.h>
  16. #endif
  17. #if !defined(OCF_OCOBJECT_H)
  18. # include <ocf/ocobject.h>
  19. #endif
  20. #if !defined(CLASSLIB_VECTIMP_H)
  21. # include <classlib/vectimp.h>
  22. #endif
  23. #if !defined(OSL_GEOMETRY_H)
  24. # include <osl/geometry.h>
  25. #endif
  26.  
  27. class _ICLASS TOcView;
  28.  
  29. //
  30. // Link Viewer object for a server document
  31. //
  32. class _ICLASS TOcLinkView : public TUnknown,
  33.                             private IBPart {
  34.   public:
  35.     TOcLinkView(TOcView* ocView, TRegList* regList = 0, IUnknown* outer = 0);
  36.     int Detach();
  37.  
  38.     // IBSite pass-thrus
  39.     //
  40.     void    Invalidate(TOcInvalidate);
  41.     void    Disconnect();
  42.  
  43.     // Misc status accessors, etc.
  44.     //
  45.     void GetLinkRect();
  46.     void   SetMoniker(const char far* name);
  47.     TString& GetMoniker() {return Moniker;};
  48.  
  49.     // Object reference & lifetime managment
  50.     //
  51.     ulong   _IFUNC AddRef() {return GetOuter()->AddRef();}
  52.     ulong   _IFUNC Release() {return GetOuter()->Release();}
  53.     HRESULT _IFUNC QueryInterface(const GUID far& iid, void far*far* iface)
  54.                      {return GetOuter()->QueryInterface(iid, iface);}
  55.  
  56.   protected:
  57.     // TUnknown virtual overrides
  58.     //
  59.     HRESULT      QueryObject(const IID far& iid, void far* far* iface);
  60.  
  61.     // IBDataNegotiator implementation
  62.     //
  63.     uint     _IFUNC CountFormats();
  64.     HRESULT  _IFUNC GetFormat(uint index, TOcFormatInfo far* fmt);
  65.  
  66.     // IBDataProvider implementation
  67.     //
  68.     HANDLE  _IFUNC  GetFormatData(TOcFormatInfo far*);
  69.     HRESULT _IFUNC  Draw(HDC, const RECTL far*, const RECTL far*, TOcAspect, TOcDraw bd);
  70.     HRESULT _IFUNC  GetPartSize(TSize far*);
  71.     HRESULT _IFUNC  Save(IStorage*, bool sameAsLoad, bool remember);
  72.  
  73.     // IBPart implementation
  74.     //
  75.     HRESULT _IFUNC  Init(IBSite far*, TOcInitInfo far*);
  76.     HRESULT _IFUNC  Close();
  77.     HRESULT _IFUNC  CanOpenInPlace();
  78.     HRESULT _IFUNC  SetPartSize(TSize far*);
  79.     HRESULT _IFUNC  SetPartPos(TRect far*);
  80.     HRESULT _IFUNC  Activate(bool);
  81.     HRESULT _IFUNC  Show(bool);
  82.     HRESULT _IFUNC  Open(bool);
  83.     HRESULT _IFUNC  EnumVerbs(TOcVerb far*);
  84.     HRESULT _IFUNC  DoVerb(uint);
  85.     HWND    _IFUNC  OpenInPlace(HWND);
  86.     HRESULT _IFUNC  InsertMenus(HMENU, TOcMenuWidths far*);
  87.     HRESULT _IFUNC  ShowTools(bool);
  88.     void    _IFUNC  FrameResized(const TRect far*, bool);
  89.     HRESULT _IFUNC  DragFeedback(TPoint far*, bool);
  90.     HRESULT _IFUNC  GetPalette(LOGPALETTE far* far*);
  91.     HRESULT _IFUNC  SetHost(IBContainer far* objContainer);
  92.     HRESULT _IFUNC  DoQueryInterface(const IID far& iid, void far* far* pif);
  93.     LPOLESTR _IFUNC GetName(TOcPartName);
  94.  
  95. #if defined(BI_DATA_NEAR)
  96.     TPoint&         Origin;  // Origin of view topleft relative to the document
  97.     TSize&          Extent;  // size of the document containing selection
  98. #else
  99.     TPoint          Origin;
  100.     TSize           Extent;
  101. #endif
  102.  
  103.   private:
  104.    ~TOcLinkView();
  105.  
  106.     TOcView*        OcView;
  107.     IUnknown*       BSite;           // In-place site helper
  108.     IBSite*         BSiteI;          // Site interface
  109.     IBApplication*  BAppI;           // Site's application interface
  110.  
  111. #if defined(BI_DATA_NEAR)
  112.     TString&        Moniker;         //
  113. #else
  114.     TString         Moniker;
  115. #endif
  116.  
  117.   friend class TOcViewCollection;
  118. };
  119.  
  120.  
  121. //
  122. // Container of views with iterator
  123. //
  124. class TOcViewCollection : private TCVectorImp<TOcLinkView*> {
  125.   private:
  126.     typedef TCVectorImp<TOcLinkView*> Base;
  127.     friend class TOcViewCollectionIter;
  128.   public:
  129.     TOcViewCollection();
  130.    ~TOcViewCollection();
  131.     void operator delete(void* ptr) {TStandardAllocator::operator delete(ptr);}
  132.  
  133.     void Clear();
  134.     int Add(TOcLinkView* const& View) {return Base::Add(View);}
  135.     int IsEmpty() const {return Base::IsEmpty();}
  136.     unsigned Find(TOcLinkView* const& view) const {return Base::Find(view);}
  137.     virtual unsigned Count() const {return Base::Count();}
  138.     int Detach(TOcLinkView* const& view, int del = 0);
  139.     TOcLinkView* Find(TString const moniker) const;
  140. };
  141.  
  142. //
  143. //
  144. //
  145. class TOcViewCollectionIter : private TCVectorIteratorImp<TOcLinkView*> {
  146.   private:
  147.     typedef TCVectorIteratorImp<TOcLinkView*> Base;
  148.   public:
  149.     TOcViewCollectionIter(const TOcViewCollection& c) : Base(c) {}
  150.     operator int() const {return Base::operator int();}
  151.     TOcLinkView* Current() const {return Base::Current();}
  152.     TOcLinkView* operator ++(int) {return Base::operator ++(0);}
  153.     TOcLinkView* operator ++() {return Base::operator ++();}
  154.     void Restart() {Base::Restart();}
  155.     void Restart(unsigned start, unsigned stop) {Base::Restart(start, stop);}
  156. };
  157.  
  158. #endif  // OCF_OCLINK_H
  159.  
  160.  
  161.