2 * Window procedure callbacks definitions
4 * Copyright 1996 Alexandre Julliard
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.
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.
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
21 #ifndef __WINE_WINPROC_H
22 #define __WINE_WINPROC_H
25 #include "wine/winbase16.h"
43 typedef void *HWINDOWPROC
; /* Really a pointer to a WINDOWPROC */
59 extern BOOL
WINPROC_Init(void);
60 extern WNDPROC16
WINPROC_GetProc( HWINDOWPROC proc
, WINDOWPROCTYPE type
);
61 extern BOOL
WINPROC_SetProc( HWINDOWPROC
*pFirst
, WNDPROC16 func
,
62 WINDOWPROCTYPE type
, WINDOWPROCUSER user
);
63 extern void WINPROC_FreeProc( HWINDOWPROC proc
, WINDOWPROCUSER user
);
64 extern WINDOWPROCTYPE
WINPROC_GetProcType( HWINDOWPROC proc
);
66 extern INT
WINPROC_MapMsg32ATo32W( HWND hwnd
, UINT msg
, WPARAM
*pwparam
,
68 extern INT
WINPROC_MapMsg32WTo32A( HWND hwnd
, UINT msg
, WPARAM
*pwparam
,
70 extern INT
WINPROC_MapMsg16To32A( HWND hwnd
, UINT16 msg16
, WPARAM16 wParam16
,
71 UINT
*pmsg32
, WPARAM
*pwparam32
,
73 extern INT
WINPROC_MapMsg16To32W( HWND hwnd
, UINT16 msg16
, WPARAM16 wParam16
,
74 UINT
*pmsg32
, WPARAM
*pwparam32
,
76 extern INT
WINPROC_MapMsg32ATo16( HWND hwnd
, UINT msg32
,
77 WPARAM wParam32
, UINT16
*pmsg16
,
78 WPARAM16
*pwparam16
, LPARAM
*plparam
);
79 extern INT
WINPROC_MapMsg32WTo16( HWND hwnd
, UINT msg32
,
80 WPARAM wParam32
, UINT16
*pmsg16
,
81 WPARAM16
*pwparam16
, LPARAM
*plparam
);
82 extern LRESULT
WINPROC_UnmapMsg32ATo32W( HWND hwnd
, UINT msg
, WPARAM wParam
,
83 LPARAM lParam
, LRESULT result
);
84 extern void WINPROC_UnmapMsg32WTo32A( HWND hwnd
, UINT msg
, WPARAM wParam
,
86 extern LRESULT
WINPROC_UnmapMsg16To32A( HWND hwnd
, UINT msg
, WPARAM wParam
,
87 LPARAM lParam
, LRESULT result
);
88 extern LRESULT
WINPROC_UnmapMsg16To32W( HWND hwnd
, UINT msg
, WPARAM wParam
,
89 LPARAM lParam
, LRESULT result
);
90 extern void WINPROC_UnmapMsg32ATo16( HWND hwnd
, UINT msg
, WPARAM wParam
,
91 LPARAM lParam
, MSGPARAM16
* pm16
);
92 extern void WINPROC_UnmapMsg32WTo16( HWND hwnd
, UINT msg
, WPARAM wParam
,
93 LPARAM lParam
, MSGPARAM16
* pm16
);
95 /* map a Unicode string to a 16-bit pointer */
96 inline static SEGPTR
map_str_32W_to_16( LPCWSTR str
)
101 if (!HIWORD(str
)) return (SEGPTR
)LOWORD(str
);
102 len
= WideCharToMultiByte( CP_ACP
, 0, str
, -1, NULL
, 0, NULL
, NULL
);
103 if ((ret
= HeapAlloc( GetProcessHeap(), 0, len
)))
104 WideCharToMultiByte( CP_ACP
, 0, str
, -1, ret
, len
, NULL
, NULL
);
108 /* unmap a Unicode string that was converted to a 16-bit pointer */
109 inline static void unmap_str_32W_to_16( SEGPTR str
)
111 if (!HIWORD(str
)) return;
112 HeapFree( GetProcessHeap(), 0, MapSL(str
) );
116 /* map a 16-bit pointer to a Unicode string */
117 inline static LPWSTR
map_str_16_to_32W( SEGPTR str
)
122 if (!HIWORD(str
)) return (LPWSTR
)(ULONG_PTR
)LOWORD(str
);
123 len
= MultiByteToWideChar( CP_ACP
, 0, MapSL(str
), -1, NULL
, 0 );
124 if ((ret
= HeapAlloc( GetProcessHeap(), 0, len
* sizeof(WCHAR
) )))
125 MultiByteToWideChar( CP_ACP
, 0, MapSL(str
), -1, ret
, len
);
129 /* unmap a 16-bit pointer that was converted to a Unicode string */
130 inline static void unmap_str_16_to_32W( LPCWSTR str
)
132 if (HIWORD(str
)) HeapFree( GetProcessHeap(), 0, (void *)str
);
135 #endif /* __WINE_WINPROC_H */