blob: a9b2fe0fd47c1a9188cbe0df2e6b55b2855f6980 [file] [log] [blame]
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +00001/*
2 * Win32 structure conversion functions
3 *
4 * Copyright 1996 Martin von Loewis
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00005 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000019 */
20
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000021#include "struct32.h"
Alexandre Julliard0ca051e2002-10-17 16:43:42 +000022#include "wownt32.h"
Alexandre Julliardd23a82b2001-09-19 20:37:04 +000023#include "win.h"
Marcus Meissner317af321999-02-17 13:51:06 +000024#include "winerror.h"
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000025
Alexandre Julliarda3960291999-02-26 11:11:13 +000026void STRUCT32_MSG16to32(const MSG16 *msg16,MSG *msg32)
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000027{
Alexandre Julliardd23a82b2001-09-19 20:37:04 +000028 msg32->hwnd = WIN_Handle32(msg16->hwnd);
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000029 msg32->message=msg16->message;
30 msg32->wParam=msg16->wParam;
31 msg32->lParam=msg16->lParam;
32 msg32->time=msg16->time;
33 msg32->pt.x=msg16->pt.x;
34 msg32->pt.y=msg16->pt.y;
35}
36
Alexandre Julliarda3960291999-02-26 11:11:13 +000037void STRUCT32_MSG32to16(const MSG *msg32,MSG16 *msg16)
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000038{
Michael Stefaniuc2247af32002-09-04 19:37:01 +000039 msg16->hwnd = HWND_16(msg32->hwnd);
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000040 msg16->message=msg32->message;
41 msg16->wParam=msg32->wParam;
42 msg16->lParam=msg32->lParam;
43 msg16->time=msg32->time;
44 msg16->pt.x=msg32->pt.x;
45 msg16->pt.y=msg32->pt.y;
46}
47
Alexandre Julliarda3960291999-02-26 11:11:13 +000048void STRUCT32_MINMAXINFO32to16( const MINMAXINFO *from, MINMAXINFO16 *to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000049{
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +000050 CONV_POINT32TO16( &from->ptReserved, &to->ptReserved );
51 CONV_POINT32TO16( &from->ptMaxSize, &to->ptMaxSize );
52 CONV_POINT32TO16( &from->ptMaxPosition, &to->ptMaxPosition );
53 CONV_POINT32TO16( &from->ptMinTrackSize, &to->ptMinTrackSize );
54 CONV_POINT32TO16( &from->ptMaxTrackSize, &to->ptMaxTrackSize );
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000055}
56
Alexandre Julliarda3960291999-02-26 11:11:13 +000057void STRUCT32_MINMAXINFO16to32( const MINMAXINFO16 *from, MINMAXINFO *to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000058{
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +000059 CONV_POINT16TO32( &from->ptReserved, &to->ptReserved );
60 CONV_POINT16TO32( &from->ptMaxSize, &to->ptMaxSize );
61 CONV_POINT16TO32( &from->ptMaxPosition, &to->ptMaxPosition );
62 CONV_POINT16TO32( &from->ptMinTrackSize, &to->ptMinTrackSize );
63 CONV_POINT16TO32( &from->ptMaxTrackSize, &to->ptMaxTrackSize );
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000064}
65
Alexandre Julliarda3960291999-02-26 11:11:13 +000066void STRUCT32_WINDOWPOS32to16( const WINDOWPOS* from, WINDOWPOS16* to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000067{
Michael Stefaniuc2247af32002-09-04 19:37:01 +000068 to->hwnd = HWND_16(from->hwnd);
69 to->hwndInsertAfter = HWND_16(from->hwndInsertAfter);
Alexandre Julliardd23a82b2001-09-19 20:37:04 +000070 to->x = from->x;
71 to->y = from->y;
72 to->cx = from->cx;
73 to->cy = from->cy;
74 to->flags = from->flags;
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000075}
76
Alexandre Julliarda3960291999-02-26 11:11:13 +000077void STRUCT32_WINDOWPOS16to32( const WINDOWPOS16* from, WINDOWPOS* to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000078{
Alexandre Julliardd23a82b2001-09-19 20:37:04 +000079 to->hwnd = WIN_Handle32(from->hwnd);
80 to->hwndInsertAfter = (from->hwndInsertAfter == (HWND16)-1) ?
81 HWND_TOPMOST : WIN_Handle32(from->hwndInsertAfter);
82 to->x = from->x;
83 to->y = from->y;
84 to->cx = from->cx;
85 to->cy = from->cy;
86 to->flags = from->flags;
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000087}
88
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000089/* The strings are not copied */
Alexandre Julliarda3960291999-02-26 11:11:13 +000090void STRUCT32_CREATESTRUCT32Ato16( const CREATESTRUCTA* from,
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +000091 CREATESTRUCT16* to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +000092{
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +000093 to->lpCreateParams = from->lpCreateParams;
Alexandre Julliarda8a422f2002-11-22 20:43:01 +000094 to->hInstance = HINSTANCE_16(from->hInstance);
95 to->hMenu = HMENU_16(from->hMenu);
Michael Stefaniuc2247af32002-09-04 19:37:01 +000096 to->hwndParent = HWND_16(from->hwndParent);
Alexandre Julliardd23a82b2001-09-19 20:37:04 +000097 to->cy = from->cy;
98 to->cx = from->cx;
99 to->y = from->y;
100 to->x = from->x;
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000101 to->style = from->style;
102 to->dwExStyle = from->dwExStyle;
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +0000103}
104
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000105void STRUCT32_CREATESTRUCT16to32A( const CREATESTRUCT16* from,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000106 CREATESTRUCTA *to )
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +0000107{
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000108 to->lpCreateParams = from->lpCreateParams;
Alexandre Julliarda8a422f2002-11-22 20:43:01 +0000109 to->hInstance = HINSTANCE_32(from->hInstance);
110 to->hMenu = HMENU_32(from->hMenu);
Alexandre Julliardd23a82b2001-09-19 20:37:04 +0000111 to->hwndParent = WIN_Handle32(from->hwndParent);
112 to->cy = from->cy;
113 to->cx = from->cx;
114 to->y = from->y;
115 to->x = from->x;
Alexandre Julliarde2bfa4c1996-05-16 18:21:06 +0000116 to->style = from->style;
117 to->dwExStyle = from->dwExStyle;
Alexandre Julliardd2e1c1a1996-03-09 16:12:43 +0000118}
Alexandre Julliard18f92e71996-07-17 20:02:21 +0000119
120/* The strings are not copied */
Alexandre Julliarda3960291999-02-26 11:11:13 +0000121void STRUCT32_MDICREATESTRUCT32Ato16( const MDICREATESTRUCTA* from,
Alexandre Julliard18f92e71996-07-17 20:02:21 +0000122 MDICREATESTRUCT16* to )
123{
Alexandre Julliarda8a422f2002-11-22 20:43:01 +0000124 to->hOwner = HINSTANCE_16(from->hOwner);
Alexandre Julliardd23a82b2001-09-19 20:37:04 +0000125 to->x = from->x;
126 to->y = from->y;
127 to->cx = from->cx;
128 to->cy = from->cy;
129 to->style = from->style;
Alexandre Julliard18f92e71996-07-17 20:02:21 +0000130 to->lParam = from->lParam;
131}
132
133void STRUCT32_MDICREATESTRUCT16to32A( const MDICREATESTRUCT16* from,
Alexandre Julliarda3960291999-02-26 11:11:13 +0000134 MDICREATESTRUCTA *to )
Alexandre Julliard18f92e71996-07-17 20:02:21 +0000135{
Alexandre Julliarda8a422f2002-11-22 20:43:01 +0000136 to->hOwner = HINSTANCE_32(from->hOwner);
Alexandre Julliardd23a82b2001-09-19 20:37:04 +0000137 to->x = from->x;
138 to->y = from->y;
139 to->cx = from->cx;
140 to->cy = from->cy;
141 to->style = from->style;
Alexandre Julliard18f92e71996-07-17 20:02:21 +0000142 to->lParam = from->lParam;
143}
144