www.pudn.com > XAnalogClock_demo.zip > XAnalogClock.h
// XAnalogClock.h Version 1.0
//
// Author: Hans Dietrich
// hdietrich@gmail.com
//
// This software is released into the public domain. You are free to use
// it in any way you like, except that you may not sell this source code.
//
// This software is provided "as is" with no expressed or implied warranty.
// I accept no liability for any damage or loss of business that this
// software may cause.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef XANALOGCLOCK_H
#define XANALOGCLOCK_H
#include "CDCBuffer.h"
/////////////////////////////////////////////////////////////////////////////
// CXAnalogClock window
class CXAnalogClock : public CStatic
{
// Construction
public:
CXAnalogClock();
virtual ~CXAnalogClock();
// Attributes
public:
CTime GetTime() { return m_time; }
CSize GetWindowSize();
BOOL IsClockRunning() { return !m_bStopped; }
void SetBackgroundColor(COLORREF rgb) { m_rgbBackground = rgb; }
void SetBitmaps(UINT nFaceBitmapId, UINT nDateBitmapId)
{
if (m_cdcClockFace.IsValid())
m_cdcClockFace.DeleteObject();
if (m_cdcDate.IsValid())
m_cdcDate.DeleteObject();
if (m_cdcPrevious.IsValid())
m_cdcPrevious.DeleteObject();
m_nFaceBitmapId = nFaceBitmapId;
m_nDateBitmapId = nDateBitmapId;
}
void SetGmtAdjust(float dAdjust) { m_dGmtAdjust = dAdjust; }
void SetHourHandColor(COLORREF rgb) { m_rgbHourHand = rgb; }
void SetMinuteHandColor(COLORREF rgb) { m_rgbMinuteHand = rgb; }
void SetSecondHandColor(COLORREF rgb) { m_rgbSecondHand = rgb; }
void SetTime(CTime& t) { m_time = t; }
void SetTransparentColor(COLORREF rgb) { m_rgbTransparent = rgb; }
void ShowDate(BOOL bShowDate) { m_bShowDate = bShowDate; }
void ShowSecondHand(BOOL bShowSecondHand) { m_bShowSecondHand = bShowSecondHand; }
void UseSystemTime(BOOL bUseSystemTime) { m_bUseSystemTime = bUseSystemTime; }
// Operations
public:
void Run();
void Stop();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CXAnalogClock)
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
protected:
virtual void PreSubclassWindow();
//}}AFX_VIRTUAL
// Implementation
protected:
int GetDay();
int GetHour();
int GetMinute();
int GetSecond();
float ConvertToDegrees(float dTime);
void LoadBitmaps(CDC *pDC);
void PaintDate(CDC *pDC);
void PaintMinuteAndHourHands(CDC *pDC);
void PaintSecondHand(CDC *pDC);
CDCBuffer m_cdcClockFace;
CDCBuffer m_cdcDate;
CDCBuffer m_cdcPrevious;
int m_nPrevMinute;
BOOL m_bShowDate;
BOOL m_bShowSecondHand;
BOOL m_bUseSystemTime;
BOOL m_bStopped;
float m_dGmtAdjust;
CTime m_time;
COLORREF m_rgbBackground;
COLORREF m_rgbTransparent;
COLORREF m_rgbSecondHand;
COLORREF m_rgbMinuteHand;
COLORREF m_rgbHourHand;
UINT m_nFaceBitmapId;
UINT m_nDateBitmapId;
// Generated message map functions
protected:
//{{AFX_MSG(CXAnalogClock)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnDestroy();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif //XANALOGCLOCK_H