Back

// PSLMonitor.h : Declaration of the CPSLMonitor

#pragma once
#include "resource.h"       // main symbols
#include "GUIDs.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"

#include "PSLRect.h"
#include "PSLSize.h"

class ATL_NO_VTABLE CPSLMonitor:
   public CComObjectRootEx<CComMultiThreadModel>,
   public CComCoClass<CPSLMonitor, &CLSID_PSLMonitor>,
   public IDispatchImpl<IPSLMonitor, &IID_IPSLMonitor, &LIBID_ProSysLib, PSL_HiVersion, PSL_LoVersion>,
   public CPSLException<&CLSID_PSLMonitor, &IID_IPSLMonitor>
{
public:

   CPSLMonitor();

   void Initialize(HMONITOR hMonitor);

BEGIN_COM_MAP(CPSLMonitor)
   COM_INTERFACE_ENTRY(IPSLMonitor)
   COM_INTERFACE_ENTRY(IDispatch)
   COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()

   DECLARE_PROTECT_FINAL_CONSTRUCT()
   HRESULT FinalConstruct();
   void FinalRelease();

////////////////////////////
// Interface Implementation:
////////////////////////////

   STDMETHOD(get_IsPrimary)(VARIANT_BOOL * pValue);
   STDMETHOD(get_DeviceName)(BSTR * pValue);
   STDMETHOD(get_MonitorName)(BSTR * pValue);
   STDMETHOD(get_Bounds)(IPSLRect ** ppValue);
   STDMETHOD(get_WorkArea)(IPSLRect ** ppValue);
   STDMETHOD(get_PhysicalSize)(IPSLSize ** ppValue);
   STDMETHOD(get_RefreshRate)(short * pValue);
   STDMETHOD(get_ColorRes)(short * pValue);

private:

   bool m_bPrimary;
   _bstr_t m_DeviceName;
   _bstr_t m_MonitorName;
   short m_RefreshRate;
   short m_ColorRes;

   CComObject<CPSLRect> * m_pBounds;
   CComObject<CPSLRect> * m_pWorkArea;
   CComObject<CPSLSize> * m_pPhysicalSize;
};

Top