home *** CD-ROM | disk | FTP | other *** search
- // RelojCtl.cpp : Implementation of the CRelojCtrl ActiveX Control class.
-
- #include "stdafx.h"
- #include "reloj.h"
- #include "RelojCtl.h"
- #include "RelojPpg.h"
-
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
-
- IMPLEMENT_DYNCREATE(CRelojCtrl, COleControl)
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Message map
-
- BEGIN_MESSAGE_MAP(CRelojCtrl, COleControl)
- //{{AFX_MSG_MAP(CRelojCtrl)
- ON_WM_CREATE()
- ON_WM_TIMER()
- //}}AFX_MSG_MAP
- ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
- END_MESSAGE_MAP()
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Dispatch map
-
- BEGIN_DISPATCH_MAP(CRelojCtrl, COleControl)
- //{{AFX_DISPATCH_MAP(CRelojCtrl)
- DISP_PROPERTY_NOTIFY(CRelojCtrl, "IntervaloActualizacion", m_intervaloActualizacion, OnIntervaloActualizacionChanged, VT_I4)
- DISP_FUNCTION(CRelojCtrl, "Beep", Beep, VT_EMPTY, VTS_NONE)
- DISP_STOCKFUNC_REFRESH()
- DISP_STOCKPROP_BACKCOLOR()
- DISP_STOCKPROP_FORECOLOR()
- //}}AFX_DISPATCH_MAP
- DISP_FUNCTION_ID(CRelojCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
- END_DISPATCH_MAP()
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Event map
-
- BEGIN_EVENT_MAP(CRelojCtrl, COleControl)
- //{{AFX_EVENT_MAP(CRelojCtrl)
- EVENT_CUSTOM("NuevoMinuto", FireNuevoMinuto, VTS_NONE)
- EVENT_STOCK_CLICK()
- EVENT_STOCK_DBLCLICK()
- //}}AFX_EVENT_MAP
- END_EVENT_MAP()
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Property pages
-
- // TODO: Add more property pages as needed. Remember to increase the count!
- BEGIN_PROPPAGEIDS(CRelojCtrl, 2)
- PROPPAGEID(CRelojPropPage::guid)
- PROPPAGEID(CLSID_CColorPropPage)
- END_PROPPAGEIDS(CRelojCtrl)
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Initialize class factory and guid
-
- IMPLEMENT_OLECREATE_EX(CRelojCtrl, "RELOJ.RelojCtrl.1",
- 0x9c6022a4, 0xcb07, 0x11d0, 0xaf, 0x87, 0, 0x40, 0x33, 0xca, 0x77, 0xbd)
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Type library ID and version
-
- IMPLEMENT_OLETYPELIB(CRelojCtrl, _tlid, _wVerMajor, _wVerMinor)
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Interface IDs
-
- const IID BASED_CODE IID_DReloj =
- { 0x1f9998eb, 0x82f, 0x11d1, { 0xaf, 0x87, 0, 0x40, 0x33, 0xca, 0x77, 0xbd } };
- const IID BASED_CODE IID_DRelojEvents =
- { 0x1f9998ec, 0x82f, 0x11d1, { 0xaf, 0x87, 0, 0x40, 0x33, 0xca, 0x77, 0xbd } };
-
-
- /////////////////////////////////////////////////////////////////////////////
- // Control type information
-
- static const DWORD BASED_CODE _dwRelojOleMisc =
- OLEMISC_ACTIVATEWHENVISIBLE |
- OLEMISC_SETCLIENTSITEFIRST |
- OLEMISC_INSIDEOUT |
- OLEMISC_CANTLINKINSIDE |
- OLEMISC_RECOMPOSEONRESIZE;
-
- IMPLEMENT_OLECTLTYPE(CRelojCtrl, IDS_RELOJ, _dwRelojOleMisc)
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::CRelojCtrlFactory::UpdateRegistry -
- // Adds or removes system registry entries for CRelojCtrl
-
- BOOL CRelojCtrl::CRelojCtrlFactory::UpdateRegistry(BOOL bRegister)
- {
- // TODO: Verify that your control follows apartment-model threading rules.
- // Refer to MFC TechNote 64 for more information.
- // If your control does not conform to the apartment-model rules, then
- // you must modify the code below, changing the 6th parameter from
- // afxRegApartmentThreading to 0.
-
- if (bRegister)
- return AfxOleRegisterControlClass(
- AfxGetInstanceHandle(),
- m_clsid,
- m_lpszProgID,
- IDS_RELOJ,
- IDB_RELOJ,
- afxRegApartmentThreading,
- _dwRelojOleMisc,
- _tlid,
- _wVerMajor,
- _wVerMinor);
- else
- return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::CRelojCtrl - Constructor
-
- CRelojCtrl::CRelojCtrl()
- {
- InitializeIIDs(&IID_DReloj, &IID_DRelojEvents);
- SetInitialSize(100,15);
- // TODO: Initialize your control's instance data here.
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::~CRelojCtrl - Destructor
-
- CRelojCtrl::~CRelojCtrl()
- {
- // TODO: Cleanup your control's instance data here.
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::OnDraw - Drawing function
-
- void CRelojCtrl::OnDraw(
- CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
- {
- // TODO: Replace the following code with your own drawing code.
- // pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
- // pdc->Ellipse(rcBounds);
-
- pdc->SetTextColor(TranslateColor(GetForeColor()));
- pdc->SetBkMode(TRANSPARENT);
- CBrush bkBrush(TranslateColor(GetBackColor()));
- pdc->FillRect(rcBounds, &bkBrush);
-
-
- CTime hora = CTime::GetCurrentTime();
-
- CString HoraActual = hora.Format("%H : %M : %S");
- pdc->ExtTextOut(rcBounds.left, rcBounds.top, ETO_CLIPPED, rcBounds, HoraActual, HoraActual.GetLength(), NULL);
-
- // Obtener la hora actual
-
- if( hora.GetSecond() == 0 )
- {
- FireNuevoMinuto();
- }
-
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::DoPropExchange - Persistence support
-
- void CRelojCtrl::DoPropExchange(CPropExchange* pPX)
- {
- ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
- COleControl::DoPropExchange(pPX);
-
- // TODO: Call PX_ functions for each persistent custom property.
- PX_Long(pPX, _T("IntervaloActualizacion"),m_intervaloActualizacion, 1000);
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::OnResetState - Reset control to default state
-
- void CRelojCtrl::OnResetState()
- {
- COleControl::OnResetState(); // Resets defaults found in DoPropExchange
-
- // TODO: Reset any other control state here.
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl::AboutBox - Display an "About" box to the user
-
- void CRelojCtrl::AboutBox()
- {
- CDialog dlgAbout(IDD_ABOUTBOX_RELOJ);
- dlgAbout.DoModal();
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CRelojCtrl message handlers
-
- int CRelojCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (COleControl::OnCreate(lpCreateStruct) == -1)
- return -1;
-
-
- SetTimer (ID_TIMER, (UINT) m_intervaloActualizacion, NULL);
-
- return 0;
- }
-
- void CRelojCtrl::OnTimer(UINT nIDEvent)
- {
- InvalidateControl();
-
- COleControl::OnTimer(nIDEvent);
- }
-
- void CRelojCtrl::OnIntervaloActualizacionChanged()
- {
- // TODO: Add notification handler code
- if( m_intervaloActualizacion < 0 )
- {
- MessageBox("S≤lo se aceptan valores positivos");
- m_intervaloActualizacion = 1000;
- }
- SetTimer(ID_TIMER, (UINT) m_intervaloActualizacion, NULL);
-
-
- SetModifiedFlag();
- }
-
- void CRelojCtrl::Beep()
- {
- MessageBeep((WORD)-1);
- }
-