home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / ADDON.PAK / PDVIEW.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  4.2 KB  |  185 lines

  1. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2.  
  3.   pdview.cpp
  4.   Created: 12/1/95
  5.   Copyright (c) 1995, Borland International
  6.   $Revision:   1.16  $
  7.  
  8. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  9. #ifndef __AOEXPCH_H
  10.   #include "aoexpch.h"
  11. #endif
  12. #pragma hdrstop
  13.  
  14. #include "pdview.h"
  15. #include <windowsx.h>
  16.  
  17. extern HINSTANCE ghInst;
  18. extern HWND CreateProjectDetailWindow(HINSTANCE hInstance, HWND hwndParent);
  19.  
  20.  
  21. /******************************************************************************
  22. *
  23. *
  24. * ProjectDetailViewClient
  25. *
  26. *
  27. ******************************************************************************/
  28.  
  29. class ProjectDetailViewClient : public IViewClient {
  30. public:
  31.   ProjectDetailViewClient();
  32.   ~ProjectDetailViewClient();
  33.  
  34.   //IUnknown members
  35.   STDMETHODIMP QueryInterface (THIS_ REFIID, LPVOID FAR *);
  36.   STDMETHODIMP_(ULONG) AddRef (THIS) { return m_RefCount++; }
  37.   STDMETHODIMP_(ULONG) Release (THIS)
  38.       {return --m_RefCount == 0 ? (delete this, 0) : m_RefCount; }
  39.  
  40.   virtual HWND      GetHwnd();
  41.   virtual long      GetRestoreDataLen();
  42.   virtual void*    GetRestoreData();
  43.   virtual BOOL      CanClose();
  44.   virtual unsigned  CommandSupported( IPolyString* );
  45.   virtual void      ExecuteCommand( IPolyString* );
  46.    virtual void     PropertyChangeNotify();
  47.  
  48.  
  49.   HWND    Create(IViewParentWnd* wndServer, void * restoreData);
  50. protected:
  51.   HWND  d_hwnd;
  52.   IViewParentWnd* d_viewParent;
  53.  
  54. protected:
  55.   // private variables
  56.   ULONG    m_RefCount;
  57. };
  58.  
  59. ProjectDetailViewClient::ProjectDetailViewClient() {
  60.   m_RefCount = 1;
  61.   d_hwnd = 0;
  62.   d_viewParent = 0;
  63. };
  64.  
  65. ProjectDetailViewClient::~ProjectDetailViewClient() {
  66.   if (d_viewParent) {
  67.     d_viewParent->Release();
  68.   }
  69.   if ( IsWindow(d_hwnd) )
  70.     DestroyWindow(d_hwnd);
  71. };
  72.  
  73.  
  74. STDMETHODIMP
  75. ProjectDetailViewClient::QueryInterface (REFIID riid, LPVOID FAR* ppobj)
  76. {
  77.   if ((riid == IID_IUnknown)/* || (riid == IID_PUBLIC_)*/)
  78.   {
  79.     *ppobj = (LPVOID)this;
  80.     AddRef();
  81.     return NOERROR;
  82.   }
  83.  
  84.   *ppobj = NULL;
  85.   return ResultFromScode(E_NOINTERFACE);
  86. }
  87.  
  88.  
  89. HWND ProjectDetailViewClient::Create(IViewParentWnd* wndServer, void * /*restoreData*/) {
  90.  
  91.   d_viewParent = wndServer;
  92.   HWND hwndParent = wndServer->GetHwnd();
  93.  
  94.   d_hwnd = CreateProjectDetailWindow(ghInst, hwndParent);
  95.   return d_hwnd;
  96.  
  97. };
  98.  
  99. HWND ProjectDetailViewClient::GetHwnd()
  100. {
  101.   return d_hwnd;
  102. };
  103.  
  104. long  ProjectDetailViewClient::GetRestoreDataLen()
  105. {
  106.   //
  107.   // there is nothing to save.
  108.   //
  109.   return 0; 
  110. };
  111.  
  112. //
  113. // Save the data user entered to the destop file
  114. //
  115. void* ProjectDetailViewClient::GetRestoreData()
  116. {
  117.   //
  118.   // there is nothing to save.
  119.   //
  120.   return NULL;
  121. };
  122.  
  123. BOOL  ProjectDetailViewClient::CanClose()
  124. {
  125.   return 1;
  126. };
  127.  
  128. unsigned ProjectDetailViewClient::CommandSupported(IPolyString* cmdStr)
  129. {
  130.   cmdStr->Release();
  131.   return CMD_UNKNOWN;
  132. }
  133.  
  134.  
  135. void ProjectDetailViewClient::ExecuteCommand(IPolyString* cmdStr)
  136. {
  137.   cmdStr->Release();
  138. }
  139.  
  140. void ProjectDetailViewClient::PropertyChangeNotify() {
  141. };
  142.  
  143. /******************************************************************************
  144. *
  145. *
  146. * ProjectDetailViewFactory
  147. *
  148. *
  149. ******************************************************************************/
  150.  
  151. ProjectDetailViewFactory::ProjectDetailViewFactory(IViewType* messageView) {
  152.   m_RefCount = 1;
  153.  
  154.   messageView->Init(this
  155.                     , MakePolyString("AddOnProjectDetailView")
  156.                     , /* project region */ 0, 358, 813, 538);
  157.   messageView->Release();
  158. };
  159.  
  160. STDMETHODIMP
  161. ProjectDetailViewFactory::QueryInterface (REFIID riid, LPVOID FAR* ppobj)
  162. {
  163.   if ((riid == IID_IUnknown)/* || (riid == IID_PUBLIC_)*/)
  164.   {
  165.     *ppobj = (LPVOID)this;
  166.     AddRef();
  167.     return NOERROR;
  168.   }
  169.  
  170.   *ppobj = NULL;
  171.   return ResultFromScode(E_NOINTERFACE);
  172. }
  173.  
  174. IViewClient* ProjectDetailViewFactory::CreateView(IViewParentWnd* wndServer, void * restoreData) {
  175.   ProjectDetailViewClient* viewClient = new ProjectDetailViewClient;
  176.   viewClient->Create(wndServer, restoreData);
  177.   return viewClient;
  178. };
  179.  
  180. void ProjectDetailViewFactory::InitializeProperty(IViewType* viewType) {
  181.   viewType->Release();
  182. }
  183.  
  184. //.............................................................................
  185.