| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/msw/private/dc.h
 
- // Purpose:     private wxMSW helpers for working with HDCs
 
- // Author:      Vadim Zeitlin
 
- // Created:     2009-06-16 (extracted from src/msw/dc.cpp)
 
- // Copyright:   (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _MSW_PRIVATE_DC_H_
 
- #define _MSW_PRIVATE_DC_H_
 
- #include "wx/msw/dc.h"
 
- #include "wx/msw/wrapwin.h"
 
- namespace wxMSWImpl
 
- {
 
- // various classes to change some DC property temporarily
 
- // text background and foreground colours
 
- class wxTextColoursChanger
 
- {
 
- public:
 
-     wxTextColoursChanger(HDC hdc, const wxMSWDCImpl& dc)
 
-         : m_hdc(hdc)
 
-     {
 
-         Change(dc.GetTextForeground(), dc.GetTextBackground());
 
-     }
 
-     wxTextColoursChanger(HDC hdc, const wxColour& colFg, const wxColour& colBg)
 
-         : m_hdc(hdc)
 
-     {
 
-         Change(colFg, colBg);
 
-     }
 
-     wxTextColoursChanger(HDC hdc, COLORREF colFg, COLORREF colBg)
 
-         : m_hdc(hdc)
 
-     {
 
-         Change(colFg, colBg);
 
-     }
 
-     ~wxTextColoursChanger()
 
-     {
 
-         if ( m_oldColFg != CLR_INVALID )
 
-             ::SetTextColor(m_hdc, m_oldColFg);
 
-         if ( m_oldColBg != CLR_INVALID )
 
-             ::SetBkColor(m_hdc, m_oldColBg);
 
-     }
 
- protected:
 
-     // this ctor doesn't change mode immediately, call Change() later to do it
 
-     // only if needed
 
-     wxTextColoursChanger(HDC hdc)
 
-         : m_hdc(hdc)
 
-     {
 
-         m_oldColFg =
 
-         m_oldColBg = CLR_INVALID;
 
-     }
 
-     void Change(const wxColour& colFg, const wxColour& colBg)
 
-     {
 
-         Change(colFg.IsOk() ? colFg.GetPixel() : CLR_INVALID,
 
-                colBg.IsOk() ? colBg.GetPixel() : CLR_INVALID);
 
-     }
 
-     void Change(COLORREF colFg, COLORREF colBg)
 
-     {
 
-         if ( colFg != CLR_INVALID )
 
-         {
 
-             m_oldColFg = ::SetTextColor(m_hdc, colFg);
 
-             if ( m_oldColFg == CLR_INVALID )
 
-             {
 
-                 wxLogLastError(wxT("SetTextColor"));
 
-             }
 
-         }
 
-         else
 
-         {
 
-             m_oldColFg = CLR_INVALID;
 
-         }
 
-         if ( colBg != CLR_INVALID )
 
-         {
 
-             m_oldColBg = ::SetBkColor(m_hdc, colBg);
 
-             if ( m_oldColBg == CLR_INVALID )
 
-             {
 
-                 wxLogLastError(wxT("SetBkColor"));
 
-             }
 
-         }
 
-         else
 
-         {
 
-             m_oldColBg = CLR_INVALID;
 
-         }
 
-     }
 
- private:
 
-     const HDC m_hdc;
 
-     COLORREF m_oldColFg,
 
-              m_oldColBg;
 
-     wxDECLARE_NO_COPY_CLASS(wxTextColoursChanger);
 
- };
 
- // background mode
 
- class wxBkModeChanger
 
- {
 
- public:
 
-     // set background mode to opaque if mode != wxBRUSHSTYLE_TRANSPARENT
 
-     wxBkModeChanger(HDC hdc, int mode)
 
-         : m_hdc(hdc)
 
-     {
 
-         Change(mode);
 
-     }
 
-     ~wxBkModeChanger()
 
-     {
 
-         if ( m_oldMode )
 
-             ::SetBkMode(m_hdc, m_oldMode);
 
-     }
 
- protected:
 
-     // this ctor doesn't change mode immediately, call Change() later to do it
 
-     // only if needed
 
-     wxBkModeChanger(HDC hdc) : m_hdc(hdc) { m_oldMode = 0; }
 
-     void Change(int mode)
 
-     {
 
-         m_oldMode = ::SetBkMode(m_hdc, mode == wxBRUSHSTYLE_TRANSPARENT
 
-                                         ? TRANSPARENT
 
-                                         : OPAQUE);
 
-         if ( !m_oldMode )
 
-         {
 
-             wxLogLastError(wxT("SetBkMode"));
 
-         }
 
-     }
 
- private:
 
-     const HDC m_hdc;
 
-     int m_oldMode;
 
-     wxDECLARE_NO_COPY_CLASS(wxBkModeChanger);
 
- };
 
- } // namespace wxMSWImpl
 
- #endif // _MSW_PRIVATE_DC_H_
 
 
  |