blob: 5dc43f6fdb72917be5e565c43149d9ea77ed5e59 [file] [log] [blame]
Alexandre Julliard5f721f81994-01-04 20:14:34 +00001/*
2 * Caret functions
3 *
4 * Copyright 1993 David Metcalfe
Alexandre Julliard59730ae1996-03-24 16:20:51 +00005 * Copyright 1996 Frans van Dorsselaer
Alexandre Julliardaf0bae51995-10-03 17:06:08 +00006 */
Alexandre Julliard5f721f81994-01-04 20:14:34 +00007
Jeremy Whited3e22d92000-02-10 19:03:02 +00008#include "windef.h"
Alexandre Julliard5ab9d862000-08-09 22:35:05 +00009#include "winbase.h"
Jeremy Whited3e22d92000-02-10 19:03:02 +000010#include "wingdi.h"
Alexandre Julliard5ab9d862000-08-09 22:35:05 +000011#include "winuser.h"
Huw D M Daviesa9f55c41999-05-08 12:45:18 +000012#include "wine/wingdi16.h"
Patrik Stridvall1ed4ecf1999-06-26 14:58:24 +000013#include "wine/winuser16.h"
Patrik Stridvall1ed4ecf1999-06-26 14:58:24 +000014#include "win.h"
Alexandre Julliard359f497e1999-07-04 16:02:24 +000015#include "debugtools.h"
Alexandre Julliardaca05781994-10-17 18:12:41 +000016
Alexandre Julliard5ab9d862000-08-09 22:35:05 +000017DEFAULT_DEBUG_CHANNEL(caret);
Patrik Stridvallb4b9fae1999-04-19 14:56:29 +000018
Alexandre Julliard5f721f81994-01-04 20:14:34 +000019typedef struct
20{
Alexandre Julliarda3960291999-02-26 11:11:13 +000021 HWND hwnd;
22 UINT hidden;
23 BOOL on;
24 INT x;
25 INT y;
26 INT width;
27 INT height;
Alexandre Julliardca22b331996-07-12 19:02:39 +000028 HBRUSH16 hBrush;
Alexandre Julliarda3960291999-02-26 11:11:13 +000029 UINT timeout;
30 UINT timerid;
Alexandre Julliard5f721f81994-01-04 20:14:34 +000031} CARET;
32
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000033typedef enum
34{
35 CARET_OFF = 0,
36 CARET_ON,
Patrik Stridvall0f8bc5b1999-04-22 16:27:50 +000037 CARET_TOGGLE
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000038} DISPLAY_CARET;
Alexandre Julliard5f721f81994-01-04 20:14:34 +000039
Alexandre Julliard7ebe1a41996-12-22 18:27:48 +000040static CARET Caret = { 0, 0, FALSE, 0, 0, 2, 12, 0, 500, 0 };
Alexandre Julliard5f721f81994-01-04 20:14:34 +000041
Alexandre Julliard5f721f81994-01-04 20:14:34 +000042/*****************************************************************
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000043 * CARET_GetHwnd
Alexandre Julliard5f721f81994-01-04 20:14:34 +000044 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000045HWND CARET_GetHwnd(void)
Alexandre Julliard5f721f81994-01-04 20:14:34 +000046{
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000047 return Caret.hwnd;
Alexandre Julliard5f721f81994-01-04 20:14:34 +000048}
49
Alexandre Julliard5f721f81994-01-04 20:14:34 +000050/*****************************************************************
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000051 * CARET_GetRect
52 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000053void CARET_GetRect(LPRECT lprc)
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000054{
55 lprc->right = (lprc->left = Caret.x) + Caret.width - 1;
56 lprc->bottom = (lprc->top = Caret.y) + Caret.height - 1;
57}
58
59/*****************************************************************
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000060 * CARET_DisplayCaret
Alexandre Julliard5f721f81994-01-04 20:14:34 +000061 */
Alexandre Julliardca22b331996-07-12 19:02:39 +000062static void CARET_DisplayCaret( DISPLAY_CARET status )
Alexandre Julliard5f721f81994-01-04 20:14:34 +000063{
Alexandre Julliarda3960291999-02-26 11:11:13 +000064 HDC hdc;
Alexandre Julliardca22b331996-07-12 19:02:39 +000065 HBRUSH16 hPrevBrush;
Alexandre Julliard5f721f81994-01-04 20:14:34 +000066
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000067 if (Caret.on && (status == CARET_ON)) return;
68 if (!Caret.on && (status == CARET_OFF)) return;
69
70 /* So now it's always a toggle */
71
72 Caret.on = !Caret.on;
Alexandre Julliard670cdc41997-08-24 16:00:30 +000073 /* do not use DCX_CACHE here, for x,y,width,height are in logical units */
Alexandre Julliarda3960291999-02-26 11:11:13 +000074 if (!(hdc = GetDCEx( Caret.hwnd, 0, DCX_USESTYLE /*| DCX_CACHE*/ ))) return;
75 hPrevBrush = SelectObject( hdc, Caret.hBrush );
76 PatBlt( hdc, Caret.x, Caret.y, Caret.width, Caret.height, PATINVERT );
77 SelectObject( hdc, hPrevBrush );
78 ReleaseDC( Caret.hwnd, hdc );
Alexandre Julliard5f721f81994-01-04 20:14:34 +000079}
80
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000081
82/*****************************************************************
83 * CARET_Callback
84 */
Alexandre Julliarda3960291999-02-26 11:11:13 +000085static VOID CALLBACK CARET_Callback( HWND hwnd, UINT msg, UINT id, DWORD ctime)
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000086{
Alexandre Julliard359f497e1999-07-04 16:02:24 +000087 TRACE("hwnd=%04x, timerid=%d, caret=%d\n",
Alexandre Julliardca22b331996-07-12 19:02:39 +000088 hwnd, id, Caret.on);
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000089 CARET_DisplayCaret(CARET_TOGGLE);
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000090}
91
92
93/*****************************************************************
94 * CARET_SetTimer
95 */
Alexandre Julliardca22b331996-07-12 19:02:39 +000096static void CARET_SetTimer(void)
Alexandre Julliard7d654eb1996-02-25 11:36:22 +000097{
Alexandre Julliarda3960291999-02-26 11:11:13 +000098 if (Caret.timerid) KillSystemTimer( (HWND)0, Caret.timerid );
99 Caret.timerid = SetSystemTimer( (HWND)0, 0, Caret.timeout,
Alexandre Julliardca22b331996-07-12 19:02:39 +0000100 CARET_Callback );
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000101}
102
103
104/*****************************************************************
105 * CARET_ResetTimer
106 */
Alexandre Julliardca22b331996-07-12 19:02:39 +0000107static void CARET_ResetTimer(void)
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000108{
109 if (Caret.timerid)
110 {
Alexandre Julliarda3960291999-02-26 11:11:13 +0000111 KillSystemTimer( (HWND)0, Caret.timerid );
112 Caret.timerid = SetSystemTimer( (HWND)0, 0, Caret.timeout,
Alexandre Julliardca22b331996-07-12 19:02:39 +0000113 CARET_Callback );
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000114 }
115}
116
117
118/*****************************************************************
119 * CARET_KillTimer
120 */
Alexandre Julliardca22b331996-07-12 19:02:39 +0000121static void CARET_KillTimer(void)
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000122{
123 if (Caret.timerid)
124 {
Alexandre Julliarda3960291999-02-26 11:11:13 +0000125 KillSystemTimer( (HWND)0, Caret.timerid );
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000126 Caret.timerid = 0;
127 }
128}
129
130
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000131/*****************************************************************
Alexandre Julliard21979011997-03-05 08:22:35 +0000132 * CreateCaret16 (USER.163)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000133 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000134void WINAPI CreateCaret16( HWND16 hwnd, HBITMAP16 bitmap,
135 INT16 width, INT16 height )
Alexandre Julliard21979011997-03-05 08:22:35 +0000136{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000137 CreateCaret( hwnd, bitmap, width, height );
Alexandre Julliard21979011997-03-05 08:22:35 +0000138}
139
140/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000141 * CreateCaret (USER32.66)
Alexandre Julliard21979011997-03-05 08:22:35 +0000142 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000143BOOL WINAPI CreateCaret( HWND hwnd, HBITMAP bitmap,
144 INT width, INT height )
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000145{
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000146 TRACE("hwnd=%04x\n", hwnd);
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000147
Alexandre Julliard7e56f681996-01-31 19:02:28 +0000148 if (!hwnd) return FALSE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000149
150 /* if cursor already exists, destroy it */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000151 if (Caret.hwnd) DestroyCaret();
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000152
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000153 if (bitmap && (bitmap != 1))
154 {
Alexandre Julliardb0efe282000-08-04 04:18:04 +0000155 BITMAP bmp;
156 if (!GetObjectA( bitmap, sizeof(bmp), &bmp )) return FALSE;
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000157 Caret.width = bmp.bmWidth;
158 Caret.height = bmp.bmHeight;
159 /* FIXME: we should make a copy of the bitmap instead of a brush */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000160 Caret.hBrush = CreatePatternBrush( bitmap );
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000161 }
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000162 else
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000163 {
Alexandre Julliarda3960291999-02-26 11:11:13 +0000164 Caret.width = width ? width : GetSystemMetrics(SM_CXBORDER);
165 Caret.height = height ? height : GetSystemMetrics(SM_CYBORDER);
166 Caret.hBrush = CreateSolidBrush(bitmap ?
167 GetSysColor(COLOR_GRAYTEXT) :
168 GetSysColor(COLOR_WINDOW) );
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000169 }
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000170
171 Caret.hwnd = hwnd;
172 Caret.hidden = 1;
173 Caret.on = FALSE;
174 Caret.x = 0;
175 Caret.y = 0;
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000176
Alexandre Julliarda3960291999-02-26 11:11:13 +0000177 Caret.timeout = GetProfileIntA( "windows", "CursorBlinkRate", 500 );
Alexandre Julliard7e56f681996-01-31 19:02:28 +0000178 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000179}
180
181
182/*****************************************************************
Alexandre Julliard21979011997-03-05 08:22:35 +0000183 * DestroyCaret16 (USER.164)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000184 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000185void WINAPI DestroyCaret16(void)
Alexandre Julliard21979011997-03-05 08:22:35 +0000186{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000187 DestroyCaret();
Alexandre Julliard21979011997-03-05 08:22:35 +0000188}
189
190
191/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000192 * DestroyCaret (USER32.131)
Alexandre Julliard21979011997-03-05 08:22:35 +0000193 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000194BOOL WINAPI DestroyCaret(void)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000195{
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000196 if (!Caret.hwnd) return FALSE;
Alexandre Julliardcdd09231994-01-12 11:12:51 +0000197
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000198 TRACE("hwnd=%04x, timerid=%d\n",
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000199 Caret.hwnd, Caret.timerid);
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000200
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000201 CARET_KillTimer();
202 CARET_DisplayCaret(CARET_OFF);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000203 DeleteObject( Caret.hBrush );
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000204 Caret.hwnd = 0;
Alexandre Julliard0c126c71996-02-18 18:44:41 +0000205 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000206}
207
208
209/*****************************************************************
Alexandre Julliard21979011997-03-05 08:22:35 +0000210 * SetCaretPos16 (USER.165)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000211 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000212void WINAPI SetCaretPos16( INT16 x, INT16 y )
Alexandre Julliard21979011997-03-05 08:22:35 +0000213{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000214 SetCaretPos( x, y );
Alexandre Julliard21979011997-03-05 08:22:35 +0000215}
216
217
218/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000219 * SetCaretPos (USER32.466)
Alexandre Julliard21979011997-03-05 08:22:35 +0000220 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000221BOOL WINAPI SetCaretPos( INT x, INT y)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000222{
Alexandre Julliardca22b331996-07-12 19:02:39 +0000223 if (!Caret.hwnd) return FALSE;
224 if ((x == Caret.x) && (y == Caret.y)) return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000225
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000226 TRACE("x=%d, y=%d\n", x, y);
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000227
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000228 CARET_KillTimer();
229 CARET_DisplayCaret(CARET_OFF);
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000230 Caret.x = x;
231 Caret.y = y;
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000232 if (!Caret.hidden)
233 {
234 CARET_DisplayCaret(CARET_ON);
235 CARET_SetTimer();
236 }
Alexandre Julliardca22b331996-07-12 19:02:39 +0000237 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000238}
239
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000240
Alexandre Julliardca22b331996-07-12 19:02:39 +0000241/*****************************************************************
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000242 * HideCaret16 (USER.166)
Alexandre Julliardca22b331996-07-12 19:02:39 +0000243 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000244void WINAPI HideCaret16( HWND16 hwnd )
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000245{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000246 HideCaret( hwnd );
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000247}
248
249
250/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000251 * HideCaret (USER32.317)
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000252 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000253BOOL WINAPI HideCaret( HWND hwnd )
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000254{
Alexandre Julliardca22b331996-07-12 19:02:39 +0000255 if (!Caret.hwnd) return FALSE;
256 if (hwnd && (Caret.hwnd != hwnd)) return FALSE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000257
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000258 TRACE("hwnd=%04x, hidden=%d\n",
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000259 hwnd, Caret.hidden);
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000260
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000261 CARET_KillTimer();
262 CARET_DisplayCaret(CARET_OFF);
263 Caret.hidden++;
Alexandre Julliardca22b331996-07-12 19:02:39 +0000264 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000265}
266
267
268/*****************************************************************
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000269 * ShowCaret16 (USER.167)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000270 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000271void WINAPI ShowCaret16( HWND16 hwnd )
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000272{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000273 ShowCaret( hwnd );
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000274}
275
276
277/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000278 * ShowCaret (USER32.529)
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +0000279 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000280BOOL WINAPI ShowCaret( HWND hwnd )
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000281{
Alexandre Julliardca22b331996-07-12 19:02:39 +0000282 if (!Caret.hwnd) return FALSE;
283 if (hwnd && (Caret.hwnd != hwnd)) return FALSE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000284
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000285 TRACE("hwnd=%04x, hidden=%d\n",
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000286 hwnd, Caret.hidden);
287
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000288 if (Caret.hidden)
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000289 {
290 Caret.hidden--;
291 if (!Caret.hidden)
292 {
293 CARET_DisplayCaret(CARET_ON);
294 CARET_SetTimer();
295 }
296 }
Alexandre Julliardca22b331996-07-12 19:02:39 +0000297 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000298}
299
300
301/*****************************************************************
Alexandre Julliard21979011997-03-05 08:22:35 +0000302 * SetCaretBlinkTime16 (USER.168)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000303 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000304void WINAPI SetCaretBlinkTime16( UINT16 msecs )
Alexandre Julliard21979011997-03-05 08:22:35 +0000305{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000306 SetCaretBlinkTime( msecs );
Alexandre Julliard21979011997-03-05 08:22:35 +0000307}
308
309/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000310 * SetCaretBlinkTime (USER32.465)
Alexandre Julliard21979011997-03-05 08:22:35 +0000311 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000312BOOL WINAPI SetCaretBlinkTime( UINT msecs )
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000313{
Alexandre Julliardca22b331996-07-12 19:02:39 +0000314 if (!Caret.hwnd) return FALSE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000315
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000316 TRACE("hwnd=%04x, msecs=%d\n",
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000317 Caret.hwnd, msecs);
Alexandre Julliardff8331e1995-09-18 11:19:54 +0000318
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000319 Caret.timeout = msecs;
Alexandre Julliard7d654eb1996-02-25 11:36:22 +0000320 CARET_ResetTimer();
Alexandre Julliardca22b331996-07-12 19:02:39 +0000321 return TRUE;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000322}
323
324
325/*****************************************************************
Alexandre Julliardca22b331996-07-12 19:02:39 +0000326 * GetCaretBlinkTime16 (USER.169)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000327 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000328UINT16 WINAPI GetCaretBlinkTime16(void)
Alexandre Julliardca22b331996-07-12 19:02:39 +0000329{
Alexandre Julliarda3960291999-02-26 11:11:13 +0000330 return (UINT16)GetCaretBlinkTime();
Alexandre Julliardca22b331996-07-12 19:02:39 +0000331}
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000332
Alexandre Julliardca22b331996-07-12 19:02:39 +0000333
334/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000335 * GetCaretBlinkTime (USER32.209)
Alexandre Julliardca22b331996-07-12 19:02:39 +0000336 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000337UINT WINAPI GetCaretBlinkTime(void)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000338{
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000339 return Caret.timeout;
340}
341
342
343/*****************************************************************
Alexandre Julliardca22b331996-07-12 19:02:39 +0000344 * GetCaretPos16 (USER.183)
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000345 */
Alexandre Julliard670cdc41997-08-24 16:00:30 +0000346VOID WINAPI GetCaretPos16( LPPOINT16 pt )
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000347{
348 if (!Caret.hwnd || !pt) return;
349
Alexandre Julliard359f497e1999-07-04 16:02:24 +0000350 TRACE("hwnd=%04x, pt=%p, x=%d, y=%d\n",
Alexandre Julliard59730ae1996-03-24 16:20:51 +0000351 Caret.hwnd, pt, Caret.x, Caret.y);
Alexandre Julliardca22b331996-07-12 19:02:39 +0000352 pt->x = (INT16)Caret.x;
353 pt->y = (INT16)Caret.y;
Alexandre Julliard5f721f81994-01-04 20:14:34 +0000354}
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000355
356
357/*****************************************************************
Patrik Stridvall2d6457c2000-03-28 20:22:59 +0000358 * GetCaretPos (USER32.210)
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000359 */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000360BOOL WINAPI GetCaretPos( LPPOINT pt )
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000361{
Alexandre Julliardca22b331996-07-12 19:02:39 +0000362 if (!Caret.hwnd || !pt) return FALSE;
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000363 pt->x = Caret.x;
364 pt->y = Caret.y;
Alexandre Julliardca22b331996-07-12 19:02:39 +0000365 return TRUE;
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000366}