Draw.h
上传用户:ckg1000
上传日期:2013-01-26
资源大小:630k
文件大小:6k
源码类别:

CAD

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Draw.h : header file
  4. //
  5. ///////////////////////////////////////////////////////////////////////////////
  6. #pragma once
  7. ///////////////////////////////////////////////////////////////////////////////
  8. typedef DWORD HLSCOLOR;
  9. #define HLS(h,l,s) ((HLSCOLOR)(((BYTE)(h)|((WORD)((BYTE)(l))<<8))|(((DWORD)(BYTE)(s))<<16)))
  10. ///////////////////////////////////////////////////////////////////////////////
  11. #define HLS_H(hls) ((BYTE)(hls))
  12. #define HLS_L(hls) ((BYTE)(((WORD)(hls)) >> 8))
  13. #define HLS_S(hls) ((BYTE)((hls)>>16))
  14. ///////////////////////////////////////////////////////////////////////////////
  15. HLSCOLOR RGB2HLS (COLORREF rgb);
  16. COLORREF HLS2RGB (HLSCOLOR hls);
  17. ///////////////////////////////////////////////////////////////////////////////
  18. // Performs some modifications on the specified color : luminance and saturation
  19. COLORREF HLS_TRANSFORM (COLORREF rgb, int percent_L, int percent_S);
  20. ///////////////////////////////////////////////////////////////////////////////
  21. HBITMAP WINAPI GetScreenBitmap (LPCRECT pRect);
  22. ///////////////////////////////////////////////////////////////////////////////
  23. ///////////////////////////////////////////////////////////////////////////////
  24. class CBufferDC : public CDC
  25. {
  26.     HDC     m_hDestDC;
  27.     CBitmap m_bitmap;     // Bitmap in Memory DC
  28.     CRect   m_rect;
  29.     HGDIOBJ m_hOldBitmap; // Previous Bitmap
  30. public:
  31.     CBufferDC (HDC hDestDC, const CRect& rcPaint = CRect(0,0,0,0));
  32.    ~CBufferDC ();
  33. };
  34. ///////////////////////////////////////////////////////////////////////////////
  35. ///////////////////////////////////////////////////////////////////////////////
  36. class CPenDC
  37. {
  38. protected:
  39.     CPen m_pen;
  40.     HDC m_hDC;
  41.     HPEN m_hOldPen;
  42. public:
  43.     CPenDC (HDC hDC, COLORREF crColor = CLR_NONE);
  44.    ~CPenDC ();
  45.     void Color (COLORREF crColor);
  46.     COLORREF Color () const;
  47. };
  48. ///////////////////////////////////////////////////////////////////////////////
  49. ///////////////////////////////////////////////////////////////////////////////
  50. class CBrushDC
  51. {
  52. protected:
  53.     CBrush m_brush;
  54.     HDC m_hDC;
  55.     HBRUSH m_hOldBrush;
  56. public:
  57.     CBrushDC (HDC hDC, COLORREF crColor = CLR_NONE);
  58.    ~CBrushDC ();
  59.     void Color (COLORREF crColor);
  60.     COLORREF Color () const;
  61. };
  62. ///////////////////////////////////////////////////////////////////////////////
  63. ///////////////////////////////////////////////////////////////////////////////
  64. class CFontDC
  65. {
  66. protected:
  67.     HFONT m_hFont;
  68.     HDC m_hDC;
  69.     HFONT m_hDefFont;
  70.     COLORREF m_crTextOld;
  71. public:
  72.     CFontDC (HDC hDC, LPCTSTR sFaceName, COLORREF crText = CLR_DEFAULT);
  73.     CFontDC (HDC hDC, BYTE nStockFont, COLORREF crText = CLR_DEFAULT);
  74.     CFontDC (HDC hDC, HFONT hFont, COLORREF crText = CLR_DEFAULT);
  75.    ~CFontDC ();
  76.     const CFontDC& operator = (LPCTSTR sFaceName);
  77.     const CFontDC& operator = (BYTE nStockFont);
  78.     const CFontDC& operator = (HFONT hFont);
  79.     const CFontDC& operator = (COLORREF crText);
  80.     operator LPCTSTR ();
  81.     operator COLORREF ();
  82. };
  83. ///////////////////////////////////////////////////////////////////////////////
  84. ///////////////////////////////////////////////////////////////////////////////
  85. class CBoldDC
  86. {
  87. protected:
  88.     CFont m_fontBold;
  89.     HDC m_hDC;
  90.     HFONT m_hDefFont;
  91. public:
  92.     CBoldDC (HDC hDC, bool bBold);
  93.    ~CBoldDC ();
  94. };
  95. ///////////////////////////////////////////////////////////////////////////////
  96. ///////////////////////////////////////////////////////////////////////////////
  97. // CDrawButton types
  98. //
  99. #define DB_EMPTY       0x0000 // Empty button
  100. #define DB_UP          0x0001 // Up arrow
  101. #define DB_DOWN        0x0002 // Down arrow
  102. #define DB_LEFT        0x0003 // Left arrow
  103. #define DB_RIGHT       0x0004 // Right arrow
  104. #define DB_UPDOWN      0x0005 // Up and down arrows
  105. #define DB_LEFTRIGHT   0x0006 // Left and right arrow
  106. #define DB_3POINTS     0x0007 // Three points (assistant, more, ...)
  107. #define DB_CROSS       0x0008 // Cross like small close button
  108. // CDrawButton styles
  109. #define DB_ENABLED     0x0000 // Enabled button(s)   [Default]
  110. #define DB_DISABLED    0x0100 // Disabled button(s)
  111. #define DB_BORDER      0x0200 // Buttons have border on left and top
  112. #define DB_WINDOWDC    0x0400 // Positions are in screen coordinates
  113. #define DB_FLAT        0x0800 // Office 2000 look & feel
  114. #define DB_PRESSED     0x1000 // First button is pressed
  115. #define DB_PRESSED2    0x2000 // Second button is pressed (if exists)
  116. #define DB_OVER        0x4000 // Mouse is over button
  117. #define DB_TRANSPARENT 0x8000 // Don't draw background (flat button)
  118. #define DB_DEFAULT DB_EMPTY
  119. ///////////////////////////////////////////////////////////////////////////////
  120. class CDrawButton
  121. {
  122. protected:
  123.     DWORD m_wStyle;
  124.     CRect m_Rect;
  125. public:
  126.     CDrawButton (DWORD wStyle = DB_EMPTY);
  127.     CDrawButton (DWORD wStyle, LPCRECT pRect);
  128.     virtual void Draw (CDC* pDC, DWORD wStyle = DB_DEFAULT) const;
  129.     DWORD Click (CWnd* pWnd, CPoint pt, UINT nIDRepeat = 0) const;
  130.     void SetRect (LPCRECT pRect);
  131.     bool PtInRect (POINT pt) const;
  132.     void CheckForMouseOver (CWnd* pWnd, CPoint pt);
  133. };
  134. ///////////////////////////////////////////////////////////////////////////////
  135. inline CDrawButton::CDrawButton (DWORD wStyle) :
  136.     m_wStyle (wStyle), m_Rect (0, 0, 0, 0)
  137. {
  138. }
  139. ///////////////////////////////////////////////////////////////////////////////
  140. inline CDrawButton::CDrawButton (DWORD wStyle, LPCRECT pRect) :
  141.     m_wStyle (wStyle), m_Rect (pRect)
  142. {
  143. }
  144. ///////////////////////////////////////////////////////////////////////////////
  145. inline void CDrawButton::SetRect (LPCRECT pRect)
  146. {
  147.     m_Rect = pRect;
  148. }
  149. ///////////////////////////////////////////////////////////////////////////////
  150. inline bool CDrawButton::PtInRect (POINT pt) const
  151. {
  152.     return m_Rect.PtInRect (pt) != 0;
  153. }