CreditsCtrl.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:6k
源码类别:

CA认证

开发平台:

Visual C++

  1. #if !defined(AFX_CREDITSCTRL_H__0D506182_3886_4D4C_A609_DA8914C17718__INCLUDED_)
  2. #define AFX_CREDITSCTRL_H__0D506182_3886_4D4C_A609_DA8914C17718__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // CreditsCtrl.h : header file
  7. //
  8. #include <afxtempl.h>
  9. /////////////////////////////////////////////////////////////////////////////
  10. // CCreditsCtrl window
  11. class CCreditsCtrl : public CWnd
  12. {
  13. // Construction
  14. public:
  15. CCreditsCtrl();
  16. virtual ~CCreditsCtrl();
  17. BOOL Create(DWORD dwExStyle, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0, UINT nDefaultCursorID = 0, UINT nLinkCursorID = 0);
  18. BOOL Create(DWORD dwExStyle, DWORD dwStyle, UINT nPlaceholderID, CWnd* pParentWnd, UINT nID = 0, UINT nDefaultCursorID = 0, UINT nLinkCursorID = 0);
  19. // Attributes
  20. public:
  21. static LPCTSTR m_lpszClassName;
  22. // local structures used during parsing
  23. typedef struct
  24. {
  25. TCHAR szName[MAX_PATH];
  26. int nSize;
  27. int bBold;
  28. int bItalic;
  29. int bUnderline;
  30. int bStrikeout;
  31. COLORREF crColor;
  32. COLORREF crBkColor;
  33. } font_attribs;
  34. typedef struct
  35. {
  36. int nAlign; // 0: left, 1: center, 2: right
  37. int nVAlign; // 0: top, 1: middle, 2: bottom
  38. int nMaxWidth;
  39. int nMaxHeight;
  40. } general_attribs;
  41. typedef struct
  42. {
  43. RECT rcRect;
  44. int nVAlign;
  45. CString sLink;
  46. } line_rect;
  47. // Operations
  48. public:
  49. // Overrides
  50. // ClassWizard generated virtual function overrides
  51. //{{AFX_VIRTUAL(CCreditsCtrl)
  52. //}}AFX_VIRTUAL
  53. // Implementation
  54. public:
  55. ////// Stuff that can be customized to fit your neeeds /////////////////
  56. BOOL m_bCanScroll; // TRUE (default) if the user is allowed to manually scroll through the control using drag & drop
  57. int m_nCurBitmapOffset; // normally you shouldn't touch this one
  58. int m_nTimerSpeed; // default: 40
  59. HCURSOR m_hDefaultCursor; // normally you would want to set this one in Create()
  60. HCURSOR m_hLinkCursor; // normally you would want to set this one in Create()
  61. CString m_sData; // use SetDataString() or FormatDataString()
  62. void(*m_pBackgroundPaint)(CDC*,RECT,BOOL,DWORD); // background drawing function
  63. DWORD m_dwBackgroundPaintLParam; // lParam to m_pBackgroundPaint.. by default this is the background color
  64. COLORREF m_crInternalTransparentColor; // normally you would use a color close or equal to the background color
  65. CArray<CRect,CRect&> m_HotRects;
  66. CArray<CString,CString&> m_HotRectActions;
  67. ////// Functions you always should use /////////////////////////////////
  68. // sets data string...
  69. CString SetDataString(LPCTSTR lpszNewString);
  70. CString SetDataString(UINT nStringResourceID);
  71. CString FormatDataString(LPCTSTR lpszFormat, ...);
  72. CString FormatDataString(UINT nFormatID, ...);
  73. // returns data string
  74. CString GetDataString();
  75. ////// Functions you might want to use /////////////////////////////////
  76. // returns the index if the m_HotRects array the point matches or -1 for no hit
  77. int HitTest(CPoint pt);
  78. // sets the background color used by the default background drawer function
  79. void SetDefaultBkColor(COLORREF crColor);
  80. // parses the m_sData string, creates m_bmpNormal & m_bmpHot and fill the m_HotRects & m_HotRectActions arrays
  81. void Initialize();
  82. // set link cursor to a hand icon
  83. void SetDefaultLinkCursor();
  84. ////// Functions you probably won't need ///////////////////////////////
  85. // helpers for parsing
  86. void Parse_AppendText(CDC *pDC, CDC *pHoverDC, int *pnCurHPos, int *pnCurVPos, int *pnCurHeight, CArray<line_rect,line_rect&>* parcLineRects, general_attribs *pga, font_attribs *pfa, CString sText, CString sCurLink, font_attribs link);
  87. void Parse_AppendBitmap(CDC *pDC, CDC *pHoverDC, int *pnCurHPos, int *pnCurVPos, int *pnCurHeight, CArray<line_rect,line_rect&>* parcLineRects, general_attribs *pga, CBitmap *pBitmap, COLORREF crBorder, int nBorder, CString sCurLink, font_attribs link);
  88. void Parse_AppendElement(CDC *pDC, CDC *pHoverDC, int *pnCurHPos, int *pnCurVPos, int *pnCurHeight, CArray<line_rect,line_rect&>* parcLineRects, general_attribs *pga, int nElementWidth, int nElementHeight, CDC *pElementDC, CDC *pHoverElementDC, CString sCurLink);
  89. void Parse_VAlignLine(CDC *pDestDC, CDC *pHoverDestDC, CDC *pLineDC, CDC *pHoverLineDC, int nCurHPos, int nCurVPos, int nCurHeight, CArray<line_rect,line_rect&>* parcLineRects, general_attribs *pga);
  90. BOOL StringToColor(CString string, COLORREF &cr);
  91. // default background drawer
  92. static void DrawBackground(CDC *pDC, RECT rect, BOOL bAnimate, DWORD lParam);
  93. // drawing routines
  94. void TransparentBlt(CDC *pSrcDC, CDC* pDestDC,COLORREF crTrans,const CRect& rcDest,const CRect& rcSrc);
  95. void DrawTransparentBitmap(CBitmap *pBitmap, CDC* pDC,COLORREF crTrans,const CRect& rcDest,const CRect& rcSrc);
  96. ////// Stuff you really shouldn't touch ////////////////////////////////
  97. protected:
  98. // Internally used variables
  99. CRect m_rcClient;
  100. CRect m_rcHotRect;
  101. BOOL m_bIsScrolling;
  102. int m_nScrollStart;
  103. int m_nBitmapHeight;
  104. CBitmap m_bmpHot;
  105. CBitmap m_bmpNormal;
  106. // Generated message map functions
  107. protected:
  108. //{{AFX_MSG(CCreditsCtrl)
  109. afx_msg void OnPaint();
  110. afx_msg void OnTimer(UINT nIDEvent);
  111. afx_msg void OnSize(UINT nType, int cx, int cy);
  112. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  113. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  114. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  115. //}}AFX_MSG
  116. DECLARE_MESSAGE_MAP()
  117. };
  118. /////////////////////////////////////////////////////////////////////////////
  119. //{{AFX_INSERT_LOCATION}}
  120. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  121. #endif // !defined(AFX_CREDITSCTRL_H__0D506182_3886_4D4C_A609_DA8914C17718__INCLUDED_)