Use max tracking size instead of maximized size to limit window size.
[reactos.git] / reactos / lib / user32 / windows / caret.c
1 /*
2 * ReactOS kernel
3 * Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19 /* $Id$
20 *
21 * PROJECT: ReactOS user32.dll
22 * FILE: lib/user32/windows/caret.c
23 * PURPOSE: Caret
24 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
25 * UPDATE HISTORY:
26 * 09-05-2001 CSH Created
27 */
28
29 /* INCLUDES ******************************************************************/
30
31 #include <user32.h>
32
33 /* FUNCTIONS *****************************************************************/
34
35 void DrawCaret(HWND hWnd, PTHRDCARETINFO CaretInfo)
36 {
37 HDC hDC, hComp;
38
39 hDC = GetDC(hWnd);
40 if(hDC)
41 {
42 if(CaretInfo->Bitmap && GetBitmapDimensionEx(CaretInfo->Bitmap, &CaretInfo->Size))
43 {
44 hComp = CreateCompatibleDC(hDC);
45 if(hComp)
46 {
47 SelectObject(hComp, CaretInfo->Bitmap);
48 BitBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, hComp, 0, 0, SRCINVERT);
49 DeleteDC(hComp);
50 }
51 else
52 PatBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, DSTINVERT);
53 }
54 else
55 {
56 PatBlt(hDC, CaretInfo->Pos.x, CaretInfo->Pos.y, CaretInfo->Size.cx, CaretInfo->Size.cy, DSTINVERT);
57 }
58 ReleaseDC(hWnd, hDC);
59 }
60 }
61
62 /*
63 * @implemented
64 */
65 BOOL STDCALL
66 CreateCaret(HWND hWnd,
67 HBITMAP hBitmap,
68 int nWidth,
69 int nHeight)
70 {
71 return (BOOL)NtUserCreateCaret(hWnd, hBitmap, nWidth, nHeight);
72 }
73
74
75 /*
76 * @implemented
77 */
78 BOOL STDCALL
79 DestroyCaret(VOID)
80 {
81 return (BOOL)NtUserCallNoParam(NOPARAM_ROUTINE_DESTROY_CARET);
82 }
83
84
85 /*
86 * @implemented
87 */
88 UINT STDCALL
89 GetCaretBlinkTime(VOID)
90 {
91 return NtUserGetCaretBlinkTime();
92 }
93
94
95 /*
96 * @implemented
97 */
98 BOOL STDCALL
99 GetCaretPos(LPPOINT lpPoint)
100 {
101 return (BOOL)NtUserGetCaretPos(lpPoint);
102 }
103
104
105 /*
106 * @implemented
107 */
108 BOOL STDCALL
109 HideCaret(HWND hWnd)
110 {
111 return (BOOL)NtUserHideCaret(hWnd);
112 }
113
114
115 /*
116 * @implemented
117 */
118 BOOL STDCALL
119 SetCaretBlinkTime(UINT uMSeconds)
120 {
121 return NtUserSetCaretBlinkTime(uMSeconds);
122 }
123
124
125 /*
126 * @implemented
127 */
128 BOOL STDCALL
129 SetCaretPos(int X,
130 int Y)
131 {
132 return NtUserSetCaretPos(X, Y);
133 }
134
135
136 /*
137 * @implemented
138 */
139 BOOL STDCALL
140 ShowCaret(HWND hWnd)
141 {
142 return (BOOL)NtUserShowCaret(hWnd);
143 }
144
145 /* EOF */