2 * 16-bit windowing functions
4 * Copyright 2001 Alexandre Julliard
7 #include "wine/winuser16.h"
10 #include "stackframe.h"
12 static HWND16 hwndSysModal;
14 /* convert insert after window handle to 32-bit */
15 inline static HWND full_insert_after_hwnd( HWND16 hwnd )
17 HWND ret = WIN_Handle32( hwnd );
18 if (ret == (HWND)0xffff) ret = HWND_TOPMOST;
22 /**************************************************************************
25 INT16 WINAPI MessageBox16( HWND16 hwnd, LPCSTR text, LPCSTR title, UINT16 type )
27 return MessageBoxA( WIN_Handle32(hwnd), text, title, type );
31 /**************************************************************************
34 BOOL16 WINAPI KillTimer16( HWND16 hwnd, UINT16 id )
36 return KillTimer( WIN_Handle32(hwnd), id );
40 /**************************************************************************
41 * SetCapture (USER.18)
43 HWND16 WINAPI SetCapture16( HWND16 hwnd )
45 return WIN_Handle16( SetCapture( WIN_Handle32(hwnd) ));
49 /**************************************************************************
50 * ReleaseCapture (USER.19)
52 BOOL16 WINAPI ReleaseCapture16(void)
54 return ReleaseCapture();
58 /**************************************************************************
61 HWND16 WINAPI SetFocus16( HWND16 hwnd )
63 return WIN_Handle16( SetFocus( WIN_Handle32(hwnd) ));
67 /**************************************************************************
70 HWND16 WINAPI GetFocus16(void)
72 return WIN_Handle16( GetFocus() );
76 /**************************************************************************
77 * RemoveProp (USER.24)
79 HANDLE16 WINAPI RemoveProp16( HWND16 hwnd, LPCSTR str )
81 return (HANDLE16)RemovePropA( WIN_Handle32(hwnd), str );
85 /**************************************************************************
88 HANDLE16 WINAPI GetProp16( HWND16 hwnd, LPCSTR str )
90 return (HANDLE16)GetPropA( WIN_Handle32(hwnd), str );
94 /**************************************************************************
97 BOOL16 WINAPI SetProp16( HWND16 hwnd, LPCSTR str, HANDLE16 handle )
99 return SetPropA( WIN_Handle32(hwnd), str, handle );
103 /**************************************************************************
104 * ClientToScreen (USER.28)
106 void WINAPI ClientToScreen16( HWND16 hwnd, LPPOINT16 lppnt )
108 MapWindowPoints16( hwnd, 0, lppnt, 1 );
112 /**************************************************************************
113 * ScreenToClient (USER.29)
115 void WINAPI ScreenToClient16( HWND16 hwnd, LPPOINT16 lppnt )
117 MapWindowPoints16( 0, hwnd, lppnt, 1 );
121 /**************************************************************************
122 * WindowFromPoint (USER.30)
124 HWND16 WINAPI WindowFromPoint16( POINT16 pt )
128 CONV_POINT16TO32( &pt, &pt32 );
129 return WIN_Handle16( WindowFromPoint( pt32 ) );
133 /**************************************************************************
136 BOOL16 WINAPI IsIconic16(HWND16 hwnd)
138 return IsIconic( WIN_Handle32(hwnd) );
142 /**************************************************************************
143 * GetWindowRect (USER.32)
145 void WINAPI GetWindowRect16( HWND16 hwnd, LPRECT16 rect )
149 GetWindowRect( WIN_Handle32(hwnd), &rect32 );
150 rect->left = rect32.left;
151 rect->top = rect32.top;
152 rect->right = rect32.right;
153 rect->bottom = rect32.bottom;
157 /**************************************************************************
158 * GetClientRect (USER.33)
160 void WINAPI GetClientRect16( HWND16 hwnd, LPRECT16 rect )
164 GetClientRect( WIN_Handle32(hwnd), &rect32 );
165 rect->left = rect32.left;
166 rect->top = rect32.top;
167 rect->right = rect32.right;
168 rect->bottom = rect32.bottom;
172 /**************************************************************************
173 * EnableWindow (USER.34)
175 BOOL16 WINAPI EnableWindow16( HWND16 hwnd, BOOL16 enable )
177 return EnableWindow( WIN_Handle32(hwnd), enable );
181 /**************************************************************************
182 * IsWindowEnabled (USER.35)
184 BOOL16 WINAPI IsWindowEnabled16(HWND16 hwnd)
186 return IsWindowEnabled( WIN_Handle32(hwnd) );
190 /**************************************************************************
191 * GetWindowText (USER.36)
193 INT16 WINAPI GetWindowText16( HWND16 hwnd, SEGPTR lpString, INT16 nMaxCount )
195 return SendMessage16( hwnd, WM_GETTEXT, nMaxCount, lpString );
199 /**************************************************************************
200 * SetWindowText (USER.37)
202 BOOL16 WINAPI SetWindowText16( HWND16 hwnd, SEGPTR lpString )
204 return SendMessage16( hwnd, WM_SETTEXT, 0, (LPARAM)lpString );
208 /**************************************************************************
209 * GetWindowTextLength (USER.38)
211 INT16 WINAPI GetWindowTextLength16( HWND16 hwnd )
213 return SendMessage16( hwnd, WM_GETTEXTLENGTH, 0, 0 );
217 /***********************************************************************
218 * BeginPaint (USER.39)
220 HDC16 WINAPI BeginPaint16( HWND16 hwnd, LPPAINTSTRUCT16 lps )
224 BeginPaint( WIN_Handle32(hwnd), &ps );
226 lps->fErase = ps.fErase;
227 lps->rcPaint.top = ps.rcPaint.top;
228 lps->rcPaint.left = ps.rcPaint.left;
229 lps->rcPaint.right = ps.rcPaint.right;
230 lps->rcPaint.bottom = ps.rcPaint.bottom;
231 lps->fRestore = ps.fRestore;
232 lps->fIncUpdate = ps.fIncUpdate;
237 /***********************************************************************
240 BOOL16 WINAPI EndPaint16( HWND16 hwnd, const PAINTSTRUCT16* lps )
245 return EndPaint( WIN_Handle32(hwnd), &ps );
249 /**************************************************************************
250 * ShowWindow (USER.42)
252 BOOL16 WINAPI ShowWindow16( HWND16 hwnd, INT16 cmd )
254 return ShowWindow( WIN_Handle32(hwnd), cmd );
258 /**************************************************************************
259 * CloseWindow (USER.43)
261 BOOL16 WINAPI CloseWindow16( HWND16 hwnd )
263 return CloseWindow( WIN_Handle32(hwnd) );
267 /**************************************************************************
270 BOOL16 WINAPI OpenIcon16( HWND16 hwnd )
272 return OpenIcon( WIN_Handle32(hwnd) );
276 /**************************************************************************
277 * BringWindowToTop (USER.45)
279 BOOL16 WINAPI BringWindowToTop16( HWND16 hwnd )
281 return BringWindowToTop( WIN_Handle32(hwnd) );
285 /**************************************************************************
286 * GetParent (USER.46)
288 HWND16 WINAPI GetParent16( HWND16 hwnd )
290 return WIN_Handle16( GetParent( WIN_Handle32(hwnd) ));
294 /**************************************************************************
297 BOOL16 WINAPI IsWindow16( HWND16 hwnd )
299 CURRENT_STACK16->es = USER_HeapSel;
300 /* don't use WIN_Handle32 here, we don't care about the full handle */
301 return IsWindow( (HWND)(ULONG_PTR)hwnd );
305 /**************************************************************************
308 BOOL16 WINAPI IsChild16( HWND16 parent, HWND16 child )
310 return IsChild( WIN_Handle32(parent), WIN_Handle32(child) );
314 /**************************************************************************
315 * IsWindowVisible (USER.49)
317 BOOL16 WINAPI IsWindowVisible16( HWND16 hwnd )
319 return IsWindowVisible( WIN_Handle32(hwnd) );
323 /**************************************************************************
324 * FindWindow (USER.50)
326 HWND16 WINAPI FindWindow16( LPCSTR className, LPCSTR title )
328 return WIN_Handle16( FindWindowA( className, title ));
332 /**************************************************************************
333 * DestroyWindow (USER.53)
335 BOOL16 WINAPI DestroyWindow16( HWND16 hwnd )
337 return DestroyWindow( WIN_Handle32(hwnd) );
341 /**************************************************************************
342 * MoveWindow (USER.56)
344 BOOL16 WINAPI MoveWindow16( HWND16 hwnd, INT16 x, INT16 y, INT16 cx, INT16 cy, BOOL16 repaint )
346 return MoveWindow( WIN_Handle32(hwnd), x, y, cx, cy, repaint );
350 /**************************************************************************
351 * GetClassName (USER.58)
353 INT16 WINAPI GetClassName16( HWND16 hwnd, LPSTR buffer, INT16 count )
355 return GetClassNameA( WIN_Handle32(hwnd), buffer, count );
359 /**************************************************************************
360 * SetActiveWindow (USER.59)
362 HWND16 WINAPI SetActiveWindow16( HWND16 hwnd )
364 return WIN_Handle16( SetActiveWindow( WIN_Handle32(hwnd) ));
368 /**************************************************************************
369 * GetActiveWindow (USER.60)
371 HWND16 WINAPI GetActiveWindow16(void)
373 return WIN_Handle16( GetActiveWindow() );
377 /**************************************************************************
378 * ScrollWindow (USER.61)
380 void WINAPI ScrollWindow16( HWND16 hwnd, INT16 dx, INT16 dy, const RECT16 *rect,
381 const RECT16 *clipRect )
383 RECT rect32, clipRect32;
385 if (rect) CONV_RECT16TO32( rect, &rect32 );
386 if (clipRect) CONV_RECT16TO32( clipRect, &clipRect32 );
387 ScrollWindow( WIN_Handle32(hwnd), dx, dy, rect ? &rect32 : NULL,
388 clipRect ? &clipRect32 : NULL );
392 /**************************************************************************
393 * SetScrollPos (USER.62)
395 INT16 WINAPI SetScrollPos16( HWND16 hwnd, INT16 nBar, INT16 nPos, BOOL16 redraw )
397 return SetScrollPos( WIN_Handle32(hwnd), nBar, nPos, redraw );
401 /**************************************************************************
402 * GetScrollPos (USER.63)
404 INT16 WINAPI GetScrollPos16( HWND16 hwnd, INT16 nBar )
406 return GetScrollPos( WIN_Handle32(hwnd), nBar );
410 /**************************************************************************
411 * SetScrollRange (USER.64)
413 void WINAPI SetScrollRange16( HWND16 hwnd, INT16 nBar, INT16 MinVal, INT16 MaxVal, BOOL16 redraw )
415 /* Invalid range -> range is set to (0,0) */
416 if ((INT)MaxVal - (INT)MinVal > 0x7fff) MinVal = MaxVal = 0;
417 SetScrollRange( WIN_Handle32(hwnd), nBar, MinVal, MaxVal, redraw );
421 /**************************************************************************
422 * GetScrollRange (USER.65)
424 BOOL16 WINAPI GetScrollRange16( HWND16 hwnd, INT16 nBar, LPINT16 lpMin, LPINT16 lpMax)
427 BOOL ret = GetScrollRange( WIN_Handle32(hwnd), nBar, &min, &max );
428 if (lpMin) *lpMin = min;
429 if (lpMax) *lpMax = max;
434 /**************************************************************************
437 HDC16 WINAPI GetDC16( HWND16 hwnd )
439 return (HDC16)GetDC( WIN_Handle32(hwnd) );
443 /**************************************************************************
444 * GetWindowDC (USER.67)
446 HDC16 WINAPI GetWindowDC16( HWND16 hwnd )
448 return GetDCEx16( hwnd, 0, DCX_USESTYLE | DCX_WINDOW );
452 /**************************************************************************
453 * ReleaseDC (USER.68)
455 INT16 WINAPI ReleaseDC16( HWND16 hwnd, HDC16 hdc )
457 return (INT16)ReleaseDC( WIN_Handle32(hwnd), hdc );
461 /**************************************************************************
462 * EndDialog (USER.88)
464 BOOL16 WINAPI EndDialog16( HWND16 hwnd, INT16 retval )
466 return EndDialog( WIN_Handle32(hwnd), retval );
470 /**************************************************************************
471 * GetDlgItem (USER.91)
473 HWND16 WINAPI GetDlgItem16( HWND16 hwndDlg, INT16 id )
475 return WIN_Handle16( GetDlgItem( WIN_Handle32(hwndDlg), (UINT16) id ));
479 /**************************************************************************
480 * SetDlgItemText (USER.92)
482 void WINAPI SetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR lpString )
484 SendDlgItemMessage16( hwnd, id, WM_SETTEXT, 0, (LPARAM)lpString );
488 /**************************************************************************
489 * GetDlgItemText (USER.93)
491 INT16 WINAPI GetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR str, UINT16 len )
493 return (INT16)SendDlgItemMessage16( hwnd, id, WM_GETTEXT, len, (LPARAM)str );
497 /**************************************************************************
498 * SetDlgItemInt (USER.94)
500 void WINAPI SetDlgItemInt16( HWND16 hwnd, INT16 id, UINT16 value, BOOL16 fSigned )
502 SetDlgItemInt( WIN_Handle32(hwnd), (UINT)(UINT16)id,
503 (UINT)(fSigned ? (INT16) value : (UINT16) value), fSigned );
507 /**************************************************************************
508 * GetDlgItemInt (USER.95)
510 UINT16 WINAPI GetDlgItemInt16( HWND16 hwnd, INT16 id, BOOL16 *translated, BOOL16 fSigned )
515 if (translated) *translated = FALSE;
516 result = GetDlgItemInt( WIN_Handle32(hwnd), (UINT)(UINT16)id, &ok, fSigned );
520 if (((INT)result < -32767) || ((INT)result > 32767)) return 0;
524 if (result > 65535) return 0;
526 if (translated) *translated = TRUE;
527 return (UINT16)result;
531 /**************************************************************************
532 * CheckRadioButton (USER.96)
534 BOOL16 WINAPI CheckRadioButton16( HWND16 hwndDlg, UINT16 firstID,
535 UINT16 lastID, UINT16 checkID )
537 return CheckRadioButton( WIN_Handle32(hwndDlg), firstID, lastID, checkID );
541 /**************************************************************************
542 * CheckDlgButton (USER.97)
544 BOOL16 WINAPI CheckDlgButton16( HWND16 hwnd, INT16 id, UINT16 check )
546 SendDlgItemMessage16( hwnd, id, BM_SETCHECK16, check, 0 );
551 /**************************************************************************
552 * IsDlgButtonChecked (USER.98)
554 UINT16 WINAPI IsDlgButtonChecked16( HWND16 hwnd, UINT16 id )
556 return (UINT16)SendDlgItemMessage16( hwnd, id, BM_GETCHECK16, 0, 0 );
560 /**************************************************************************
561 * DlgDirSelect (USER.99)
563 BOOL16 WINAPI DlgDirSelect16( HWND16 hwnd, LPSTR str, INT16 id )
565 return DlgDirSelectEx16( hwnd, str, 128, id );
569 /**************************************************************************
570 * DlgDirList (USER.100)
572 INT16 WINAPI DlgDirList16( HWND16 hDlg, LPSTR spec, INT16 idLBox,
573 INT16 idStatic, UINT16 attrib )
575 /* according to Win16 docs, DDL_DRIVES should make DDL_EXCLUSIVE
576 * be set automatically (this is different in Win32, and
577 * DIALOG_DlgDirList sends Win32 messages to the control,
579 if (attrib & DDL_DRIVES) attrib |= DDL_EXCLUSIVE;
580 return DlgDirListA( WIN_Handle32(hDlg), spec, idLBox, idStatic, attrib );
584 /**************************************************************************
585 * SendDlgItemMessage (USER.101)
587 LRESULT WINAPI SendDlgItemMessage16( HWND16 hwnd, INT16 id, UINT16 msg,
588 WPARAM16 wParam, LPARAM lParam )
590 HWND16 hwndCtrl = GetDlgItem16( hwnd, id );
591 if (hwndCtrl) return SendMessage16( hwndCtrl, msg, wParam, lParam );
596 /**************************************************************************
597 * MapDialogRect (USER.103)
599 void WINAPI MapDialogRect16( HWND16 hwnd, LPRECT16 rect )
602 MapDialogRect( WIN_Handle32(hwnd), &rect32 );
603 rect->left = rect32.left;
604 rect->right = rect32.right;
605 rect->top = rect32.top;
606 rect->bottom = rect32.bottom;
610 /**************************************************************************
611 * FlashWindow (USER.105)
613 BOOL16 WINAPI FlashWindow16( HWND16 hwnd, BOOL16 bInvert )
615 return FlashWindow( WIN_Handle32(hwnd), bInvert );
619 /**************************************************************************
620 * WindowFromDC (USER.117)
622 HWND16 WINAPI WindowFromDC16( HDC16 hDC )
624 return WIN_Handle16( WindowFromDC( hDC ) );
628 /**************************************************************************
629 * UpdateWindow (USER.124)
631 void WINAPI UpdateWindow16( HWND16 hwnd )
633 RedrawWindow16( hwnd, NULL, 0, RDW_UPDATENOW | RDW_ALLCHILDREN );
637 /**************************************************************************
638 * InvalidateRect (USER.125)
640 void WINAPI InvalidateRect16( HWND16 hwnd, const RECT16 *rect, BOOL16 erase )
642 RedrawWindow16( hwnd, rect, 0, RDW_INVALIDATE | (erase ? RDW_ERASE : 0) );
646 /**************************************************************************
647 * InvalidateRgn (USER.126)
649 void WINAPI InvalidateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase )
651 RedrawWindow16( hwnd, NULL, hrgn, RDW_INVALIDATE | (erase ? RDW_ERASE : 0) );
655 /**************************************************************************
656 * ValidateRect (USER.127)
658 void WINAPI ValidateRect16( HWND16 hwnd, const RECT16 *rect )
660 RedrawWindow16( hwnd, rect, 0, RDW_VALIDATE | RDW_NOCHILDREN );
664 /**************************************************************************
665 * ValidateRgn (USER.128)
667 void WINAPI ValidateRgn16( HWND16 hwnd, HRGN16 hrgn )
669 RedrawWindow16( hwnd, NULL, hrgn, RDW_VALIDATE | RDW_NOCHILDREN );
673 /**************************************************************************
674 * GetClassWord (USER.129)
676 WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset )
678 return GetClassWord( WIN_Handle32(hwnd), offset );
682 /**************************************************************************
683 * SetClassWord (USER.130)
685 WORD WINAPI SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval )
687 return SetClassWord( WIN_Handle32(hwnd), offset, newval );
691 /**************************************************************************
692 * GetWindowWord (USER.133)
694 WORD WINAPI GetWindowWord16( HWND16 hwnd, INT16 offset )
696 return GetWindowWord( WIN_Handle32(hwnd), offset );
700 /**************************************************************************
701 * SetWindowWord (USER.134)
703 WORD WINAPI SetWindowWord16( HWND16 hwnd, INT16 offset, WORD newval )
705 return SetWindowWord( WIN_Handle32(hwnd), offset, newval );
709 /**************************************************************************
710 * OpenClipboard (USER.137)
712 BOOL16 WINAPI OpenClipboard16( HWND16 hwnd )
714 return OpenClipboard( WIN_Handle32(hwnd) );
718 /**************************************************************************
719 * GetClipboardOwner (USER.140)
721 HWND16 WINAPI GetClipboardOwner16(void)
723 return WIN_Handle16( GetClipboardOwner() );
727 /**************************************************************************
728 * SetClipboardViewer (USER.147)
730 HWND16 WINAPI SetClipboardViewer16( HWND16 hwnd )
732 return WIN_Handle16( SetClipboardViewer( WIN_Handle32(hwnd) ));
736 /**************************************************************************
737 * GetClipboardViewer (USER.148)
739 HWND16 WINAPI GetClipboardViewer16(void)
741 return WIN_Handle16( GetClipboardViewer() );
745 /**************************************************************************
746 * ChangeClipboardChain (USER.149)
748 BOOL16 WINAPI ChangeClipboardChain16(HWND16 hwnd, HWND16 hwndNext)
750 return ChangeClipboardChain( WIN_Handle32(hwnd), WIN_Handle32(hwndNext) );
754 /**************************************************************************
755 * GetSystemMenu (USER.156)
757 HMENU16 WINAPI GetSystemMenu16( HWND16 hwnd, BOOL16 revert )
759 return GetSystemMenu( WIN_Handle32(hwnd), revert );
763 /**************************************************************************
766 HMENU16 WINAPI GetMenu16( HWND16 hwnd )
768 return GetMenu( WIN_Handle32(hwnd) );
772 /**************************************************************************
775 BOOL16 WINAPI SetMenu16( HWND16 hwnd, HMENU16 hMenu )
777 return SetMenu( WIN_Handle32(hwnd), hMenu );
781 /**************************************************************************
782 * DrawMenuBar (USER.160)
784 void WINAPI DrawMenuBar16( HWND16 hwnd )
786 DrawMenuBar( WIN_Handle32(hwnd) );
790 /**************************************************************************
791 * HiliteMenuItem (USER.162)
793 BOOL16 WINAPI HiliteMenuItem16( HWND16 hwnd, HMENU16 hMenu, UINT16 id, UINT16 wHilite )
795 return HiliteMenuItem( WIN_Handle32(hwnd), hMenu, id, wHilite );
799 /**************************************************************************
800 * CreateCaret (USER.163)
802 void WINAPI CreateCaret16( HWND16 hwnd, HBITMAP16 bitmap, INT16 width, INT16 height )
804 CreateCaret( WIN_Handle32(hwnd), bitmap, width, height );
808 /**************************************************************************
809 * HideCaret (USER.166)
811 void WINAPI HideCaret16( HWND16 hwnd )
813 HideCaret( WIN_Handle32(hwnd) );
817 /**************************************************************************
818 * ShowCaret (USER.167)
820 void WINAPI ShowCaret16( HWND16 hwnd )
822 ShowCaret( WIN_Handle32(hwnd) );
826 /**************************************************************************
827 * ArrangeIconicWindows (USER.170)
829 UINT16 WINAPI ArrangeIconicWindows16( HWND16 parent)
831 return ArrangeIconicWindows( WIN_Handle32(parent) );
835 /**************************************************************************
836 * SwitchToThisWindow (USER.172)
838 void WINAPI SwitchToThisWindow16( HWND16 hwnd, BOOL16 restore )
840 SwitchToThisWindow( WIN_Handle32(hwnd), restore );
844 /**************************************************************************
845 * KillSystemTimer (USER.182)
847 BOOL16 WINAPI KillSystemTimer16( HWND16 hwnd, UINT16 id )
849 return KillSystemTimer( WIN_Handle32(hwnd), id );
853 /**************************************************************************
854 * SetSysModalWindow (USER.188)
856 HWND16 WINAPI SetSysModalWindow16( HWND16 hwnd )
858 HWND16 old = hwndSysModal;
864 /**************************************************************************
865 * GetSysModalWindow (USER.189)
867 HWND16 WINAPI GetSysModalWindow16(void)
873 /**************************************************************************
874 * GetUpdateRect (USER.190)
876 BOOL16 WINAPI GetUpdateRect16( HWND16 hwnd, LPRECT16 rect, BOOL16 erase )
881 if (!rect) return GetUpdateRect( WIN_Handle32(hwnd), NULL, erase );
882 ret = GetUpdateRect( WIN_Handle32(hwnd), &r, erase );
883 CONV_RECT32TO16( &r, rect );
888 /**************************************************************************
889 * ChildWindowFromPoint (USER.191)
891 HWND16 WINAPI ChildWindowFromPoint16( HWND16 hwndParent, POINT16 pt )
894 CONV_POINT16TO32( &pt, &pt32 );
895 return WIN_Handle16( ChildWindowFromPoint( WIN_Handle32(hwndParent), pt32 ));
899 /**************************************************************************
900 * DlgDirSelectComboBox (USER.194)
902 BOOL16 WINAPI DlgDirSelectComboBox16( HWND16 hwnd, LPSTR str, INT16 id )
904 return DlgDirSelectComboBoxEx16( hwnd, str, 128, id );
908 /**************************************************************************
909 * DlgDirListComboBox (USER.195)
911 INT16 WINAPI DlgDirListComboBox16( HWND16 hDlg, LPSTR spec, INT16 idCBox,
912 INT16 idStatic, UINT16 attrib )
914 return DlgDirListComboBoxA( WIN_Handle32(hDlg), spec, idCBox, idStatic, attrib );
918 /**************************************************************************
919 * GetNextDlgGroupItem (USER.227)
921 HWND16 WINAPI GetNextDlgGroupItem16( HWND16 hwndDlg, HWND16 hwndCtrl,
924 return WIN_Handle16( GetNextDlgGroupItem( WIN_Handle32(hwndDlg),
925 WIN_Handle32(hwndCtrl), fPrevious ));
929 /**************************************************************************
930 * GetNextDlgTabItem (USER.228)
932 HWND16 WINAPI GetNextDlgTabItem16( HWND16 hwndDlg, HWND16 hwndCtrl,
935 return WIN_Handle16( GetNextDlgTabItem( WIN_Handle32(hwndDlg),
936 WIN_Handle32(hwndCtrl), fPrevious ));
940 /**************************************************************************
941 * GetTopWindow (USER.229)
943 HWND16 WINAPI GetTopWindow16( HWND16 hwnd )
945 return WIN_Handle16( GetTopWindow( WIN_Handle32(hwnd) ));
949 /**************************************************************************
950 * GetNextWindow (USER.230)
952 HWND16 WINAPI GetNextWindow16( HWND16 hwnd, WORD flag )
954 if ((flag != GW_HWNDNEXT) && (flag != GW_HWNDPREV)) return 0;
955 return GetWindow16( hwnd, flag );
959 /**************************************************************************
960 * SetWindowPos (USER.232)
962 BOOL16 WINAPI SetWindowPos16( HWND16 hwnd, HWND16 hwndInsertAfter,
963 INT16 x, INT16 y, INT16 cx, INT16 cy, WORD flags)
965 return SetWindowPos( WIN_Handle32(hwnd), full_insert_after_hwnd(hwndInsertAfter),
966 x, y, cx, cy, flags );
970 /**************************************************************************
971 * SetParent (USER.233)
973 HWND16 WINAPI SetParent16( HWND16 hwndChild, HWND16 hwndNewParent )
975 return WIN_Handle16( SetParent( WIN_Handle32(hwndChild), WIN_Handle32(hwndNewParent) ));
979 /**************************************************************************
980 * GetCapture (USER.236)
982 HWND16 WINAPI GetCapture16(void)
984 return WIN_Handle16( GetCapture() );
988 /**************************************************************************
989 * GetUpdateRgn (USER.237)
991 INT16 WINAPI GetUpdateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase )
993 return GetUpdateRgn( WIN_Handle32(hwnd), hrgn, erase );
997 /**************************************************************************
998 * ExcludeUpdateRgn (USER.238)
1000 INT16 WINAPI ExcludeUpdateRgn16( HDC16 hdc, HWND16 hwnd )
1002 return ExcludeUpdateRgn( hdc, WIN_Handle32(hwnd) );
1006 /**************************************************************************
1007 * GetOpenClipboardWindow (USER.248)
1009 HWND16 WINAPI GetOpenClipboardWindow16(void)
1011 return WIN_Handle16( GetOpenClipboardWindow() );
1015 /**************************************************************************
1016 * BeginDeferWindowPos (USER.259)
1018 HDWP16 WINAPI BeginDeferWindowPos16( INT16 count )
1020 return BeginDeferWindowPos( count );
1024 /**************************************************************************
1025 * DeferWindowPos (USER.260)
1027 HDWP16 WINAPI DeferWindowPos16( HDWP16 hdwp, HWND16 hwnd, HWND16 hwndAfter,
1028 INT16 x, INT16 y, INT16 cx, INT16 cy,
1031 return DeferWindowPos( hdwp, WIN_Handle32(hwnd), full_insert_after_hwnd(hwndAfter),
1032 x, y, cx, cy, flags );
1036 /**************************************************************************
1037 * EndDeferWindowPos (USER.261)
1039 BOOL16 WINAPI EndDeferWindowPos16( HDWP16 hdwp )
1041 return EndDeferWindowPos( hdwp );
1045 /**************************************************************************
1046 * GetWindow (USER.262)
1048 HWND16 WINAPI GetWindow16( HWND16 hwnd, WORD rel )
1050 return WIN_Handle16( GetWindow( WIN_Handle32(hwnd), rel ) );
1054 /**************************************************************************
1055 * ShowOwnedPopups (USER.265)
1057 void WINAPI ShowOwnedPopups16( HWND16 owner, BOOL16 fShow )
1059 ShowOwnedPopups( WIN_Handle32(owner), fShow );
1063 /**************************************************************************
1064 * ShowScrollBar (USER.267)
1066 void WINAPI ShowScrollBar16( HWND16 hwnd, INT16 nBar, BOOL16 fShow )
1068 ShowScrollBar( WIN_Handle32(hwnd), nBar, fShow );
1072 /**************************************************************************
1073 * IsZoomed (USER.272)
1075 BOOL16 WINAPI IsZoomed16(HWND16 hwnd)
1077 return IsZoomed( WIN_Handle32(hwnd) );
1081 /**************************************************************************
1082 * GetDlgCtrlID (USER.277)
1084 INT16 WINAPI GetDlgCtrlID16( HWND16 hwnd )
1086 return GetDlgCtrlID( WIN_Handle32(hwnd) );
1090 /**************************************************************************
1091 * GetDesktopHwnd (USER.278)
1093 * Exactly the same thing as GetDesktopWindow(), but not documented.
1094 * Don't ask me why...
1096 HWND16 WINAPI GetDesktopHwnd16(void)
1098 return GetDesktopWindow16();
1102 /**************************************************************************
1103 * SetSystemMenu (USER.280)
1105 BOOL16 WINAPI SetSystemMenu16( HWND16 hwnd, HMENU16 hMenu )
1107 return SetSystemMenu( WIN_Handle32(hwnd), hMenu );
1111 /**************************************************************************
1112 * GetDesktopWindow (USER.286)
1114 HWND16 WINAPI GetDesktopWindow16(void)
1116 return WIN_Handle16( GetDesktopWindow() );
1120 /**************************************************************************
1121 * GetLastActivePopup (USER.287)
1123 HWND16 WINAPI GetLastActivePopup16( HWND16 hwnd )
1125 return WIN_Handle16( GetLastActivePopup( WIN_Handle32(hwnd) ));
1129 /**************************************************************************
1130 * RedrawWindow (USER.290)
1132 BOOL16 WINAPI RedrawWindow16( HWND16 hwnd, const RECT16 *rectUpdate,
1133 HRGN16 hrgnUpdate, UINT16 flags )
1138 CONV_RECT16TO32( rectUpdate, &r );
1139 return RedrawWindow( WIN_Handle32(hwnd), &r, hrgnUpdate, flags );
1141 return RedrawWindow( WIN_Handle32(hwnd), NULL, hrgnUpdate, flags );
1145 /**************************************************************************
1146 * LockWindowUpdate (USER.294)
1148 BOOL16 WINAPI LockWindowUpdate16( HWND16 hwnd )
1150 return LockWindowUpdate( WIN_Handle32(hwnd) );
1154 /**************************************************************************
1155 * ScrollWindowEx (USER.319)
1157 INT16 WINAPI ScrollWindowEx16( HWND16 hwnd, INT16 dx, INT16 dy,
1158 const RECT16 *rect, const RECT16 *clipRect,
1159 HRGN16 hrgnUpdate, LPRECT16 rcUpdate,
1162 RECT rect32, clipRect32, rcUpdate32;
1165 if (rect) CONV_RECT16TO32( rect, &rect32 );
1166 if (clipRect) CONV_RECT16TO32( clipRect, &clipRect32 );
1167 ret = ScrollWindowEx( WIN_Handle32(hwnd), dx, dy, rect ? &rect32 : NULL,
1168 clipRect ? &clipRect32 : NULL, hrgnUpdate,
1169 (rcUpdate) ? &rcUpdate32 : NULL, flags );
1170 if (rcUpdate) CONV_RECT32TO16( &rcUpdate32, rcUpdate );
1175 /**************************************************************************
1176 * FillWindow (USER.324)
1178 void WINAPI FillWindow16( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc, HBRUSH16 hbrush )
1182 GetClientRect( WIN_Handle32(hwnd), &rect );
1183 DPtoLP( hdc, (LPPOINT)&rect, 2 );
1184 CONV_RECT32TO16( &rect, &rc16 );
1185 PaintRect16( hwndParent, hwnd, hdc, hbrush, &rc16 );
1189 /**************************************************************************
1190 * PaintRect (USER.325)
1192 void WINAPI PaintRect16( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc,
1193 HBRUSH16 hbrush, const RECT16 *rect)
1195 if (hbrush <= CTLCOLOR_STATIC)
1197 HWND parent = WIN_Handle32(hwndParent), hwnd32 = WIN_Handle32(hwnd);
1199 if (!parent) return;
1200 hbrush = SendMessageW( parent, WM_CTLCOLORMSGBOX + hbrush, (WPARAM)hdc, (LPARAM)hwnd32 );
1201 if (!hbrush) hbrush = DefWindowProcW( parent, WM_CTLCOLORMSGBOX + hbrush,
1202 (WPARAM)hdc, (LPARAM)hwnd32 );
1204 if (hbrush) FillRect16( hdc, rect, hbrush );
1208 /**************************************************************************
1209 * GetControlBrush (USER.326)
1211 HBRUSH16 WINAPI GetControlBrush16( HWND16 hwnd, HDC16 hdc, UINT16 ctlType )
1214 HWND hwnd32 = WIN_Handle32(hwnd);
1215 HWND parent = GetParent( hwnd32 );
1217 if (!parent) parent = hwnd32;
1218 ret = SendMessageW( parent, WM_CTLCOLORMSGBOX + ctlType, (WPARAM)hdc, (LPARAM)hwnd32 );
1219 if (!ret) ret = DefWindowProcW( parent, WM_CTLCOLORMSGBOX + ctlType,
1220 (WPARAM)hdc, (LPARAM)hwnd32 );
1225 /**************************************************************************
1226 * GetDCEx (USER.359)
1228 HDC16 WINAPI GetDCEx16( HWND16 hwnd, HRGN16 hrgnClip, DWORD flags )
1230 return (HDC16)GetDCEx( WIN_Handle32(hwnd), hrgnClip, flags );
1234 /**************************************************************************
1235 * GetWindowPlacement (USER.370)
1237 BOOL16 WINAPI GetWindowPlacement16( HWND16 hwnd, WINDOWPLACEMENT16 *wp16 )
1239 WINDOWPLACEMENT wpl;
1241 wpl.length = sizeof(wpl);
1242 if (!GetWindowPlacement( WIN_Handle32(hwnd), &wpl )) return FALSE;
1243 wp16->length = sizeof(*wp16);
1244 wp16->flags = wpl.flags;
1245 wp16->showCmd = wpl.showCmd;
1246 CONV_POINT32TO16( &wpl.ptMinPosition, &wp16->ptMinPosition );
1247 CONV_POINT32TO16( &wpl.ptMaxPosition, &wp16->ptMaxPosition );
1248 CONV_RECT32TO16( &wpl.rcNormalPosition, &wp16->rcNormalPosition );
1253 /**************************************************************************
1254 * SetWindowPlacement (USER.371)
1256 BOOL16 WINAPI SetWindowPlacement16( HWND16 hwnd, const WINDOWPLACEMENT16 *wp16 )
1258 WINDOWPLACEMENT wpl;
1260 if (!wp16) return FALSE;
1261 wpl.length = sizeof(wpl);
1262 wpl.flags = wp16->flags;
1263 wpl.showCmd = wp16->showCmd;
1264 wpl.ptMinPosition.x = wp16->ptMinPosition.x;
1265 wpl.ptMinPosition.y = wp16->ptMinPosition.y;
1266 wpl.ptMaxPosition.x = wp16->ptMaxPosition.x;
1267 wpl.ptMaxPosition.y = wp16->ptMaxPosition.y;
1268 wpl.rcNormalPosition.left = wp16->rcNormalPosition.left;
1269 wpl.rcNormalPosition.top = wp16->rcNormalPosition.top;
1270 wpl.rcNormalPosition.right = wp16->rcNormalPosition.right;
1271 wpl.rcNormalPosition.bottom = wp16->rcNormalPosition.bottom;
1272 return SetWindowPlacement( WIN_Handle32(hwnd), &wpl );
1276 /**************************************************************************
1277 * ChildWindowFromPointEx (USER.399)
1279 HWND16 WINAPI ChildWindowFromPointEx16( HWND16 hwndParent, POINT16 pt, UINT16 uFlags)
1282 CONV_POINT16TO32( &pt, &pt32 );
1283 return WIN_Handle16( ChildWindowFromPointEx( WIN_Handle32(hwndParent), pt32, uFlags ));
1287 /**************************************************************************
1288 * GetPriorityClipboardFormat (USER.402)
1290 INT16 WINAPI GetPriorityClipboardFormat16( UINT16 *list, INT16 count )
1294 for (i = 0; i < count; i++)
1295 if (IsClipboardFormatAvailable( list[i] )) return list[i];
1300 /**************************************************************************
1301 * TrackPopupMenu (USER.416)
1303 BOOL16 WINAPI TrackPopupMenu16( HMENU16 hMenu, UINT16 wFlags, INT16 x, INT16 y,
1304 INT16 nReserved, HWND16 hwnd, const RECT16 *lpRect )
1307 if (lpRect) CONV_RECT16TO32( lpRect, &r );
1308 return TrackPopupMenu( hMenu, wFlags, x, y, nReserved,
1309 WIN_Handle32(hwnd), lpRect ? &r : NULL );
1313 /**************************************************************************
1314 * DlgDirSelectEx (USER.422)
1316 BOOL16 WINAPI DlgDirSelectEx16( HWND16 hwnd, LPSTR str, INT16 len, INT16 id )
1318 return DlgDirSelectExA( WIN_Handle32(hwnd), str, len, id );
1322 /**************************************************************************
1323 * DlgDirSelectComboBoxEx (USER.423)
1325 BOOL16 WINAPI DlgDirSelectComboBoxEx16( HWND16 hwnd, LPSTR str, INT16 len,
1328 return DlgDirSelectComboBoxExA( WIN_Handle32(hwnd), str, len, id );
1332 /**************************************************************************
1333 * FindWindowEx (USER.427)
1335 HWND16 WINAPI FindWindowEx16( HWND16 parent, HWND16 child, LPCSTR className, LPCSTR title )
1337 return WIN_Handle16( FindWindowExA( WIN_Handle32(parent), WIN_Handle32(child),
1338 className, title ));
1342 /**************************************************************************
1343 * DrawAnimatedRects (USER.448)
1345 BOOL16 WINAPI DrawAnimatedRects16( HWND16 hwnd, INT16 idAni,
1346 const RECT16* lprcFrom, const RECT16* lprcTo )
1348 RECT rcFrom32, rcTo32;
1349 rcFrom32.left = lprcFrom->left;
1350 rcFrom32.top = lprcFrom->top;
1351 rcFrom32.right = lprcFrom->right;
1352 rcFrom32.bottom = lprcFrom->bottom;
1353 rcTo32.left = lprcTo->left;
1354 rcTo32.top = lprcTo->top;
1355 rcTo32.right = lprcTo->right;
1356 rcTo32.bottom = lprcTo->bottom;
1357 return DrawAnimatedRects( WIN_Handle32(hwnd), idAni, &rcFrom32, &rcTo32 );
1361 /**************************************************************************
1362 * SetInternalWindowPos (USER.461)
1364 void WINAPI SetInternalWindowPos16( HWND16 hwnd, UINT16 showCmd, LPRECT16 rect, LPPOINT16 pt )
1371 rc32.left = rect->left;
1372 rc32.top = rect->top;
1373 rc32.right = rect->right;
1374 rc32.bottom = rect->bottom;
1381 SetInternalWindowPos( WIN_Handle32(hwnd), showCmd,
1382 rect ? &rc32 : NULL, pt ? &pt32 : NULL );
1386 /**************************************************************************
1387 * CalcChildScroll (USER.462)
1389 void WINAPI CalcChildScroll16( HWND16 hwnd, WORD scroll )
1391 return CalcChildScroll( WIN_Handle32(hwnd), scroll );
1395 /**************************************************************************
1396 * ScrollChildren (USER.463)
1398 void WINAPI ScrollChildren16(HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam)
1400 ScrollChildren( WIN_Handle32(hwnd), uMsg, wParam, lParam );
1404 /**************************************************************************
1405 * DragDetect (USER.465)
1407 BOOL16 WINAPI DragDetect16( HWND16 hwnd, POINT16 pt )
1410 CONV_POINT16TO32( &pt, &pt32 );
1411 return DragDetect( WIN_Handle32(hwnd), pt32 );
1415 /**************************************************************************
1416 * SetScrollInfo (USER.475)
1418 INT16 WINAPI SetScrollInfo16( HWND16 hwnd, INT16 nBar, const SCROLLINFO *info, BOOL16 redraw )
1420 return SetScrollInfo( WIN_Handle32(hwnd), nBar, info, redraw );
1424 /**************************************************************************
1425 * GetScrollInfo (USER.476)
1427 BOOL16 WINAPI GetScrollInfo16( HWND16 hwnd, INT16 nBar, LPSCROLLINFO info )
1429 return GetScrollInfo( WIN_Handle32(hwnd), nBar, info );
1433 /**************************************************************************
1434 * EnableScrollBar (USER.482)
1436 BOOL16 WINAPI EnableScrollBar16( HWND16 hwnd, INT16 nBar, UINT16 flags )
1438 return EnableScrollBar( WIN_Handle32(hwnd), nBar, flags );
1442 /**************************************************************************
1443 * GetShellWindow (USER.600)
1445 HWND16 WINAPI GetShellWindow16(void)
1447 return WIN_Handle16( GetShellWindow() );
1451 /**************************************************************************
1452 * GetForegroundWindow (USER.608)
1454 HWND16 WINAPI GetForegroundWindow16(void)
1456 return WIN_Handle16( GetForegroundWindow() );
1460 /**************************************************************************
1461 * SetForegroundWindow (USER.609)
1463 BOOL16 WINAPI SetForegroundWindow16( HWND16 hwnd )
1465 return SetForegroundWindow( WIN_Handle32(hwnd) );
1469 /**************************************************************************
1470 * DrawCaptionTemp (USER.657)
1472 BOOL16 WINAPI DrawCaptionTemp16( HWND16 hwnd, HDC16 hdc, const RECT16 *rect,
1473 HFONT16 hFont, HICON16 hIcon, LPCSTR str, UINT16 uFlags )
1477 if (rect) CONV_RECT16TO32(rect,&rect32);
1479 return DrawCaptionTempA( WIN_Handle32(hwnd), hdc, rect ? &rect32 : NULL,
1480 hFont, hIcon, str, uFlags & 0x1f );
1484 /**************************************************************************
1485 * DrawCaption (USER.660)
1487 BOOL16 WINAPI DrawCaption16( HWND16 hwnd, HDC16 hdc, const RECT16 *rect, UINT16 flags )
1491 if (rect) CONV_RECT16TO32( rect, &rect32 );
1493 return DrawCaption( WIN_Handle32(hwnd), hdc, rect ? &rect32 : NULL, flags );
1497 /**************************************************************************
1498 * GetMenuItemRect (USER.665)
1500 BOOL16 WINAPI GetMenuItemRect16( HWND16 hwnd, HMENU16 hMenu, UINT16 uItem,
1505 if (!rect) return FALSE;
1506 res = GetMenuItemRect( WIN_Handle32(hwnd), hMenu, uItem, &r32 );
1507 CONV_RECT32TO16( &r32, rect );
1512 /**************************************************************************
1513 * SetWindowRgn (USER.668)
1515 INT16 WINAPI SetWindowRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 redraw )
1517 return SetWindowRgn( WIN_Handle32(hwnd), hrgn, redraw );
1521 /**************************************************************************
1522 * MessageBoxIndirect (USER.827)
1524 INT16 WINAPI MessageBoxIndirect16( LPMSGBOXPARAMS16 msgbox )
1526 MSGBOXPARAMSA msgbox32;
1528 msgbox32.cbSize = msgbox->cbSize;
1529 msgbox32.hwndOwner = WIN_Handle32( msgbox->hwndOwner );
1530 msgbox32.hInstance = msgbox->hInstance;
1531 msgbox32.lpszText = MapSL(msgbox->lpszText);
1532 msgbox32.lpszCaption = MapSL(msgbox->lpszCaption);
1533 msgbox32.dwStyle = msgbox->dwStyle;
1534 msgbox32.lpszIcon = MapSL(msgbox->lpszIcon);
1535 msgbox32.dwContextHelpId = msgbox->dwContextHelpId;
1536 msgbox32.lpfnMsgBoxCallback = msgbox->lpfnMsgBoxCallback;
1537 msgbox32.dwLanguageId = msgbox->dwLanguageId;
1538 return MessageBoxIndirectA( &msgbox32 );