www.pudn.com > rsdagl.rar > credits.h
#ifndef __CREDITS_H_INCLUDED__
#define __CREDITS_H_INCLUDED__
#if _MSC_VER >= 1000
#pragma once
#endif
class CCredits : public CStatic
{
DECLARE_DYNAMIC(CCredits)
public:
CCredits();
virtual ~CCredits();
public:
static enum creditspeed {SPEED_SLOW = 70, SPEED_MED = 40, SPEED_FAST = 10};
private:
COLORREF m_crBackground;
COLORREF m_crHeading1;
COLORREF m_crHeading2;
COLORREF m_crHeading3;
COLORREF m_crNormal;
enum creditspeed m_nSpeed;
// values that are used internally
int m_nClip; // amount of current line scrolled
int m_nCurrentHeight; // height of current item
UINT m_nTimerID; // the timer
CString m_strCurrent; // current string
int m_nNextIndex; // current index into m_strData
CStringArray m_strData; // all the data
CRect m_rcClient; // my client rect (store for speed)
bool m_bBitmap;
int m_nEscapeChar;
CFont m_fntArial;
COLORREF m_crColor;
CBitmap m_bmpCurrent;
int m_nBmpWidth;
// constants used internally
enum
{
DISPLAY_TIMER_ID = 150, // timer id
SCROLLAMOUNT = -1 // amount to scroll at each timer
};
enum
{
CH_HEADING1 = '\n', // top level title
CH_HEADING2 = '\r', // top level group
CH_HEADING3 = '\t', // group title
CH_NORMAL = '\f', // normal text
CH_BITMAP = '\b' // bitmap
};
enum
{
HT_HEADING1 = 21, // height of heading 1 text
HT_HEADING2 = 19, // height of heading 2 text
HT_HEADING3 = 17, // height of heading 3 text
HT_NORMAL = 15 // height of normal text
};
public:
enum creditspeed SetSpeed (enum creditspeed nSpeed);
COLORREF GetColorBk () const { return m_crBackground; }
COLORREF GetColorH1 () const { return m_crHeading1; }
COLORREF GetColorH2 () const { return m_crHeading2; }
COLORREF GetColorH3 () const { return m_crHeading3; }
COLORREF GetColorText () const { return m_crNormal; }
COLORREF SetColorBk (COLORREF crNew);
COLORREF SetColorH1 (COLORREF crNew);
COLORREF SetColorH2 (COLORREF crNew);
COLORREF SetColorH3 (COLORREF crNew);
COLORREF SetColorText (COLORREF crNew);
void ResetContent ()
{
m_strData.RemoveAll();
if (m_nTimerID > 0)
{
KillTimer(m_nTimerID);
m_nTimerID = 0;
}
if (m_hWnd && IsWindowVisible())
Invalidate();
}
int AddHeading1 (LPCTSTR text) {return AddData(text, CH_HEADING1);}
int AddHeading2 (LPCTSTR text) {return AddData(text, CH_HEADING2);}
int AddHeading3 (LPCTSTR text) {return AddData(text, CH_HEADING3);}
int AddNormalText (LPCTSTR text) { return AddData(text, CH_NORMAL); }
int AddBitmap (LPCTSTR lpszBitmap) { return AddData(lpszBitmap, CH_BITMAP); }
int AddBitmap (UINT nBitmapID)
{
CString str;
str.Format(_T("__RC_ID__%d"), nBitmapID);
return AddData(str, CH_BITMAP);
}
int AddBlankLine () { return AddData(_T(""), _TCHAR('\0'));}
protected:
void Initialize ();
int AddData (LPCTSTR text, TCHAR ch)
{
CString str = text;
str += ch;
return m_strData.Add((LPCTSTR)str);
}
void LoadNextLine();
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnDestroy();
DECLARE_MESSAGE_MAP()
};
#endif