ReactOS 0.4.15-dev-5669-g09dde2c
drawing.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL
4 * FILE: base/applications/mspaint/drawing.cpp
5 * PURPOSE: The drawing functions used by the tools
6 * PROGRAMMERS: Benedikt Freisen
7 */
8
9/* INCLUDES *********************************************************/
10
11#include "precomp.h"
12
13/* FUNCTIONS ********************************************************/
14
15void
17{
18 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
19 MoveToEx(hdc, x1, y1, NULL);
20 LineTo(hdc, x2, y2);
22}
23
24void
25Rect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
26{
27 HBRUSH oldBrush;
28 LOGBRUSH logbrush;
29 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
30 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
31 logbrush.lbColor = (style == 2) ? fg : bg;
32 logbrush.lbHatch = 0;
33 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
34 Rectangle(hdc, x1, y1, x2, y2);
35 DeleteObject(SelectObject(hdc, oldBrush));
37}
38
39void
40Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
41{
42 HBRUSH oldBrush;
43 LOGBRUSH logbrush;
44 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
45 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
46 logbrush.lbColor = (style == 2) ? fg : bg;
47 logbrush.lbHatch = 0;
48 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
49 Ellipse(hdc, x1, y1, x2, y2);
50 DeleteObject(SelectObject(hdc, oldBrush));
52}
53
54void
55RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
56{
57 LOGBRUSH logbrush;
58 HBRUSH oldBrush;
59 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
60 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
61 logbrush.lbColor = (style == 2) ? fg : bg;
62 logbrush.lbHatch = 0;
63 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
64 RoundRect(hdc, x1, y1, x2, y2, 16, 16);
65 DeleteObject(SelectObject(hdc, oldBrush));
67}
68
69void
70Poly(HDC hdc, POINT * lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted)
71{
72 LOGBRUSH logbrush;
73 HBRUSH oldBrush;
74 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
75 UINT oldRop = GetROP2(hdc);
76
77 if (inverted)
79
80 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
81 logbrush.lbColor = (style == 2) ? fg : bg;
82 logbrush.lbHatch = 0;
83 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
84 if (closed)
85 Polygon(hdc, lpPoints, nCount);
86 else
87 Polyline(hdc, lpPoints, nCount);
88 DeleteObject(SelectObject(hdc, oldBrush));
90
91 SetROP2(hdc, oldRop);
92}
93
94void
95Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness)
96{
97 HPEN oldPen;
98 POINT fourPoints[4];
99 fourPoints[0] = p1;
100 fourPoints[1] = p2;
101 fourPoints[2] = p3;
102 fourPoints[3] = p4;
103 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
104 PolyBezier(hdc, fourPoints, 4);
105 DeleteObject(SelectObject(hdc, oldPen));
106}
107
108void
110{
111 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
113 DeleteObject(SelectObject(hdc, oldBrush));
114}
115
116void
118{
119 LONG a, b;
120 HPEN oldPen;
121 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
122
123 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
124 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
125 for(a = 0; a <= b; a++)
126 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - radius + 1,
127 (y1 * (b - a) + y2 * a) / b - radius + 1, (x1 * (b - a) + x2 * a) / b + radius + 1,
128 (y1 * (b - a) + y2 * a) / b + radius + 1);
129 DeleteObject(SelectObject(hdc, oldBrush));
130 DeleteObject(SelectObject(hdc, oldPen));
131}
132
133void
135{
136 LONG a, b, x, y;
137 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
138
139 for(a = 0; a <= b; a++)
140 for(y = (y1 * (b - a) + y2 * a) / b - radius + 1;
141 y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++)
142 for(x = (x1 * (b - a) + x2 * a) / b - radius + 1;
143 x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++)
144 if (GetPixel(hdc, x, y) == fg)
145 SetPixel(hdc, x, y, bg);
146}
147
148void
150{
151 LONG a, b;
152
153 for(b = -r; b <= r; b++)
154 for(a = -r; a <= r; a++)
155 if ((a * a + b * b <= r * r) && (rand() % 4 == 0))
156 SetPixel(hdc, x + a, y + b, color);
157}
158
159void
161{
162 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
163 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
164 LONG a, b;
165 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
166 switch (style)
167 {
168 case 0:
169 for(a = 0; a <= b; a++)
170 Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
171 (x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4);
172 break;
173 case 1:
174 for(a = 0; a <= b; a++)
175 Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
176 (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
177 break;
178 case 2:
179 MoveToEx(hdc, x1, y1, NULL);
180 LineTo(hdc, x2, y2);
181 SetPixel(hdc, x2, y2, color);
182 break;
183 case 3:
184 for(a = 0; a <= b; a++)
185 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
186 (x1 * (b - a) + x2 * a) / b + 5, (y1 * (b - a) + y2 * a) / b + 5);
187 break;
188 case 4:
189 for(a = 0; a <= b; a++)
190 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2,
191 (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
192 break;
193 case 5:
194 for(a = 0; a <= b; a++)
195 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
196 (x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1);
197 break;
198 case 6:
199 case 7:
200 case 8:
201 case 9:
202 case 10:
203 case 11:
204 {
205 POINT offsTop[] = {{4, -3}, {2, -2}, {0, 0},
206 {-3, -3}, {-2, -2}, {-1, 0}};
207 POINT offsBtm[] = {{-3, 4}, {-2, 2}, {-1, 1},
208 {4, 4}, {2, 2}, {0, 1}};
209 LONG idx = style - 6;
210 POINT pts[4];
211 pts[0].x = x1 + offsTop[idx].x;
212 pts[0].y = y1 + offsTop[idx].y;
213 pts[1].x = x1 + offsBtm[idx].x;
214 pts[1].y = y1 + offsBtm[idx].y;
215 pts[2].x = x2 + offsBtm[idx].x;
216 pts[2].y = y2 + offsBtm[idx].y;
217 pts[3].x = x2 + offsTop[idx].x;
218 pts[3].y = y2 + offsTop[idx].y;
219 Polygon(hdc, pts, 4);
220 break;
221 }
222 }
223 DeleteObject(SelectObject(hdc, oldBrush));
224 DeleteObject(SelectObject(hdc, oldPen));
225}
226
227void
229{
230 HBRUSH oldBrush;
231 LOGBRUSH logbrush;
232 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT)));
233 UINT oldRop = GetROP2(hdc);
234
236
237 logbrush.lbStyle = BS_HOLLOW;
238 logbrush.lbColor = 0;
239 logbrush.lbHatch = 0;
240 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
241 Rectangle(hdc, x1, y1, x2, y2);
242 DeleteObject(SelectObject(hdc, oldBrush));
243 DeleteObject(SelectObject(hdc, oldPen));
244
245 SetROP2(hdc, oldRop);
246}
247
248void
249SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF system_selection_color)
250{
251 HBRUSH oldBrush;
252 LOGBRUSH logbrush;
253 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, system_selection_color));
254
255 logbrush.lbStyle = BS_HOLLOW;
256 logbrush.lbColor = 0;
257 logbrush.lbHatch = 0;
258 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
259 Rectangle(hdc, x1, y1, x2, y2); /* SEL BOX FRAME */
260 DeleteObject(SelectObject(hdc, oldBrush));
261 DeleteObject(SelectObject(hdc, oldPen));
262 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, system_selection_color));
263 oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(system_selection_color));
264 Rectangle(hdc, x1 - 1, y1 - 1, x1 + 2, y1 + 2);
265 Rectangle(hdc, x2 - 2, y1 - 1, x2 + 2, y1 + 2);
266 Rectangle(hdc, x1 - 1, y2 - 2, x1 + 2, y2 + 1);
267 Rectangle(hdc, x2 - 2, y2 - 2, x2 + 2, y2 + 1);
268 Rectangle(hdc, (x1 + x2) / 2 - 1, y1 - 1, (x1 + x2) / 2 + 2, y1 + 2);
269 Rectangle(hdc, (x1 + x2) / 2 - 1, y2 - 2, (x1 + x2) / 2 + 2, y2 + 1);
270 Rectangle(hdc, x1 - 1, (y1 + y2) / 2 - 1, x1 + 2, (y1 + y2) / 2 + 2);
271 Rectangle(hdc, x2 - 2, (y1 + y2) / 2 - 1, x2 + 1, (y1 + y2) / 2 + 2);
272 DeleteObject(SelectObject(hdc, oldBrush));
273 DeleteObject(SelectObject(hdc, oldPen));
274}
275
276void
278{
279 INT iSaveDC = SaveDC(hdc); // We will modify the clipping region. Save now.
280
281 RECT rc;
282 SetRect(&rc, x1, y1, x2, y2);
283
284 if (style == 0) // Transparent
285 {
288 }
289 else // Opaque
290 {
292 SetBkColor(hdc, bg);
293
294 HBRUSH hbr = CreateSolidBrush(bg);
295 FillRect(hdc, &rc, hbr); // Fill the background
296 DeleteObject(hbr);
297 }
298
299 IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
300
301 HGDIOBJ hFontOld = SelectObject(hdc, font);
302 SetTextColor(hdc, fg);
303 const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP |
305 DrawText(hdc, lpchText, -1, &rc, uFormat);
306 SelectObject(hdc, hFontOld);
307
308 RestoreDC(hdc, iSaveDC); // Restore
309}
310
311BOOL
312ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
313 HDC hdcSrc, int nXSrc, int nYSrc, HBITMAP hbmMask, int xMask, int yMask,
314 DWORD dwRop, COLORREF keyColor)
315{
316 HDC hTempDC;
317 HDC hTempDC2;
318 HBITMAP hTempBm;
319 HBRUSH hTempBrush;
320 HBITMAP hTempMask;
321
322 hTempDC = CreateCompatibleDC(hdcSrc);
323 hTempDC2 = CreateCompatibleDC(hdcSrc);
324 hTempBm = CreateCompatibleBitmap(hTempDC, nWidth, nHeight);
325 SelectObject(hTempDC, hTempBm);
326 hTempBrush = CreateSolidBrush(keyColor);
327 SelectObject(hTempDC, hTempBrush);
328 BitBlt(hTempDC, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY);
329 PatBlt(hTempDC, 0, 0, nWidth, nHeight, PATINVERT);
330 hTempMask = CreateBitmap(nWidth, nHeight, 1, 1, NULL);
331 SelectObject(hTempDC2, hTempMask);
332 BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, 0, 0, SRCCOPY);
333 SelectObject(hTempDC, hbmMask);
334 BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, xMask, yMask, SRCAND);
335 MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, hTempMask, xMask, yMask, dwRop);
336 DeleteDC(hTempDC);
337 DeleteDC(hTempDC2);
338 DeleteObject(hTempBm);
339 DeleteObject(hTempBrush);
340 DeleteObject(hTempMask);
341 return TRUE;
342}
Arabic default style
Definition: afstyles.h:94
FORCEINLINE VOID SetPixel(_In_ ULONG Left, _In_ ULONG Top, _In_ UCHAR Color)
Definition: arm.h:50
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
char * Text
Definition: combotst.c:136
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
unsigned int idx
Definition: utils.c:41
void RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2)
Definition: drawing.cpp:228
void Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness)
Definition: drawing.cpp:95
BOOL ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, HBITMAP hbmMask, int xMask, int yMask, DWORD dwRop, COLORREF keyColor)
Definition: drawing.cpp:312
void SelectionFrame(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF system_selection_color)
Definition: drawing.cpp:249
void Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
Definition: drawing.cpp:40
void Poly(HDC hdc, POINT *lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted)
Definition: drawing.cpp:70
void RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
Definition: drawing.cpp:55
void Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
Definition: drawing.cpp:134
void Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
Definition: drawing.cpp:117
void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
Definition: drawing.cpp:149
void Fill(HDC hdc, LONG x, LONG y, COLORREF color)
Definition: drawing.cpp:109
static VOID NTAPI BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:49
#define abs(i)
Definition: fconv.c:206
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
pKey DeleteObject()
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint color
Definition: glext.h:6243
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
_Check_return_ int __cdecl rand(void)
Definition: rand.c:10
#define a
Definition: ke_i.h:78
#define b
Definition: ke_i.h:79
HDC hdc
Definition: main.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
Definition: mk_font.cpp:20
unsigned int UINT
Definition: ndis.h:50
long LONG
Definition: pedump.c:60
BOOL Polygon(CONST PPOINT UnsafePoints, int Count, int polyFillMode)
Definition: polytest.cpp:730
Definition: ncftp.h:79
UINT lbStyle
Definition: wingdi.h:1747
ULONG_PTR lbHatch
Definition: wingdi.h:1749
COLORREF lbColor
Definition: wingdi.h:1748
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define max(a, b)
Definition: svc.c:63
int32_t INT
Definition: typedefs.h:58
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
Definition: winddi.h:3710
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
Definition: winddi.h:3709
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3708
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
Definition: winddi.h:3711
DWORD COLORREF
Definition: windef.h:300
HBRUSH WINAPI CreateBrushIndirect(_In_ const LOGBRUSH *plb)
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ int cpt)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
BOOL WINAPI Ellipse(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
#define PATINVERT
Definition: wingdi.h:328
#define PS_DOT
Definition: wingdi.h:588
int WINAPI IntersectClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
#define FLOODFILLSURFACE
Definition: wingdi.h:645
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
BOOL WINAPI MaskBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ HDC, _In_ int, _In_ int, _In_ HBITMAP, _In_ int, _In_ int, _In_ DWORD)
#define R2_NOTXORPEN
Definition: wingdi.h:351
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define TRANSPARENT
Definition: wingdi.h:950
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
#define SRCCOPY
Definition: wingdi.h:333
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:978
#define BS_HOLLOW
Definition: wingdi.h:1088
int WINAPI GetROP2(_In_ HDC)
Definition: dc.c:1086
#define OPAQUE
Definition: wingdi.h:949
BOOL WINAPI PatBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
int WINAPI SetROP2(_In_ HDC, _In_ int)
Definition: dc.c:1107
BOOL WINAPI RoundRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI ExtFloodFill(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF, _In_ UINT)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
#define BS_SOLID
Definition: wingdi.h:1086
#define PS_SOLID
Definition: wingdi.h:586
int WINAPI SaveDC(_In_ HDC)
#define SRCAND
Definition: wingdi.h:330
DWORD WINAPI GetSysColor(_In_ int)
#define DT_NOPREFIX
Definition: winuser.h:537
#define COLOR_HIGHLIGHT
Definition: winuser.h:920
#define DT_NOCLIP
Definition: winuser.h:536
#define DrawText
Definition: winuser.h:5761
#define DT_LEFT
Definition: winuser.h:534
#define DT_TOP
Definition: winuser.h:542
#define DT_WORDBREAK
Definition: winuser.h:544
#define DT_EXPANDTABS
Definition: winuser.h:532
#define DT_EDITCONTROL
Definition: winuser.h:528
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
static HDC hdcSrc
Definition: xlate.c:32
const CHAR * LPCTSTR
Definition: xmlstorage.h:193