1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/msw/dcclient.h 
   3 // Purpose:     wxClientDC class 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_DCCLIENT_H_ 
  13 #define _WX_DCCLIENT_H_ 
  15 // ---------------------------------------------------------------------------- 
  17 // ---------------------------------------------------------------------------- 
  20 #include "wx/msw/dc.h" 
  21 #include "wx/dcclient.h" 
  22 #include "wx/dynarray.h" 
  24 // ---------------------------------------------------------------------------- 
  26 // ---------------------------------------------------------------------------- 
  28 // this one if used by wxPaintDC only 
  29 struct WXDLLIMPEXP_FWD_CORE wxPaintDCInfo
; 
  31 WX_DECLARE_EXPORTED_OBJARRAY(wxPaintDCInfo
, wxArrayDCInfo
); 
  33 // ---------------------------------------------------------------------------- 
  35 // ---------------------------------------------------------------------------- 
  37 class WXDLLIMPEXP_CORE wxWindowDCImpl 
: public wxMSWDCImpl
 
  41     wxWindowDCImpl( wxDC 
*owner 
); 
  43     // Create a DC corresponding to the whole window 
  44     wxWindowDCImpl( wxDC 
*owner
, wxWindow 
*win 
); 
  46     virtual void DoGetSize(int *width
, int *height
) const; 
  49     // initialize the newly created DC 
  52     DECLARE_CLASS(wxWindowDCImpl
) 
  53     wxDECLARE_NO_COPY_CLASS(wxWindowDCImpl
); 
  56 class WXDLLIMPEXP_CORE wxClientDCImpl 
: public wxWindowDCImpl
 
  60     wxClientDCImpl( wxDC 
*owner 
); 
  62     // Create a DC corresponding to the client area of the window 
  63     wxClientDCImpl( wxDC 
*owner
, wxWindow 
*win 
); 
  65     virtual ~wxClientDCImpl(); 
  67     virtual void DoGetSize(int *width
, int *height
) const; 
  72     DECLARE_CLASS(wxClientDCImpl
) 
  73     wxDECLARE_NO_COPY_CLASS(wxClientDCImpl
); 
  76 class WXDLLIMPEXP_CORE wxPaintDCImpl 
: public wxClientDCImpl
 
  79     wxPaintDCImpl( wxDC 
*owner 
); 
  81     // Create a DC corresponding for painting the window in OnPaint() 
  82     wxPaintDCImpl( wxDC 
*owner
, wxWindow 
*win 
); 
  84     virtual ~wxPaintDCImpl(); 
  86     // find the entry for this DC in the cache (keyed by the window) 
  87     static WXHDC 
FindDCInCache(wxWindow
* win
); 
  90     static wxArrayDCInfo ms_cache
; 
  92     // find the entry for this DC in the cache (keyed by the window) 
  93     wxPaintDCInfo 
*FindInCache(size_t *index 
= NULL
) const; 
  95     DECLARE_CLASS(wxPaintDCImpl
) 
  96     wxDECLARE_NO_COPY_CLASS(wxPaintDCImpl
); 
 101  * This class is used when an application sends an HDC with the WM_PAINT 
 102  * message. It is used in HandlePaint and need not be used by an application. 
 105 class WXDLLIMPEXP_CORE wxPaintDCEx 
: public wxPaintDC
 
 108     wxPaintDCEx(wxWindow 
*canvas
, WXHDC dc
); 
 110     DECLARE_CLASS(wxPaintDCEx
) 
 111     wxDECLARE_NO_COPY_CLASS(wxPaintDCEx
);