home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win / sieciowe / oiv_demo.lzh / disk2 / DATA.2 / include / Ivf / IvfView.h < prev    next >
C/C++ Source or Header  |  1995-08-02  |  4KB  |  145 lines

  1. /*
  2. * Copyright (C) 1995   Template Graphics Software, Inc.
  3. _______________________________________________________________________
  4. _________________  TEMPLATE GRAPHICS SOFTWARE INC.  ___________________
  5. |
  6. |
  7. |    This class provides methods to process messages directed to the
  8. |   view object and IVF viewer specific functions.
  9. |
  10. |   Author(s): James R. Gambale, Jr.
  11. |
  12. _________________  TEMPLATE GRAPHICS SOFTWARE INC.  ___________________
  13. _______________________________________________________________________
  14. */
  15.  
  16.  
  17. #ifndef __CIVFVIEW_H__
  18. #define __CIVFVIEW_H__
  19.  
  20. class SoError;
  21. class SoWinComponent;
  22.  
  23. class CIvfApp;
  24. class CIvfMainFrame;
  25. class CIvfDoc;
  26. class CIvfVwr ;
  27.  
  28. class CIvfView
  29. {
  30. friend class CIvfMainFrame;
  31. friend class CIvfDoc;
  32.  
  33. public: 
  34.     CIvfView();
  35.     ~CIvfView();
  36.  
  37.     // This method uses the runtime class information pointed to by
  38.     // pVwrClass to construct an IVF viewer object.  The IVF viewer
  39.     // object is manipulated through the virtual functions declared
  40.     // in the CIvfVwr class declaration.  pVwrArgs is passed to
  41.     // the viewer creation method.
  42.     void             IvfCreateViewer(CRuntimeClass *pVwrClass,
  43.                                      void *pVwrArgs=NULL) ;
  44.  
  45.     // This method sets the current viewer to pViewer.
  46.     void             IvfSetViewer(CRuntimeClass *pVwrClass,
  47.                                  CIvfVwr *pViewer,
  48.                                  void *pVwrArgs) ;
  49.  
  50.     // This method destroys the current viewer.
  51.     void             IvfDestroyViewer();
  52.  
  53.     // This method returns a pointer to the current viewer.
  54.     CIvfVwr *        IvfGetViewer() { return m_pViewer; } ;
  55.  
  56.     // This method returns a pointer to the current viewer component.
  57.     SoWinComponent *IvfGetVwrComponent() ;
  58.     
  59.     // This method notifies the view that the scene graph has changed.
  60.     void             IvfSceneGraphChanged() ;
  61.  
  62.      
  63.      // This method is invoked when an error is encountered.  A dialog
  64.     // containing the error message is displayed.
  65.      static void     IvfErrorCallback( const SoError *error, void *data );
  66.  
  67. protected:
  68.  
  69.      // pointer to the runtime class information for the current IVF viewer
  70.      CRuntimeClass *m_pVwrClass ;
  71.  
  72.      // pointer to the current IVF viewer.
  73.      CIvfVwr *        m_pViewer;
  74.  
  75.      // pointer to the IVF viewer creation arguments
  76.      void *            m_pVwrArgs;
  77.  
  78.      // This method is invoked when the MFC (and IVF) view object(s) are
  79.      // abount to be destroyed.
  80.      void             IvfOnDestroy();
  81.  
  82.      // Paint message handler.
  83.      void             IvfOnPaint();
  84.  
  85.      // This method is invoked the during the first update of the view.
  86.      void             IvfOnInitialUpdate();
  87.  
  88.      // This method is invoked prior to view activation.
  89.      void             IvfOnActivateView();
  90.  
  91.      // This method is invoked prior to view deactivation.
  92.      void             IvfOnDeactivateView();
  93.      
  94.      // This method is invoked to update the frame title string.
  95.      BOOL             IvfOnUpdateFrameTitle(CString &strTitle) ;
  96.  
  97.      // This method is used to route messages to the IVF viewer dialogs.
  98.      // TRUE is returned if the message is processed, FALSE otherwise.
  99.      BOOL             IvfPreTranslateMessage(MSG* pMsg);
  100.  
  101.      // This method is used to route commands to the IVF viewer.
  102.      // TRUE is returned if the command is processed, FALSE otherwise.
  103.      BOOL            IvfOnCommand(WPARAM wParam, LPARAM lParam);
  104.  
  105.      // This method is used to route command messages to the IVF viewer.
  106.      // TRUE is returned if the command is processed, FALSE otherwise.
  107.      BOOL            IvfOnCmdMsg(UINT nID, int nCode, void* pExtra,
  108.                                 AFX_CMDHANDLERINFO* pHandlerInfo) ;
  109.  
  110. };
  111.  
  112.  
  113. // These macros are used in the application view class implementation
  114. // to route commands to the IVF view object.
  115. #define IVF_ON_METHOD_NAME(CmdName) On##CmdName
  116. #define IVF_ON_UPD_METHOD_NAME(CmdName) OnUpdate##CmdName 
  117.  
  118. #ifdef _DEBUG
  119. #define IVF_COMMAND_HANDLER(ViewName,VwrName,CmdName) \
  120. void ViewName::IVF_ON_METHOD_NAME(CmdName) () \
  121. { \
  122.     VwrName *pViewer = (VwrName *)m_pViewer ; \
  123.     pViewer->IVF_ON_METHOD_NAME(CmdName) (); \
  124. } \
  125. void ViewName::IVF_ON_UPD_METHOD_NAME(CmdName) (CCmdUI* pCmdUI)\
  126. { \
  127.     VwrName *pViewer = (VwrName *)m_pViewer ; \
  128.     pViewer->IVF_ON_UPD_METHOD_NAME(CmdName) (pCmdUI); \
  129. }  
  130. #else
  131. #define IVF_COMMAND_HANDLER(ViewName,VwrName,CmdName) \
  132. void ViewName::IVF_ON_METHOD_NAME(CmdName) () \
  133. { \
  134.     VwrName *pViewer = (VwrName *)m_pViewer ; \
  135.     pViewer->IVF_ON_METHOD_NAME(CmdName) (); \
  136. } \
  137. void ViewName::IVF_ON_UPD_METHOD_NAME(CmdName) (CCmdUI* pCmdUI)\
  138. { \
  139.     VwrName *pViewer = (VwrName *)m_pViewer ; \
  140.     pViewer->IVF_ON_UPD_METHOD_NAME(CmdName) (pCmdUI); \
  141. }  
  142. #endif
  143.  
  144. #endif
  145.