home *** CD-ROM | disk | FTP | other *** search
/ Windows Graphics Programming / Feng_Yuan_Win32_GDI_DirectX.iso / Samples / include / Pen.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-11  |  2.0 KB  |  81 lines

  1. #pragma once
  2.  
  3. //-----------------------------------------------------------------------------------//
  4. //              Windows Graphics Programming: Win32 GDI and DirectDraw               //
  5. //                             ISBN  0-13-086985-6                                   //
  6. //                                                                                   //
  7. //  Written            by  Yuan, Feng                             www.fengyuan.com   //
  8. //  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
  9. //  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
  10. //                                                                                   //
  11. //  FileName   : pen.h                                                                 //
  12. //  Description: GDI pen object wrapper                                              //
  13. //  Version    : 1.00.000, May 31, 2000                                              //
  14. //-----------------------------------------------------------------------------------//
  15.  
  16. // Wrapper for GDI object selection
  17. class KSelect
  18. {
  19.     HGDIOBJ m_hOld;
  20.     HDC        m_hDC;
  21.  
  22. public:
  23.     
  24.     void Select(HDC hDC, HGDIOBJ hObject)
  25.     {
  26.         if ( hDC )
  27.         {
  28.             m_hDC  = hDC;
  29.             m_hOld = SelectObject(hDC, hObject);
  30.         }
  31.         else
  32.         {
  33.             m_hDC  = NULL;
  34.             m_hOld = NULL;
  35.         }
  36.     }
  37.  
  38.     void UnSelect(void)
  39.     {
  40.         if ( m_hDC )
  41.         {
  42.             SelectObject(m_hDC, m_hOld);
  43.             m_hDC  = NULL;
  44.             m_hOld = NULL;
  45.         }
  46.     }
  47.  
  48. };
  49.  
  50.  
  51. class KPen : public KSelect
  52. {
  53. public:
  54.     HPEN    m_hPen;
  55.  
  56.     KPen(int style, int width, COLORREF color, HDC hDC=NULL)
  57.     {
  58.         m_hPen = CreatePen(style, width, color);
  59.         Select(hDC);
  60.     }
  61.  
  62.     KPen(int style, int width, COLORREF color, int count, DWORD * gap, HDC hDC=NULL)
  63.     {
  64.         LOGBRUSH logbrush = { BS_SOLID, color, 0 };
  65.  
  66.         m_hPen = ExtCreatePen(style, width, & logbrush, count, gap);
  67.         Select(hDC);
  68.     }
  69.  
  70.     void Select(HDC hDC)
  71.     {
  72.         KSelect::Select(hDC, m_hPen);
  73.     }
  74.  
  75.     ~KPen()
  76.     {
  77.         UnSelect();
  78.         DeleteObject(m_hPen);
  79.     }
  80. };
  81.