Timestamper Class Extension
TimestampPropPage.h
// Copyright 2006 ESRI
//                 
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
// 
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
// 
// See the use restrictions.
// TimestampPropPage.h : Declaration of the CTimestampPropPage

#ifndef __TIMESTAMPPROPPAGE_H_
#define __TIMESTAMPPROPPAGE_H_

#include "resource.h"       // main symbols
#include "TimestampClassExtension.h"

//AtlControls.h provide thin classes for controls
// and comes with the Microsoft ATL sample 'ATLCON'
#include "AtlControls.h"

_COM_SMARTPTR_TYPEDEF(ITimestampClassExtension, __uuidof(ITimestampClassExtension));

EXTERN_C const CLSID CLSID_TimestampPropPage;

/////////////////////////////////////////////////////////////////////////////
// CTimestampPropPage
class ATL_NO_VTABLE CTimestampPropPage :
  public CComObjectRootEx<CComSingleThreadModel>,
  public CComCoClass<CTimestampPropPage, &CLSID_TimestampPropPage>,
  public IPropertyPageImpl<CTimestampPropPage>,
  public IPropertyPageContext,
  public CDialogImpl<CTimestampPropPage>
{
public:
  CTimestampPropPage() 
  {
    m_dwTitleID = IDS_TITLETimestampPropPage;
    m_dwHelpFileID = IDS_HELPFILETimestampPropPage;
    m_dwDocStringID = IDS_DOCSTRINGTimestampPropPage;
  }

  enum {IDD = IDD_TIMESTAMPPROPPAGE};

DECLARE_REGISTRY_RESOURCEID(IDR_TIMESTAMPPROPPAGE)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_CATEGORY_MAP(CTimestampPropPage)
  IMPLEMENTED_CATEGORY(__uuidof(CATID_TablePropertyPages))
  IMPLEMENTED_CATEGORY(__uuidof(CATID_FeatureClassPropertyPages))
END_CATEGORY_MAP()

BEGIN_COM_MAP(CTimestampPropPage) 
  COM_INTERFACE_ENTRY(IPropertyPage)
  COM_INTERFACE_ENTRY(IPropertyPageContext)
END_COM_MAP()

BEGIN_MSG_MAP(CTimestampPropPage)
  CHAIN_MSG_MAP(IPropertyPageImpl<CTimestampPropPage>)
  COMMAND_HANDLER(IDC_COMBO_CRE, CBN_EDITUPDATE, OnComboChange)
  COMMAND_HANDLER(IDC_COMBO_CRE, CBN_SELCHANGE,  OnComboChange)
  COMMAND_HANDLER(IDC_COMBO_MOD, CBN_EDITUPDATE, OnComboChange)
  COMMAND_HANDLER(IDC_COMBO_MOD, CBN_SELCHANGE,  OnComboChange)
  COMMAND_HANDLER(IDC_COMBO_USR, CBN_EDITUPDATE, OnComboChange)
  COMMAND_HANDLER(IDC_COMBO_USR, CBN_SELCHANGE,  OnComboChange)
END_MSG_MAP()


// IPropertyPage
  STDMETHOD(Apply)(void);
  STDMETHOD(Show)(UINT nCmdShow);

// IPropertyPageContext
  STDMETHOD(get_Priority)(LONG * Priority);
  STDMETHOD(Applies)(VARIANT unkArray, VARIANT_BOOL * Applies);
  STDMETHOD(CreateCompatibleObject)(VARIANT kind, VARIANT * pNewObject);
  STDMETHOD(QueryObject)(VARIANT theObject);
  STDMETHOD(GetHelpFile)(LONG controlID, BSTR * HelpFile);
  STDMETHOD(GetHelpId)(LONG controlID, LONG * helpID);
  STDMETHOD(Cancel)();
private:
  LRESULT OnComboChange(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);

  IObjectClassPtr m_ipObjectClass;
  ATLControls::CComboBox m_cboCre;
  ATLControls::CComboBox m_cboMod;
  ATLControls::CComboBox m_cboUsr;
};

#endif //__TIMESTAMPPROPPAGE_H_