]> git.saurik.com Git - wxWidgets.git/blob - include/wx/msw/dcclient.h
67ed7c64468f67bfc7bef123ff7ec22dbfda1864
[wxWidgets.git] / include / wx / msw / dcclient.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dcclient.h
3 // Purpose: wxClientDC class
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 01/02/97
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_DCCLIENT_H_
13 #define _WX_DCCLIENT_H_
14
15 // ----------------------------------------------------------------------------
16 // headers
17 // ----------------------------------------------------------------------------
18
19 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
20 #pragma interface "dcclient.h"
21 #endif
22
23 #include "wx/dc.h"
24 #include "wx/dynarray.h"
25
26 // ----------------------------------------------------------------------------
27 // array types
28 // ----------------------------------------------------------------------------
29
30 // this one if used by wxPaintDC only
31 struct WXDLLEXPORT wxPaintDCInfo;
32
33 WX_DECLARE_EXPORTED_OBJARRAY(wxPaintDCInfo, wxArrayDCInfo);
34
35 // ----------------------------------------------------------------------------
36 // DC classes
37 // ----------------------------------------------------------------------------
38
39 class WXDLLEXPORT wxWindowDC : public wxDC
40 {
41 public:
42 // default ctor
43 wxWindowDC();
44
45 // Create a DC corresponding to the whole window
46 wxWindowDC(wxWindow *win);
47
48 protected:
49 // initialize the newly created DC
50 void InitDC();
51
52 // override some base class virtuals
53 virtual void DoGetSize(int *width, int *height) const;
54
55 private:
56 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWindowDC)
57 };
58
59 class WXDLLEXPORT wxClientDC : public wxWindowDC
60 {
61 public:
62 // default ctor
63 wxClientDC();
64
65 // Create a DC corresponding to the client area of the window
66 wxClientDC(wxWindow *win);
67
68 virtual ~wxClientDC();
69
70 protected:
71 void InitDC();
72
73 // override some base class virtuals
74 virtual void DoGetSize(int *width, int *height) const;
75
76 private:
77 DECLARE_DYNAMIC_CLASS_NO_COPY(wxClientDC)
78 };
79
80 class WXDLLEXPORT wxPaintDC : public wxClientDC
81 {
82 public:
83 wxPaintDC();
84
85 // Create a DC corresponding for painting the window in OnPaint()
86 wxPaintDC(wxWindow *win);
87
88 virtual ~wxPaintDC();
89
90 // find the entry for this DC in the cache (keyed by the window)
91 static WXHDC FindDCInCache(wxWindow* win);
92
93 protected:
94 static wxArrayDCInfo ms_cache;
95
96 // find the entry for this DC in the cache (keyed by the window)
97 wxPaintDCInfo *FindInCache(size_t *index = NULL) const;
98
99 private:
100 DECLARE_DYNAMIC_CLASS_NO_COPY(wxPaintDC)
101 };
102
103 /*
104 * wxPaintDCEx
105 * This class is used when an application sends an HDC with the WM_PAINT
106 * message. It is used in HandlePaint and need not be used by an application.
107 */
108
109 class WXDLLEXPORT wxPaintDCEx : public wxPaintDC
110 {
111 public:
112 wxPaintDCEx(wxWindow *canvas, WXHDC dc);
113 virtual ~wxPaintDCEx();
114 private:
115 int saveState;
116
117 DECLARE_CLASS(wxPaintDCEx)
118 DECLARE_NO_COPY_CLASS(wxPaintDCEx)
119 };
120
121 #endif
122 // _WX_DCCLIENT_H_