[CRT] Remove useless #undef abort from process.h
[reactos.git] / sdk / include / reactos / winxx.h
1 /*
2 * PROJECT: ReactOS header files
3 * LICENSE: CC-BY-4.0 (https://spdx.org/licenses/CC-BY-4.0.html)
4 * PURPOSE: An unofficial extension of <windowsx.h>
5 * COPYRIGHT: Copyright 2017-2019 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6 */
7
8 #ifndef _INC_WINXX
9 #define _INC_WINXX 8 /* Version 8 */
10
11 #pragma once
12
13 #ifndef _INC_WINDOWS
14 #include <windows.h>
15 #endif
16 #ifndef _INC_WINDOWSX
17 #include <windowsx.h>
18 #endif
19 #ifndef _INC_COMMCTRL
20 #include <commctrl.h>
21 #endif
22 #ifndef _RICHEDIT_
23 #include <richedit.h>
24 #endif
25
26 /* additional message crackers */
27
28 /* void Cls_OnNull(HWND hwnd) */
29 #ifndef HANDLE_WM_NULL
30 #define HANDLE_WM_NULL(hwnd, wParam, lParam, fn) \
31 ((fn)((hwnd)), 0L)
32 #define FORWARD_WM_NULL(hwnd, fn) \
33 ((fn)((hwnd), WM_NULL, 0, 0L), 0L)
34 #endif
35
36 /* INT Cls_OnSetHotKey(HWND hwnd, INT nCode, UINT nOptions) */
37 #ifndef HANDLE_WM_SETHOTKEY
38 #define HANDLE_WM_SETHOTKEY(hwnd, wParam, lParam, fn) \
39 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)LOWORD(wParam), (UINT)HIWORD(wParam))
40 #define FORWARD_WM_SETHOTKEY(hwnd, nCode, nOptions, fn) \
41 (INT)(fn)((hwnd), WM_SETHOTKEY, MAKEWPARAM((nCode), (nOptions)))
42 #endif
43
44 /* INT Cls_OnGetHotKey(HWND hwnd) */
45 #ifndef HANDLE_WM_GETHOTKEY
46 #define HANDLE_WM_GETHOTKEY(hwnd, wParam, lParam, fn) \
47 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
48 #define FORWARD_WM_GETHOTKEY(hwnd, fn) \
49 (INT)(fn)((hwnd), WM_GETHOTKEY, 0, 0L)
50 #endif
51
52 /* void Cls_OnPaintIcon(HWND hwnd) */
53 #ifndef HANDLE_WM_PAINTICON
54 #define HANDLE_WM_PAINTICON(hwnd, wParam, lParam, fn) \
55 ((fn)((hwnd)), 0L)
56 #define FORWARD_WM_PAINTICON(hwnd, fn) \
57 ((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
58 #endif
59
60 /* LRESULT Cls_OnGetObject(HWND hwnd, WPARAM wParam, DWORD dwObjId) */
61 #ifndef HANDLE_WM_GETOBJECT
62 #define HANDLE_WM_GETOBJECT(hwnd, wParam, lParam, fn) \
63 (LRESULT)(fn)((hwnd), (WPARAM)(wParam), (DWORD)(lParam))
64 #define FORWARD_WM_GETOBJECT(hwnd, wParam, dwObjId, fn) \
65 (fn)((hwnd), WM_GETOBJECT, (WPARAM)(wParam), (LPARAM)(DWORD)(dwObjId))
66 #endif
67
68 /* void Cls_OnCancelJournal(HWND hwnd) */
69 #ifndef HANDLE_WM_CANCELJOURNAL
70 #define HANDLE_WM_CANCELJOURNAL(hwnd, wParam, lParam, fn) \
71 ((fn)((hwnd)), 0L)
72 #define FORWARD_WM_CANCELJOURNAL(hwnd, fn) \
73 ((fn)((hwnd), WM_PAINTICON, 0, 0L), 0L)
74 #endif
75
76 /* void Cls_OnInputLangChangeRequest(HWND hwnd, BOOL bFlag, HKL hKL) */
77 #ifndef HANDLE_WM_INPUTLANGCHANGEREQUEST
78 #define HANDLE_WM_INPUTLANGCHANGEREQUEST(hwnd, wParam, lParam, fn) \
79 ((fn)((hwnd), (BOOL)(wParam), (HKL)(lParam)), 0L)
80 #define FORWARD_WM_INPUTLANGCHANGEREQUEST(hwnd, bFlag, hKL, fn) \
81 ((fn)((hwnd), WM_INPUTLANGCHANGEREQUEST, (WPARAM)(BOOL)(bFlag), \
82 (LPARAM)(HKL)(hKL)), 0L)
83 #endif
84
85 /* void Cls_OnInputLangChange(HWND hwnd, DWORD dwCharSet, HKL hKL) */
86 #ifndef HANDLE_WM_INPUTLANGCHANGE
87 #define HANDLE_WM_INPUTLANGCHANGE(hwnd, wParam, lParam, fn) \
88 ((fn)((hwnd), (DWORD)(wParam), (HKL)(lParam)), 0L)
89 #define FORWARD_WM_INPUTLANGCHANGE(hwnd, dwCharSet, hKL, fn) \
90 ((fn)((hwnd), WM_INPUTLANGCHANGE, (WPARAM)(DWORD)(dwCharSet), \
91 (LPARAM)(HKL)(hKL)), 0L)
92 #endif
93
94 /* void Cls_OnTCard(HWND hwnd, UINT idAction, DWORD dwActionData) */
95 #ifndef HANDLE_WM_TCARD
96 #define HANDLE_WM_TCARD(hwnd, wParam, lParam, fn) \
97 ((fn)((hwnd), (UINT)(wParam), (DWORD)(lParam)), 0L)
98 #define FORWARD_WM_TCARD(hwnd, idAction, dwActionData, fn) \
99 ((fn)((hwnd), WM_TCARD, (DWORD)(wParam), (DWORD)(lParam)), 0L)
100 #endif
101
102 /* void Cls_OnHelp(HWND hwnd, LPHELPINFO lpHelpInfo) */
103 #ifndef HANDLE_WM_HELP
104 #define HANDLE_WM_HELP(hwnd, wParam, lParam, fn) \
105 ((fn)((hwnd), (LPHELPINFO)(lParam)), 0L)
106 #define FORWARD_WM_HELP(hwnd, lpHelpInfo, fn) \
107 ((fn)((hwnd), WM_HELP, 0, (LPARAM)(LPHELPINFO)(lpHelpInfo)), 0L)
108 #endif
109
110 /* void Cls_OnUserChanged(HWND hwnd) */
111 #ifndef HANDLE_WM_USERCHANGED
112 #define HANDLE_WM_USERCHANGED(hwnd, wParam, lParam, fn) \
113 ((fn)((hwnd)), 0L)
114 #define FORWARD_WM_USERCHANGED(hwnd, fn) \
115 ((fn)((hwnd), WM_USERCHANGED, 0, 0L), 0L)
116 #endif
117
118 /* INT Cls_OnNotifyFormat(HWND hwnd, HWND hwndTarget, INT nCommand) */
119 #ifndef HANDLE_WM_NOTIFYFORMAT
120 #define HANDLE_WM_NOTIFYFORMAT(hwnd, wParam, lParam, fn) \
121 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (HWND)(wParam), (INT)(lParam))
122 #define FORWARD_WM_NOTIFYFORMAT(hwnd, hwndTarget, nCommand, fn) \
123 (INT)(fn)((hwnd), WM_NOTIFYFORMAT, (WPARAM)(HWND)(hwndTarget), \
124 (LPARAM)(INT)(nCommand))
125 #endif
126
127 /* void Cls_OnStyleChanging(HWND hwnd, UINT nStyleType, LPSTYLESTRUCT lpStyleStruct) */
128 #ifndef HANDLE_WM_STYLECHANGING
129 #define HANDLE_WM_STYLECHANGING(hwnd, wParam, lParam, fn) \
130 ((fn)((hwnd), (UINT)(wParam), (LPSTYLESTRUCT)(lParam)), 0L)
131 #define FORWARD_WM_STYLECHANGING(hwnd, nStyleType, lpStyleStruct, fn) \
132 ((fn)((hwnd), WM_STYLECHANGING, (WPARAM)(UINT)(nStyleType), \
133 (LPARAM)(LPSTYLESTRUCT)(lpStyleStruct)), 0L)
134 #endif
135
136 /* void Cls_OnStyleChanged(HWND hwnd, UINT nStyleType, const STYLESTRUCT *lpStyleStruct) */
137 #ifndef HANDLE_WM_STYLECHANGED
138 #define HANDLE_WM_STYLECHANGED(hwnd, wParam, lParam, fn) \
139 ((fn)((hwnd), (UINT)(wParam), (const STYLESTRUCT *)(lParam)), 0L)
140 #define FORWARD_WM_STYLECHANGED(hwnd, nStyleType, lpStyleStruct, fn) \
141 ((fn)((hwnd), WM_STYLECHANGED, (WPARAM)(UINT)(nStyleType), \
142 (LPARAM)(const STYLESTRUCT *)(lpStyleStruct)), 0L)
143 #endif
144
145 /* HICON Cls_OnGetIcon(HWND hwnd, UINT nType, LPARAM dpi) */
146 #ifndef HANDLE_WM_GETICON
147 #define HANDLE_WM_GETICON(hwnd, wParam, lParam, fn) \
148 (LRESULT)(HICON)(fn)((hwnd), (INT)(wParam), (LPARAM)(lParam))
149 #define FORWARD_WM_GETICON(hwnd, nType, dpi, fn) \
150 (HICON)(fn)((hwnd), WM_GETICON, (WPARAM)(UINT)(nType), (LPARAM)(dpi))
151 #endif
152
153 /* HICON Cls_OnSetIcon(HWND hwnd, UINT nType, HICON hIcon) */
154 #ifndef HANDLE_WM_SETICON
155 #define HANDLE_WM_SETICON(hwnd, wParam, lParam, fn) \
156 (LRESULT)(HICON)(fn)((hwnd), (INT)(wParam), (HICON)(lParam))
157 #define FORWARD_WM_SETICON(hwnd, nType, hIcon, fn) \
158 (HICON)(fn)((hwnd), WM_SETICON, (WPARAM)(UINT)(nType), (LPARAM)(HICON)(hIcon))
159 #endif
160
161 /* void Cls_OnSyncPaint(HWND hwnd) */
162 #ifndef HANDLE_WM_SYNCPAINT
163 #define HANDLE_WM_SYNCPAINT(hwnd, wParam, lParam, fn) \
164 ((fn)((hwnd)), 0L)
165 #define FORWARD_WM_SYNCPAINT(hwnd, fn) \
166 ((fn)((hwnd), WM_SYNCPAINT, 0, 0L), 0L)
167 #endif
168
169 /* void Cls_OnNCXButtonDown(HWND hwnd, BOOL fDoubleClick, UINT nHitTest, WORD fwButton, INT xPos, INT yPos) */
170 #ifndef HANDLE_WM_NCXBUTTONDOWN
171 #define HANDLE_WM_NCXBUTTONDOWN(hwnd, wParam, lParam, fn) \
172 (LRESULT)((fn)((hwnd), FALSE, GET_NCHITTEST_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
173 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
174 #define HANDLE_WM_NCXBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
175 (LRESULT)((fn)((hwnd), TRUE, GET_NCHITTEST_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
176 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
177 #define FORWARD_WM_NCXBUTTONDOWN(hwnd, fDoubleClick, nHitTest, fwButton, xPos, yPos, fn) \
178 ((fn)((hwnd), ((fDoubleClick) ? WM_NCXBUTTONDBLCLK : WM_NCXBUTTONDOWN), \
179 MAKEWPARAM((nHitTest), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
180 #endif
181
182 /* void Cls_OnNCXButtonUp(HWND hwnd, UINT nHitTest, WORD fwButton, INT xPos, INT yPos) */
183 #ifndef HANDLE_WM_NCXBUTTONUP
184 #define HANDLE_WM_NCXBUTTONUP(hwnd, wParam, lParam, fn) \
185 (LRESULT)((fn)((hwnd), GET_NCHITTEST_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
186 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
187 #define FORWARD_WM_NCXBUTTONUP(hwnd, nHitTest, fwButton, xPos, yPos, fn) \
188 ((fn)((hwnd), WM_NCXBUTTONUP, MAKEWPARAM((nHitTest), (fwButton)), \
189 MAKELPARAM((xPos), (yPos))), 0L)
190 #endif
191
192 /* void Cls_OnImeStartComposition(HWND hwnd) */
193 #ifndef HANDLE_WM_IME_STARTCOMPOSITION
194 #define HANDLE_WM_IME_STARTCOMPOSITION(hwnd, wParam, lParam, fn) \
195 ((fn)((hwnd)), 0L)
196 #define FORWARD_WM_IME_STARTCOMPOSITION(hwnd, fn) \
197 ((fn)((hwnd), WM_IME_STARTCOMPOSITION, 0, 0L), 0L)
198 #endif
199
200 /* void Cls_OnImeEndComposition(HWND hwnd) */
201 #ifndef HANDLE_WM_IME_ENDCOMPOSITION
202 #define HANDLE_WM_IME_ENDCOMPOSITION(hwnd, wParam, lParam, fn) \
203 ((fn)((hwnd)), 0L)
204 #define FORWARD_WM_IME_ENDCOMPOSITION(hwnd, fn) \
205 ((fn)((hwnd), WM_IME_ENDCOMPOSITION, 0, 0L), 0L)
206 #endif
207
208 /* void Cls_OnImeComposition(HWND hwnd, WORD wChar, DWORD lAttribute) */
209 #ifndef HANDLE_WM_IME_COMPOSITION
210 #define HANDLE_WM_IME_COMPOSITION(hwnd, wParam, lParam, fn) \
211 ((fn)((hwnd), (WORD)(wParam), (DWORD)(lParam)), 0L)
212 #define FORWARD_WM_IME_COMPOSITION(hwnd, wChar, lAttribute, fn) \
213 ((fn)((hwnd), WM_IME_COMPOSITION, (WPARAM)(WORD)(wChar), (DWORD)(lAttribute)), 0L)
214 #endif
215
216 /* void Cls_OnMenuRButtonUp(HWND hwnd, UINT nPos, HMENU hMenu) */
217 #ifndef HANDLE_WM_MENURBUTTONUP
218 #define HANDLE_WM_MENURBUTTONUP(hwnd, wParam, lParam, fn) \
219 ((fn)((hwnd), (UINT)(wParam), (HMENU)(lParam)), 0L)
220 #define FORWARD_WM_MENURBUTTONUP(hwnd, nPos, hMenu, fn) \
221 ((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), (LPARAM)(HMENU)(hMenu)), 0L)
222 #endif
223
224 /* UINT Cls_OnMenuDrag(HWND hwnd, UINT nPos, HMENU hMenu) */
225 #ifndef HANDLE_WM_MENUDRAG
226 #define HANDLE_WM_MENUDRAG(hwnd, wParam, lParam, fn) \
227 (LRESULT)(UINT)(fn)((hwnd), (UINT)(wParam), (HMENU)(lParam))
228 #define FORWARD_WM_MENUDRAG(hwnd, nPos, hMenu, fn) \
229 (UINT)(fn)((hwnd), WM_MENUDRAG, (WPARAM)(UINT)(nPos), (LPARAM)(HMENU)(hMenu))
230 #endif
231
232 /* UINT Cls_OnMenuGetObject(HWND hwnd, MENUGETOBJECTINFO *pmgoi) */
233 #ifndef HANDLE_WM_MENUGETOBJECT
234 #define HANDLE_WM_MENUGETOBJECT(hwnd, wParam, lParam, fn) \
235 (LRESULT)(UINT)(fn)((hwnd), (MENUGETOBJECTINFO *)(lParam))
236 #define FORWARD_WM_MENUGETOBJECT(hwnd, pmgoi, fn) \
237 (UINT)(fn)((hwnd), WM_MENUGETOBJECT, 0, (LPARAM)(MENUGETOBJECTINFO *)(pmgoi))
238 #endif
239
240 /* void Cls_OnUninitMenuPopup(HWND hwnd, HMENU hMenu, UINT nFlags) */
241 #ifndef HANDLE_WM_UNINITMENUPOPUP
242 #define HANDLE_WM_UNINITMENUPOPUP(hwnd, wParam, lParam, fn) \
243 ((fn)((hwnd), (HMENU)(wParam), (UINT)(lParam)), 0L)
244 #define FORWARD_WM_UNINITMENUPOPUP(hwnd, hMenu, nFlags, fn) \
245 ((fn)((hwnd), WM_UNINITMENUPOPUP, (WPARAM)(HMENU)(hMenu), \
246 (LPARAM)(UINT)(nFlags)), 0L)
247 #endif
248
249 /* void Cls_OnMenuCommand(HWND hwnd, UINT nPos, HMENU hMenu) */
250 #ifndef HANDLE_WM_MENUCOMMAND
251 #define HANDLE_WM_MENUCOMMAND(hwnd, wParam, lParam, fn) \
252 ((fn)((hwnd), (UINT)(wParam), (HMENU)(lParam)), 0L)
253 #define FORWARD_WM_MENUCOMMAND(hwnd, nPos, hMenu, fn) \
254 ((fn)((hwnd), WM_MENURBUTTONUP, (WPARAM)(UINT)(nPos), \
255 (LPARAM)(HMENU)(hMenu)), 0L)
256 #endif
257
258 /* void Cls_OnChangeUIState(HWND hwnd, UINT nAction, UINT nUIElement) */
259 #ifndef HANDLE_WM_CHANGEUISTATE
260 #define HANDLE_WM_CHANGEUISTATE(hwnd, wParam, lParam, fn) \
261 ((fn)((hwnd), (UINT)LOWORD(wParam), (UINT)HIWORD(wParam)), 0L)
262 #define FORWARD_WM_CHANGEUISTATE(hwnd, nAction, nUIElement, fn) \
263 ((fn)((hwnd), WM_CHANGEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
264 #endif
265
266 /* void Cls_OnUpdateUIState(HWND hwnd, UINT nAction, UINT nUIElement) */
267 #ifndef HANDLE_WM_UPDATEUISTATE
268 #define HANDLE_WM_UPDATEUISTATE(hwnd, wParam, lParam, fn) \
269 ((fn)((hwnd), (UINT)LOWORD(wParam), (UINT)HIWORD(wParam)), 0L)
270 #define FORWARD_WM_UPDATEUISTATE(hwnd, nAction, nUIElement, fn) \
271 ((fn)((hwnd), WM_UPDATEUISTATE, MAKEWPARAM((nAction), (nUIElement)), 0L), 0L)
272 #endif
273
274 /* UINT Cls_OnQueryUIState(HWND hwnd) */
275 #ifndef HANDLE_WM_QUERYUISTATE
276 #define HANDLE_WM_QUERYUISTATE(hwnd, wParam, lParam, fn) \
277 (LRESULT)(UINT)(fn)((hwnd))
278 #define FORWARD_WM_QUERYUISTATE(hwnd, fn) \
279 (UINT)(fn)((hwnd), WM_QUERYUISTATE, 0, 0L)
280 #endif
281
282 /* void Cls_OnXButtonDown(HWND hwnd, BOOL fDoubleClick, WORD fwKeys, WORD fwButton, INT xPos, INT yPos) */
283 #ifndef HANDLE_WM_XBUTTONDOWN
284 #define HANDLE_WM_XBUTTONDOWN(hwnd, wParam, lParam, fn) \
285 (LRESULT)((fn)((hwnd), FALSE, GET_KEYSTATE_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
286 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
287 #define HANDLE_WM_XBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
288 (LRESULT)((fn)((hwnd), TRUE, GET_KEYSTATE_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
289 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
290 #define FORWARD_WM_XBUTTONDOWN(hwnd, fDoubleClick, fwKeys, fwButton, xPos, yPos, fn) \
291 ((fn)((hwnd), ((fDoubleClick) ? WM_XBUTTONDBLCLK : WM_XBUTTONDOWN), \
292 MAKEWPARAM((fwKeys), (fwButton)), MAKELPARAM((xPos), (yPos))), 0L)
293 #endif
294
295 /* void Cls_OnXButtonUp(HWND hwnd, WORD fwKeys, WORD fwButton, INT xPos, INT yPos) */
296 #ifndef HANDLE_WM_XBUTTONUP
297 #define HANDLE_WM_XBUTTONUP(hwnd, wParam, lParam, fn) \
298 (LRESULT)((fn)((hwnd), GET_KEYSTATE_WPARAM(wParam), GET_XBUTTON_WPARAM(wParam), \
299 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), TRUE)
300 #define FORWARD_WM_XBUTTONUP(hwnd, fDoubleClick, fwKeys, fwButton, xPos, yPos, fn) \
301 ((fn)((hwnd), WM_XBUTTONUP, MAKEWPARAM((fwKeys), (fwButton)), \
302 MAKELPARAM((xPos), (yPos))), 0L)
303 #endif
304
305 /* void Cls_OnEnterMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu) */
306 #ifndef HANDLE_WM_ENTERMENULOOP
307 #define HANDLE_WM_ENTERMENULOOP(hwnd, wParam, lParam, fn) \
308 ((fn)((hwnd), (BOOL)(wParam)), 0L)
309 #define FORWARD_WM_ENTERMENULOOP(hwnd, bIsTrackPopupMenu, fn) \
310 ((fn)((hwnd), WM_ENTERMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
311 #endif
312
313 /* void Cls_OnExitMenuLoop(HWND hwnd, BOOL bIsTrackPopupMenu) */
314 #ifndef HANDLE_WM_EXITMENULOOP
315 #define HANDLE_WM_EXITMENULOOP(hwnd, wParam, lParam, fn) \
316 ((fn)((hwnd), (BOOL)(wParam)), 0L)
317 #define FORWARD_WM_EXITMENULOOP(hwnd, bIsTrackPopupMenu, fn) \
318 ((fn)((hwnd), WM_EXITMENULOOP, (BOOL)(bIsTrackPopupMenu), 0L), 0L)
319 #endif
320
321 /* void Cls_OnNextMenu(HWND hwnd, INT nCode, LPMDINEXTMENU lpMDINextMenu) */
322 #ifndef HANDLE_WM_NEXTMENU
323 #define HANDLE_WM_NEXTMENU(hwnd, wParam, lParam, fn) \
324 ((fn)((hwnd), (INT)(wParam), (LPMDINEXTMENU)(lParam)), 0L)
325 #define FORWARD_WM_NEXTMENU(hwnd, nCode, lpMDINextMenu, fn) \
326 ((fn)((hwnd), WM_NEXTMENU, (WPARAM)(INT)(nCode), \
327 (LPARAM)(LPMDINEXTMENU)(lpMDINextMenu)), 0L)
328 #endif
329
330 /* void Cls_OnSizing(HWND hwnd, UINT nSide, LPRECT lpRect) */
331 #ifndef HANDLE_WM_SIZING
332 #define HANDLE_WM_SIZING(hwnd, wParam, lParam, fn) \
333 ((fn)((hwnd), (UINT)(wParam), (LPRECT)(lParam)), 0L)
334 #define FORWARD_WM_SIZING(hwnd, nSide, lpRect, fn) \
335 ((fn)((hwnd), WM_SIZING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
336 #endif
337
338 /* void Cls_OnCaptureChanged(HWND hwnd, HWND hwndNewCapture) */
339 #ifndef HANDLE_WM_CAPTURECHANGED
340 #define HANDLE_WM_CAPTURECHANGED(hwnd, wParam, lParam, fn) \
341 ((fn)((hwnd), (HWND)(lParam)), 0L)
342 #define FORWARD_WM_CAPTURECHANGED(hwnd, hwndNewCapture, fn) \
343 ((fn)((hwnd), WM_CAPTURECHANGED, 0, (LPARAM)(HWND)(hwndNewCapture)), 0L)
344 #endif
345
346 /* void Cls_OnMoving(HWND hwnd, UINT nSide, LPRECT lpRect) */
347 #ifndef HANDLE_WM_MOVING
348 #define HANDLE_WM_MOVING(hwnd, wParam, lParam, fn) \
349 ((fn)((hwnd), (UINT)(wParam), (LPRECT)(lParam)), 0L)
350 #define FORWARD_WM_MOVING(hwnd, nSide, lpRect, fn) \
351 ((fn)((hwnd), WM_MOVING, (WPARAM)(UINT)(nSide), (LPARAM)(LPRECT)(lpRect)), 0L)
352 #endif
353
354 /* LRESULT Cls_OnPowerBroadcast(HWND hwnd, UINT nPowerEvent, UINT nEventData) */
355 #ifndef HANDLE_WM_POWERBROADCAST
356 #define HANDLE_WM_POWERBROADCAST(hwnd, wParam, lParam, fn) \
357 (LRESULT)(fn)((hwnd), (UINT)(wParam), (UINT)(lParam))
358 #define FORWARD_WM_POWERBROADCAST(hwnd, nPowerEvent, nEventData, fn) \
359 (LRESULT)(fn)((hwnd), WM_POWERBROADCAST, (WPARAM)(UINT)(nPowerEvent), \
360 (LPARAM)(UINT)(nEventData))
361 #endif
362
363 /* HMENU Cls_MDIRefreshMenu(HWND hwnd) */
364 #ifndef HANDLE_WM_MDIREFRESHMENU
365 #define HANDLE_WM_MDIREFRESHMENU(hwnd, wParam, lParam, fn) \
366 (LRESULT)(HMENU)(fn)((hwnd))
367 #define FORWARD_WM_MDIREFRESHMENU(hwnd, fn) \
368 (HMENU)(fn)((hwnd), WM_MDIREFRESHMENU, 0, 0L)
369 #endif
370
371 /* BOOL Cls_OnImeSetContext(HWND hwnd, BOOL fActive, DWORD dwShow) */
372 #ifndef HANDLE_WM_IME_SETCONTEXT
373 #define HANDLE_WM_IME_SETCONTEXT(hwnd, wParam, lParam, fn) \
374 (LRESULT)(BOOL)(fn)((hwnd), (BOOL)(wParam), (DWORD)(lParam))
375 #define FORWARD_WM_IME_SETCONTEXT(hwnd, fActive, dwShow, fn) \
376 (BOOL)(fn)((hwnd), WM_IME_SETCONTEXT, (WPARAM)(BOOL)(fActive), (LPARAM)(DWORD)(dwShow))
377 #endif
378
379 /* LRESULT Cls_OnImeNotify(HWND hwnd, WPARAM wSubMessage, LPARAM lParam) */
380 #ifndef HANDLE_WM_IME_NOTIFY
381 #define HANDLE_WM_IME_NOTIFY(hwnd, wParam, lParam, fn) \
382 (LRESULT)(fn)((hwnd), (WPARAM)(wParam), (LPARAM)(lParam))
383 #define FORWARD_WM_IME_NOTIFY(hwnd, wSubMessage, lParam, fn) \
384 (LRESULT)(fn)((hwnd), WM_IME_NOTIFY, (WPARAM)(wSubMessage), (LPARAM)(lParam))
385 #endif
386
387 /* LRESULT Cls_OnImeControl(HWND hwnd, WPARAM wSubMessage, LPVOID lpData) */
388 #ifndef HANDLE_WM_IME_CONTROL
389 #define HANDLE_WM_IME_CONTROL(hwnd, wParam, lParam, fn) \
390 (LRESULT)(fn)((hwnd), (WPARAM)(wParam), (LPVOID)(lParam))
391 #define FORWARD_WM_IME_CONTROL(hwnd, wSubMessage, lpData, fn) \
392 (LRESULT)(fn)((hwnd), WM_IME_CONTROL, (WPARAM)(wSubMessage), (LPARAM)(LPVOID)(lpData))
393 #endif
394
395 /* void Cls_OnImeCompositionFull(HWND hwnd) */
396 #ifndef HANDLE_WM_IME_COMPOSITIONFULL
397 #define HANDLE_WM_IME_COMPOSITIONFULL(hwnd, wParam, lParam, fn) \
398 ((fn)((hwnd)), 0L)
399 #define FORWARD_WM_IME_COMPOSITIONFULL(hwnd, compactRatio, fn) \
400 ((fn)((hwnd), WM_IME_COMPOSITIONFULL, 0, 0L), 0L)
401 #endif
402
403 /* void Cls_OnImeSelect(HWND hwnd, BOOL fSelect, HKL hKL) */
404 #ifndef HANDLE_WM_IME_SELECT
405 #define HANDLE_WM_IME_SELECT(hwnd, wParam, lParam, fn) \
406 ((fn)((hwnd), (BOOL)(wParam), (HKL)(lParam)), 0L)
407 #define FORWARD_WM_IME_SELECT(hwnd, fSelect, hKL, fn) \
408 ((fn)((hwnd), WM_IME_SELECT, (WPARAM)(BOOL)(fSelect), (LPARAM)(HKL)(hKL)), 0L)
409 #endif
410
411 /* void Cls_OnImeChar(HWND hwnd, WORD wCharCode, LONG lKeyData) */
412 #ifndef HANDLE_WM_IME_CHAR
413 #define HANDLE_WM_IME_CHAR(hwnd, wParam, lParam, fn) \
414 ((fn)((hwnd), (WORD)(wParam), (LONG)(lParam)), 0L)
415 #define FORWARD_WM_IME_CHAR(hwnd, wCharCode, lKeyData, fn) \
416 ((fn)((hwnd), WM_IME_CHAR, (WPARAM)(WORD)(wCharCode), (LPARAM)(LONG)(lKeyData)), 0L)
417 #endif
418
419 /* LRESULT Cls_OnImeRequest(HWND hwnd, WPARAM wParam, LPARAM lParam) */
420 #ifndef HANDLE_WM_IME_REQUEST
421 #define HANDLE_WM_IME_REQUEST(hwnd, wParam, lParam, fn) \
422 (LRESULT)(fn)((hwnd), (WPARAM)(wParam), (LPARAM)(lParam))
423 #define FORWARD_WM_IME_REQUEST(hwnd, wParam, lParam, fn) \
424 (LRESULT)(fn)((hwnd), WM_IME_REQUEST, (WPARAM)(wParam), (LPARAM)(lParam))
425 #endif
426
427 /* void Cls_OnImeKey(HWND hwnd, BOOL fDown, UINT nVirtKey, LONG lKeyData) */
428 #ifndef HANDLE_WM_IME_KEYDOWN
429 #define HANDLE_WM_IME_KEYDOWN(hwnd, wParam, lParam, fn) \
430 ((fn)((hwnd), TRUE, (WORD)(wParam), (LONG)(lParam)), 0L)
431 #define FORWARD_WM_IME_KEYDOWN(hwnd, fDown, nVirtKey, lKeyData, fn) \
432 ((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
433 (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
434 #define HANDLE_WM_IME_KEYUP(hwnd, wParam, lParam, fn) \
435 ((fn)((hwnd), FALSE, (WORD)(wParam), (LONG)(lParam)), 0L)
436 #define FORWARD_WM_IME_KEYUP(hwnd, fDown, nVirtKey, lKeyData, fn) \
437 ((fn)((hwnd), ((BOOL)(fDown) ? WM_IME_KEYDOWN : WM_IME_KEYUP), \
438 (WPARAM)(UINT)(nVirtKey), (LPARAM)(LONG)(lKeyData)), 0L)
439 #endif
440
441 /* void Cls_OnMouseHover(HWND hwnd, UINT nFlags, INT xPos, INT yPos) */
442 #ifndef HANDLE_WM_MOUSEHOVER
443 #define HANDLE_WM_MOUSEHOVER(hwnd, wParam, lParam, fn) \
444 ((fn)((hwnd), (UINT)(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), 0L)
445 #define FORWARD_WM_MOUSEHOVER(hwnd, nFlags, xPos, yPos, fn) \
446 ((fn)((hwnd), WM_MOUSEHOVER, (WPARAM)(UINT)(nFlags), \
447 MAKELPARAM((xPos), (yPos))), 0L)
448 #endif
449
450 /* void Cls_OnMouseLeave(HWND hwnd) */
451 #ifndef HANDLE_WM_MOUSELEAVE
452 #define HANDLE_WM_MOUSELEAVE(hwnd, wParam, lParam, fn) \
453 ((fn)((hwnd)), 0L)
454 #define FORWARD_WM_MOUSELEAVE(hwnd, fn) \
455 ((fn)((hwnd), WM_MOUSELEAVE, 0, 0L), 0L)
456 #endif
457
458 /* void Cls_OnNCMouseHover(HWND hwnd, UINT nHitTest, INT xPos, INT yPos) */
459 #ifndef HANDLE_WM_NCMOUSEHOVER
460 #define HANDLE_WM_NCMOUSEHOVER(hwnd, wParam, lParam, fn) \
461 ((fn)((hwnd), (INT)(wParam), GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)), 0L)
462 #define FORWARD_WM_NCMOUSEHOVER(hwnd, nHitTest, xPos, yPos, fn) \
463 ((fn)((hwnd), WM_NCMOUSEHOVER, (WPARAM)(UINT)(nHitTest), \
464 MAKELPARAM((xPos), (yPos))), 0L)
465 #endif
466
467 /* void Cls_OnNCMouseLeave(HWND hwnd) */
468 #ifndef HANDLE_WM_NCMOUSELEAVE
469 #define HANDLE_WM_NCMOUSELEAVE(hwnd, wParam, lParam, fn) \
470 ((fn)((hwnd)), 0L)
471 #define FORWARD_WM_NCMOUSELEAVE(hwnd, fn) \
472 ((fn)((hwnd), WM_NCMOUSELEAVE, 0, 0L), 0L)
473 #endif
474
475 /* void Cls_OnPrint(HWND hwnd, HDC hDC, UINT uFlags) */
476 #ifndef HANDLE_WM_PRINT
477 #define HANDLE_WM_PRINT(hwnd, wParam, lParam, fn) \
478 ((fn)((hwnd), (HDC)(wParam), (UINT)(lParam)), 0L)
479 #define FORWARD_WM_PRINT(hwnd, hDC, uFlags, fn) \
480 ((fn)((hwnd), WM_PRINT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
481 #endif
482
483 /* void Cls_OnPrintClient(HWND hwnd, HDC hDC, UINT uFlags) */
484 #ifndef HANDLE_WM_PRINTCLIENT
485 #define HANDLE_WM_PRINTCLIENT(hwnd, wParam, lParam, fn) \
486 ((fn)((hwnd), (HDC)(wParam), (UINT)(lParam)), 0L)
487 #define FORWARD_WM_PRINTCLIENT(hwnd, hDC, uFlags, fn) \
488 ((fn)((hwnd), WM_PRINTCLIENT, (WPARAM)(HDC)(hDC), (LPARAM)(uFlags)), 0L)
489 #endif
490
491 /* BOOL Cls_OnAppCommand(HWND hwnd, HWND hwndTarget, UINT cmd, UINT nDevice, UINT nKey) */
492 #ifndef HANDLE_WM_APPCOMMAND
493 #define HANDLE_WM_APPCOMMAND(hwnd, wParam, lParam, fn) \
494 (LRESULT)(BOOL)(fn)((hwnd), (HWND)(wParam), GET_APPCOMMAND_LPARAM(lParam), \
495 GET_DEVICE_LPARAM(lParam), GET_KEYSTATE_LPARAM(lParam))
496 #define FORWARD_WM_APPCOMMAND(hwnd, hwndTarget, cmd, nDevice, nKey, fn) \
497 (BOOL)(fn)((hwnd), WM_APPCOMMAND, (WPARAM)(hwndTarget), \
498 MAKELPARAM((nKey), ((WORD)(cmd)) | (UINT)(nDevice)))
499 #endif
500
501 /* void Cls_OnEnterSizeMove(HWND hwnd) */
502 #ifndef HANDLE_WM_ENTERSIZEMOVE
503 #define HANDLE_WM_ENTERSIZEMOVE(hwnd, wParam, lParam, fn) \
504 ((fn)((hwnd)), 0L)
505 #define FORWARD_WM_ENTERSIZEMOVE(hwnd, fn) \
506 ((fn)((hwnd), WM_ENTERSIZEMOVE, 0, 0L), 0L)
507 #endif
508
509 /* void Cls_OnExitSizeMove(HWND hwnd) */
510 #ifndef HANDLE_WM_EXITSIZEMOVE
511 #define HANDLE_WM_EXITSIZEMOVE(hwnd, wParam, lParam, fn) \
512 ((fn)((hwnd)), 0L)
513 #define FORWARD_WM_EXITSIZEMOVE(hwnd, fn) \
514 ((fn)((hwnd), WM_EXITSIZEMOVE, 0, 0L), 0L)
515 #endif
516
517 /* HICON Cls_OnQueryDragIcon(HWND hwnd) */
518 #undef HANDLE_WM_QUERYDRAGICON
519 #define HANDLE_WM_QUERYDRAGICON(hwnd, wParam, lParam, fn) \
520 (LRESULT)(DWORD)(UINT)(UINT_PTR)(fn)(hwnd)
521 #undef FORWARD_WM_QUERYDRAGICON
522 #define FORWARD_WM_QUERYDRAGICON(hwnd, fn) \
523 (HICON)(UINT_PTR)(UINT)(DWORD)(fn)((hwnd), WM_QUERYDRAGICON, 0L, 0L)
524
525 /* HWND Cls_MDICreate(HWND hwnd, const LPMDICREATESTRUCT lpmcs) */
526 #undef HANDLE_WM_MDICREATE
527 #define HANDLE_WM_MDICREATE(hwnd, wParam, lParam, fn) \
528 (LRESULT)(DWORD)(UINT)(UINT_PTR)(fn)((hwnd), (LPMDICREATESTRUCT)(lParam))
529 #undef FORWARD_WM_MDICREATE
530 #define FORWARD_WM_MDICREATE(hwnd, lpmcs, fn) \
531 (HWND)(UINT_PTR)(fn)((hwnd), WM_MDICREATE, 0L, (LPARAM)(LPMDICREATESTRUCT)(lpmcs))
532
533 /* BOOL Cls_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized) */
534 #undef HANDLE_WM_NCACTIVATE
535 #define HANDLE_WM_NCACTIVATE(hwnd, wParam, lParam, fn) \
536 (LRESULT)(DWORD)(BOOL)(fn)((hwnd), (BOOL)(wParam), 0L, 0L)
537 #undef FORWARD_WM_NCACTIVATE
538 #define FORWARD_WM_NCACTIVATE(hwnd, fActive, hwndActDeact, fMinimized, fn) \
539 (BOOL)(DWORD)(fn)((hwnd), WM_NCACTIVATE, (WPARAM)(BOOL)(fActive), 0L)
540
541 /* LRESULT Cls_OnSettingChange(HWND hwnd, UINT_PTR wFlag, LPCTSTR pszSection) */
542 #undef HANDLE_WM_SETTINGCHANGE
543 #define HANDLE_WM_SETTINGCHANGE(hwnd,wParam,lParam,fn) \
544 ((fn)((hwnd), (UINT_PTR)(wParam), (LPCTSTR)(LPARAM)(lParam)), 0L)
545 #undef FORWARD_WM_SETTINGCHANGE
546 #define FORWARD_WM_SETTINGCHANGE(hwnd,wFlag,pszSection,fn) \
547 (LRESULT)(fn)((hwnd), WM_SETTINGCHANGE, (WPARAM)(UINT_PTR)(wFlag), (LPARAM)(LPCTSTR)(pszSection))
548
549 /* LONG Edit_OnGetSel(HWND hwnd, LPDWORD lpdwStart, LPDWORD lpdwEnd) */
550 #define HANDLE_EM_GETSEL(hwnd, wParam, lParam, fn) \
551 (LRESULT)(LONG)(fn)((hwnd), (LPDWORD)(wParam), (LPDWORD)(lParam))
552
553 /* void Edit_OnSetSel(HWND hwnd, INT nStart, INT nEnd) */
554 #define HANDLE_EM_SETSEL(hwnd, wParam, lParam, fn) \
555 ((fn)((hwnd), (INT)(wParam), (INT)(lParam)), 0L)
556
557 /* void Edit_OnGetRect(HWND hwnd, LPRECT prc) */
558 #define HANDLE_EM_GETRECT(hwnd, wParam, lParam, fn) \
559 ((fn)((hwnd), (LPRECT)(lParam)), 0L)
560
561 /* void Edit_OnSetRect(HWND hwnd, LPCRECT prc) */
562 #define HANDLE_EM_SETRECT(hwnd, wParam, lParam, fn) \
563 ((fn)((hwnd), (LPCRECT)(lParam)), 0L)
564
565 /* void Edit_OnSetRectNP(HWND hwnd, LPCRECT prc) */
566 #define HANDLE_EM_SETRECTNP(hwnd, wParam, lParam, fn) \
567 ((fn)((hwnd), (LPCRECT)(lParam)), 0L)
568
569 /* DWORD Edit_OnScroll(HWND hwnd, INT nScroll) */
570 #define HANDLE_EM_SCROLL(hwnd, wParam, lParam, fn) \
571 (LRESULT)(DWORD)(fn)((hwnd), (INT)(wParam))
572
573 /* BOOL Edit_OnLineScroll(HWND hwnd, INT cxScroll, INT cyScroll) */
574 #define HANDLE_EM_LINESCROLL(hwnd, wParam, lParam, fn) \
575 (LRESULT)(BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
576
577 /* BOOL Edit_OnScrollCaret(HWND hwnd) */
578 #define HANDLE_EM_SCROLLCARET(hwnd, wParam, lParam, fn) \
579 (LRESULT)(BOOL)(fn)((hwnd))
580
581 /* BOOL Edit_OnGetModify(HWND hwnd) */
582 #define HANDLE_EM_GETMODIFY(hwnd, wParam, lParam, fn) \
583 (LRESULT)(BOOL)(fn)((hwnd))
584
585 /* void Edit_OnSetModify(HWND hwnd, BOOL fModified) */
586 #define HANDLE_EM_SETMODIFY(hwnd, wParam, lParam, fn) \
587 ((fn)((hwnd), (BOOL)(wParam)), 0L)
588
589 /* INT Edit_OnGetLineCount(HWND hwnd) */
590 #define HANDLE_EM_GETLINECOUNT(hwnd, wParam, lParam, fn) \
591 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
592
593 /* INT Edit_OnLineIndex(HWND hwnd, INT line) */
594 #define HANDLE_EM_LINEINDEX(hwnd, wParam, lParam, fn) \
595 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
596
597 /* void Edit_OnSetHandle(HWND hwnd, HLOCAL hloc) */
598 #define HANDLE_EM_SETHANDLE(hwnd, wParam, lParam, fn) \
599 ((fn)((hwnd), (HLOCAL)(wParam)), 0L)
600
601 /* HLOCAL Edit_OnGetHandle(HWND hwnd) */
602 #define HANDLE_EM_GETHANDLE(hwnd, wParam, lParam, fn) \
603 (LRESULT)(HLOCAL)(fn)((hwnd))
604
605 /* INT Edit_OnGetThumb(HWND hwnd) */
606 #define HANDLE_EM_GETTHUMB(hwnd, wParam, lParam, fn) \
607 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
608
609 /* INT Edit_OnLineLength(HWND hwnd, INT ich) */
610 #define HANDLE_EM_LINELENGTH(hwnd, wParam, lParam, fn) \
611 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
612
613 /* void Edit_OnReplaceSel(HWND hwnd, BOOL fCanUndo, LPCTSTR lpszReplace) */
614 #define HANDLE_EM_REPLACESEL(hwnd, wParam, lParam, fn) \
615 ((fn)((hwnd), (BOOL)(wParam), (LPCTSTR)(lParam)), 0L)
616
617 /* INT Edit_OnGetLine(HWND hwnd, INT line, LPCTSTR lpch) */
618 #define HANDLE_EM_GETLINE(hwnd, wParam, lParam, fn) \
619 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
620
621 /* NOTE: EM_LIMITTEXT is same value as EM_SETLIMITTEXT */
622 /* void Edit_OnLimitText(HWND hwnd, LONG cchMax) */
623 #define HANDLE_EM_LIMITTEXT(hwnd, wParam, lParam, fn) \
624 ((fn)((hwnd), (LONG)(wParam)), 0L)
625
626 /* BOOL Edit_OnCanUndo(HWND hwnd) */
627 #define HANDLE_EM_CANUNDO(hwnd, wParam, lParam, fn) \
628 (LRESULT)(BOOL)(fn)((hwnd))
629
630 /* BOOL Edit_OnUndo(HWND hwnd) */
631 #define HANDLE_EM_UNDO(hwnd, wParam, lParam, fn) \
632 (LRESULT)(BOOL)(fn)((hwnd))
633
634 /* BOOL Edit_OnFmtLines(HWND hwnd, BOOL fAddEOL) */
635 #define HANDLE_EM_FMTLINES(hwnd, wParam, lParam, fn) \
636 (LRESULT)(BOOL)(fn)((hwnd), (BOOL)(wParam))
637
638 /* INT Edit_OnLineFromChar(HWND hwnd, INT ich) */
639 #define HANDLE_EM_LINEFROMCHAR(hwnd, wParam, lParam, fn) \
640 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
641
642 /* BOOL Edit_OnSetTabStops(HWND hwnd, INT cTabs, LPDWORD lpdwTabs) */
643 #define HANDLE_EM_SETTABSTOPS(hwnd, wParam, lParam, fn) \
644 (LRESULT)(BOOL)(fn)((hwnd), (INT)(wParam), (LPDWORD)(lParam))
645
646 /* void Edit_OnSetPasswordChar(HWND hwnd, UINT ch) */
647 #define HANDLE_EM_SETPASSWORDCHAR(hwnd, wParam, lParam, fn) \
648 ((fn)((hwnd), (UINT)(wParam)), 0L)
649
650 /* void Edit_OnEmptyUndoBuffer(HWND hwnd) */
651 #define HANDLE_EM_EMPTYUNDOBUFFER(hwnd, wParam, lParam, fn) \
652 ((fn)((hwnd)), 0L)
653
654 /* INT Edit_OnGetFirstVisibleLine(HWND hwnd) */
655 #define HANDLE_EM_GETFIRSTVISIBLELINE(hwnd, wParam, lParam, fn) \
656 (INT)((fn)((hwnd)), 0L)
657
658 /* BOOL Edit_OnSetReadOnly(HWND hwnd, BOOL fReadOnly) */
659 #define HANDLE_EM_SETREADONLY(hwnd, wParam, lParam, fn) \
660 (BOOL)(fn)((hwnd), (BOOL)(wParam))
661
662 /* void Edit_OnSetWordBreakProc(HWND hwnd, EDITWORDBREAKPROC ewbprc) */
663 #define HANDLE_EM_SETWORDBREAKPROC(hwnd, wParam, lParam, fn) \
664 ((fn)((hwnd), (EDITWORDBREAKPROC)(lParam)), 0L)
665
666 /* EDITWORDBREAKPROC Edit_OnGetWordBreakProc(HWND hwnd) */
667 #define HANDLE_EM_GETWORDBREAKPROC(hwnd, wParam, lParam, fn) \
668 (LRESULT)(EDITWORDBREAKPROC)(fn)((hwnd))
669
670 /* UINT Edit_OnGetPasswordChar(HWND hwnd) */
671 #define HANDLE_EM_GETPASSWORDCHAR(hwnd, wParam, lParam, fn) \
672 (LRESULT)(UINT)(UINT)(fn)((hwnd))
673
674 /* void Edit_OnSetMargins(HWND hwnd, UINT fwMargin, WORD wLeft, WORD wRight) */
675 #define HANDLE_EM_SETMARGINS(hwnd, wParam, lParam, fn) \
676 ((fn)((hwnd), (UINT)(wParam), LOWORD(lParam), HIWORD(lParam)), 0L)
677
678 /* DWORD Edit_OnGetMargins(HWND hwnd) */
679 #define HANDLE_EM_GETMARGINS(hwnd, wParam, lParam, fn) \
680 (LRESULT)(DWORD)(fn)((hwnd))
681
682 /* void Edit_OnSetLimitText(HWND hwnd, DWORD cbMax) */
683 #define HANDLE_EM_SETLIMITTEXT(hwnd, wParam, lParam, fn) \
684 ((fn)((hwnd), (DWORD)(wParam)), 0L)
685
686 /* DWORD Edit_OnGetLimitText(HWND hwnd) */
687 #define HANDLE_EM_GETLIMITTEXT(hwnd, wParam, lParam, fn) \
688 (LRESULT)(DWORD)(fn)((hwnd))
689
690 /* void Edit_OnPosFromChar(HWND hwnd, LPPOINT lpPoint, UINT wCharIndex) */
691 #define HANDLE_EM_POSFROMCHAR(hwnd, wParam, lParam, fn) \
692 ((fn)((hwnd), (LPPOINT)(wParam), (UINT)(lParam)), 0L)
693
694 /* LONG Edit_OnCharFromPos(HWND hwnd, INT x, INT y) */
695 #define HANDLE_EM_CHARFROMPOS(hwnd, wParam, lParam, fn) \
696 (LRESULT)(LONG)(fn)((hwnd), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
697
698 /* DWORD Edit_OnSetImeStatus(HWND hwnd, UINT uType, DWORD dwFlags) */
699 #define HANDLE_EM_SETIMESTATUS(hwnd, wParam, lParam, fn) \
700 (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam), (DWORD)(lParam))
701
702 /* DWORD Edit_OnGetImeStatus(HWND hwnd, UINT uType) */
703 #define HANDLE_EM_GETIMESTATUS(hwnd, wParam, lParam, fn) \
704 (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam))
705
706 /* HICON Static_OnSetIcon(HWND hwnd, HICON hIcon) */
707 #define HANDLE_STM_SETICON(hwnd, wParam, lParam, fn) \
708 (LRESULT)(HICON)(fn)((hwnd), (HICON)(wParam))
709
710 /* HICON Static_OnGetIcon(HWND hwnd) */
711 #define HANDLE_STM_GETICON(hwnd, wParam, lParam, fn) \
712 (LRESULT)(HICON)(fn)((hwnd))
713
714 /* HANDLE Static_OnSetImage(HWND hwnd, UINT fImageType, HANDLE hImage) */
715 #define HANDLE_STM_SETIMAGE(hwnd, wParam, lParam, fn) \
716 (LRESULT)(HANDLE)(fn)((hwnd), (UINT)(wParam), (HANDLE)(lParam))
717
718 /* HANDLE Static_OnGetImage(HWND hwnd, UINT fImageType) */
719 #define HANDLE_STM_GETIMAGE(hwnd, wParam, lParam, fn) \
720 (LRESULT)(HANDLE)(fn)((hwnd), (UINT)(wParam))
721
722 /* INT ListBox_OnAddString(HWND hwnd, LPCTSTR lpsz) */
723 #define HANDLE_LB_ADDSTRING(hwnd, wParam, lParam, fn) \
724 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (LPCTSTR)(lParam))
725
726 /* INT ListBox_OnInsertString(HWND hwnd, INT index, LPCTSTR lpsz) */
727 #define HANDLE_LB_INSERTSTRING(hwnd, wParam, lParam, fn) \
728 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
729
730 /* INT ListBox_OnDeleteString(HWND hwnd, INT index) */
731 #define HANDLE_LB_DELETESTRING(hwnd, wParam, lParam, fn) \
732 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
733
734 /* INT ListBox_OnSelItemRangeEx(HWND hwnd, UINT wFirst, UINT wLast) */
735 #define HANDLE_LB_SELITEMRANGEEX(hwnd, wParam, lParam, fn) \
736 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (UINT)(wParam), (UINT)(lParam))
737
738 /* void ListBox_OnResetContent(HWND hwnd) */
739 #define HANDLE_LB_RESETCONTENT(hwnd, wParam, lParam, fn) \
740 ((fn)((hwnd)), 0L)
741
742 /* INT ListBox_OnSetSel(HWND hwnd, BOOL fSelect, UINT index) */
743 #define HANDLE_LB_SETSEL(hwnd, wParam, lParam, fn) \
744 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (BOOL)(wParam), (UINT)(lParam))
745
746 /* INT ListBox_OnSetCurSel(HWND hwnd, INT index) */
747 #define HANDLE_LB_SETCURSEL(hwnd, wParam, lParam, fn) \
748 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
749
750 /* INT ListBox_OnGetSel(HWND hwnd, INT index) */
751 #define HANDLE_LB_GETSEL(hwnd, wParam, lParam, fn) \
752 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
753
754 /* INT ListBox_OnGetCurSel(HWND hwnd) */
755 #define HANDLE_LB_GETCURSEL(hwnd, wParam, lParam, fn) \
756 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
757
758 /* INT ListBox_OnGetText(HWND hwnd, INT index, LPTSTR lpszBuffer) */
759 #define HANDLE_LB_GETTEXT(hwnd, wParam, lParam, fn) \
760 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPTSTR)(lParam))
761
762 /* INT ListBox_OnGetTextLen(HWND hwnd, INT index) */
763 #define HANDLE_LB_GETTEXTLEN(hwnd, wParam, lParam, fn) \
764 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
765
766 /* INT ListBox_OnGetCount(HWND hwnd) */
767 #define HANDLE_LB_GETCOUNT(hwnd, wParam, lParam, fn) \
768 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
769
770 /* INT ListBox_OnSelectString(HWND hwnd, INT indexStart, LPCTSTR lpszFind) */
771 #define HANDLE_LB_SELECTSTRING(hwnd, wParam, lParam, fn) \
772 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
773
774 /* INT ListBox_OnDir(HWND hwnd, UINT uAttrs, LPCTSTR lpszFileSpec) */
775 #define HANDLE_LB_DIR(hwnd, wParam, lParam, fn) \
776 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (UINT)(wParam), (LPCTSTR)(lParam))
777
778 /* INT ListBox_OnGetTopIndex(HWND hwnd) */
779 #define HANDLE_LB_GETTOPINDEX(hwnd, wParam, lParam, fn) \
780 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
781
782 /* INT ListBox_OnFindString(HWND hwnd, INT indexStart, LPCTSTR lpszFind) */
783 #define HANDLE_LB_FINDSTRING(hwnd, wParam, lParam, fn) \
784 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
785
786 /* INT ListBox_OnGetSelCount(HWND hwnd) */
787 #define HANDLE_LB_GETSELCOUNT(hwnd, wParam, lParam, fn) \
788 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
789
790 /* INT ListBox_OnGetSelItems(HWND hwnd, UINT cItems, LPINT lpnItems) */
791 #define HANDLE_LB_GETSELITEMS(hwnd, wParam, lParam, fn) \
792 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (UINT)(wParam), (LPINT)(lParam))
793
794 /* BOOL ListBox_OnSetTabStops(HWND hwnd, UINT cTabs, LPINT lpnTabs) */
795 #define HANDLE_LB_SETTABSTOPS(hwnd, wParam, lParam, fn) \
796 (LRESULT)(BOOL)(fn)((hwnd), (UINT)(wParam), (LPINT)(lParam))
797
798 /* INT ListBox_OnGetHorizontalExtent(HWND hwnd) */
799 #define HANDLE_LB_GETHORIZONTALEXTENT(hwnd, wParam, lParam, fn) \
800 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
801
802 /* void ListBox_OnSetHorizontalExtent(HWND hwnd, INT cxExtent) */
803 #define HANDLE_LB_SETHORIZONTALEXTENT(hwnd, wParam, lParam, fn) \
804 ((fn)((hwnd), (INT)(wParam)), 0L)
805
806 /* void ListBox_OnSetColumnWidth(HWND hwnd, INT cxColumn) */
807 #define HANDLE_LB_SETCOLUMNWIDTH(hwnd, wParam, lParam, fn) \
808 ((fn)((hwnd), (INT)(wParam)), 0L)
809
810 /* INT ListBox_OnAddFile(HWND hwnd, LPCTSTR lpszFilename) */
811 #define HANDLE_LB_ADDFILE(hwnd, wParam, lParam, fn) \
812 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (LPCTSTR)(lParam))
813
814 /* INT ListBox_OnSetTopIndex(HWND hwnd, INT index) */
815 #define HANDLE_LB_SETTOPINDEX(hwnd, wParam, lParam, fn) \
816 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
817
818 /* INT ListBox_OnGetItemRect(HWND hwnd, INT index, RECT FAR *lprc) */
819 #define HANDLE_LB_GETITEMRECT(hwnd, wParam, lParam, fn) \
820 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (RECT FAR *)(lParam))
821
822 /* INT_PTR ListBox_OnGetItemData(HWND hwnd, INT index) */
823 #define HANDLE_LB_GETITEMDATA(hwnd, wParam, lParam, fn) \
824 (LRESULT)(INT_PTR)(fn)((hwnd), (INT)(wParam))
825
826 /* INT_PTR ListBox_OnSetItemData(HWND hwnd, INT index, LPARAM dwData) */
827 #define HANDLE_LB_SETITEMDATA(hwnd, wParam, lParam, fn) \
828 (LRESULT)(INT_PTR)(fn)((hwnd), (INT)(wParam), (lParam))
829
830 /* INT ListBox_OnSelItemRange(HWND hwnd, BOOL fSelect, UINT wFirst, UINT wLast) */
831 #define HANDLE_LB_SELITEMRANGE(hwnd, wParam, lParam, fn) \
832 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (BOOL)(wParam), LOWORD(lParam), HIWORD(lParam))
833
834 /* INT ListBox_OnSetAnchorIndex(HWND hwnd, INT index) */
835 #define HANDLE_LB_SETANCHORINDEX(hwnd, wParam, lParam, fn) \
836 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
837
838 /* INT ListBox_OnGetAnchorIndex(HWND hwnd) */
839 #define HANDLE_LB_GETANCHORINDEX(hwnd, wParam, lParam, fn) \
840 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
841
842 /* INT ListBox_OnSetCaretIndex(HWND hwnd, INT index, BOOL fScroll) */
843 #define HANDLE_LB_SETCARETINDEX(hwnd, wParam, lParam, fn) \
844 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (BOOL)LOWORD(lParam))
845
846 /* INT ListBox_OnGetCaretIndex(HWND hwnd) */
847 #define HANDLE_LB_GETCARETINDEX(hwnd, wParam, lParam, fn) \
848 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
849
850 /* INT ListBox_OnSetItemHeight(HWND hwnd, INT index, INT cyItem) */
851 #define HANDLE_LB_SETITEMHEIGHT(hwnd, wParam, lParam, fn) \
852 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (SHORT)LOWORD(lParam))
853
854 /* INT ListBox_OnGetItemHeight(HWND hwnd, INT index) */
855 #define HANDLE_LB_GETITEMHEIGHT(hwnd, wParam, lParam, fn) \
856 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
857
858 /* INT ListBox_OnFindStringExact(HWND hwnd, INT indexStart, LPCTSTR lpszFind) */
859 #define HANDLE_LB_FINDSTRINGEXACT(hwnd, wParam, lParam, fn) \
860 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
861
862 /* LCID ListBox_OnSetLocale(HWND hwnd, LCID wLocaleID) */
863 #define HANDLE_LB_SETLOCALE(hwnd, wParam, lParam, fn) \
864 (LRESULT)(LCID)(fn)((hwnd), (LCID)(wParam))
865
866 /* LCID ListBox_OnGetLocale(HWND hwnd) */
867 #define HANDLE_LB_GETLOCALE(hwnd, wParam, lParam, fn) \
868 (LRESULT)(LCID)(fn)((hwnd))
869
870 /* INT ListBox_OnSetCount(HWND hwnd, INT cItems) */
871 #define HANDLE_LB_SETCOUNT(hwnd, wParam, lParam, fn) \
872 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
873
874 /* DWORD ListBox_OnInitStorage(HWND hwnd, UINT cItems, DWORD cb) */
875 #define HANDLE_LB_INITSTORAGE(hwnd, wParam, lParam, fn) \
876 (LRESULT)(DWORD)(fn)((hwnd), (UINT)(wParam), (DWORD)(lParam))
877
878 /* DWORD ListBox_OnItemFromPoint(HWND hwnd, INT xPos, INT yPos) */
879 #define HANDLE_LB_ITEMFROMPOINT(hwnd, wParam, lParam, fn) \
880 (LRESULT)(DWORD)(fn)((hwnd), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
881
882 /* TODO: HANDLE_LB_MULTIPLEADDSTRING and HANDLE_LB_GETLISTBOXINFO. */
883
884 /* DWORD ComboBox_OnGetEditSel(HWND hwnd, LPDWORD lpdwStart, LPDWORD lpdwEnd) */
885 #define HANDLE_CB_GETEDITSEL(hwnd, wParam, lParam, fn) \
886 (LRESULT)(DWORD)(fn)((hwnd), (LPDWORD)(wParam), (LPDWORD)(lParam))
887
888 /* void ComboBox_OnLimitText(HWND hwnd, UINT cchLimit) */
889 #define HANDLE_CB_LIMITTEXT(hwnd, wParam, lParam, fn) \
890 ((fn)((hwnd), (UINT)(wParam)), TRUE)
891
892 /* INT ComboBox_OnSetEditSel(HWND hwnd, INT ichStart, INT ichEnd) */
893 #define HANDLE_CB_SETEDITSEL(hwnd, wParam, lParam, fn) \
894 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
895
896 /* INT ComboBox_OnAddString(HWND hwnd, LPCTSTR lpsz) */
897 #define HANDLE_CB_ADDSTRING(hwnd, wParam, lParam, fn) \
898 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (LPCTSTR)(lParam))
899
900 /* INT ComboBox_OnDeleteString(HWND hwnd, INT index) */
901 #define HANDLE_CB_DELETESTRING(hwnd, wParam, lParam, fn) \
902 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
903
904 /* INT ComboBox_OnDir(HWND hwnd, UINT uAttrs, LPCTSTR lpszFileSpec) */
905 #define HANDLE_CB_DIR(hwnd, wParam, lParam, fn) \
906 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (UINT)(wParam), (LPCTSTR)(lParam))
907
908 /* INT ComboBox_OnGetCount(HWND hwnd) */
909 #define HANDLE_CB_GETCOUNT(hwnd, wParam, lParam, fn) \
910 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
911
912 /* INT ComboBox_GetCurSel(HWND hwnd) */
913 #define HANDLE_CB_GETCURSEL(hwnd, wParam, lParam, fn) \
914 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
915
916 /* INT ComboBox_GetLBText(HWND hwnd, INT index, LPTSTR lpszBuffer) */
917 #define HANDLE_CB_GETLBTEXT(hwnd, wParam, lParam, fn) \
918 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPTSTR)(lParam))
919
920 /* INT ComboBox_OnGetLBTextLen(HWND hwnd, INT index) */
921 #define HANDLE_CB_GETLBTEXTLEN(hwnd, wParam, lParam, fn) \
922 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
923
924 /* INT ComboBox_OnInsertString(HWND hwnd, INT index, LPCTSTR lpsz) */
925 #define HANDLE_CB_INSERTSTRING(hwnd, wParam, lParam, fn) \
926 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
927
928 /* void ComboBox_OnResetContent(HWND hwnd) */
929 #define HANDLE_CB_RESETCONTENT(hwnd, wParam, lParam, fn) \
930 (LRESULT)((fn)((hwnd)), CB_OKAY)
931
932 /* INT ComboBox_OnFindString(HWND hwnd, INT indexStart, LPCTSTR lpszFind) */
933 #define HANDLE_CB_FINDSTRING(hwnd, wParam, lParam, fn) \
934 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
935
936 /* INT ComboBox_OnSelectString(HWND hwnd, INT indexStart, LPCTSTR lpszSelect) */
937 #define HANDLE_CB_SELECTSTRING(hwnd, wParam, lParam, fn) \
938 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
939
940 /* INT ComboBox_OnSetCurSel(HWND hwnd, INT index) */
941 #define HANDLE_CB_SETCURSEL(hwnd, wParam, lParam, fn) \
942 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
943
944 /* BOOL ComboBox_OnShowDropDown(HWND hwnd, BOOL fShow) */
945 #define HANDLE_CB_SHOWDROPDOWN(hwnd, wParam, lParam, fn) \
946 (LRESULT)((fn)((hwnd), (BOOL)(wParam)), TRUE)
947
948 /* INT_PTR ComboBox_OnGetItemData(HWND hwnd, INT index) */
949 #define HANDLE_CB_GETITEMDATA(hwnd, wParam, lParam, fn) \
950 (LRESULT)(INT_PTR)(fn)((hwnd), (INT)(wParam))
951
952 /* INT_PTR ComboBox_OnSetItemData(HWND hwnd, INT index, DWORD_PTR dwData) */
953 #define HANDLE_CB_SETITEMDATA(hwnd, wParam, lParam, fn) \
954 (LRESULT)(INT_PTR)(fn)((hwnd), (INT)(wParam), (DWORD_PTR)(lParam))
955
956 /* void ComboBox_OnGetDroppedControlRect(HWND hwnd, RECT FAR *lprc) */
957 #define HANDLE_CB_GETDROPPEDCONTROLRECT(hwnd, wParam, lParam, fn) \
958 (LRESULT)((fn)((hwnd), (RECT FAR *)(lParam)), CB_OKAY)
959
960 /* INT ComboBox_OnSetItemHeight(HWND hwnd, INT index, INT height) */
961 #define HANDLE_CB_SETITEMHEIGHT(hwnd, wParam, lParam, fn) \
962 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
963
964 /* INT ComboBox_OnGetItemHeight(HWND hwnd, INT index) */
965 #define HANDLE_CB_GETITEMHEIGHT(hwnd, wParam, lParam, fn) \
966 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
967
968 /* INT ComboBox_OnSetExtendedUI(HWND hwnd, BOOL fExtended) */
969 #define HANDLE_CB_SETEXTENDEDUI(hwnd, wParam, lParam, fn) \
970 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (BOOL)(wParam))
971
972 /* BOOL ComboBox_OnGetExtendedUI(HWND hwnd) */
973 #define HANDLE_CB_GETEXTENDEDUI(hwnd, wParam, lParam, fn) \
974 (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd))
975
976 /* BOOL ComboBox_OnGetDroppedState(HWND hwnd) */
977 #define HANDLE_CB_GETDROPPEDSTATE(hwnd, wParam, lParam, fn) \
978 (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd))
979
980 /* INT ComboBox_OnFindStringExact(HWND hwnd, INT indexStart, LPCTSTR lpszFind) */
981 #define HANDLE_CB_FINDSTRINGEXACT(hwnd, wParam, lParam, fn) \
982 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (LPCTSTR)(lParam))
983
984 /* LCID ComboBox_OnSetLocale(HWND hwnd, LCID wLocaleID) */
985 #define HANDLE_CB_SETLOCALE(hwnd, wParam, lParam, fn) \
986 (LRESULT)(LCID)(fn)((hwnd), (LCID)(wParam))
987
988 /* LCID ComboBox_OnGetLocale(HWND hwnd) */
989 #define HANDLE_CB_GETLOCALE(hwnd, wParam, lParam, fn) \
990 (LRESULT)(LCID)(fn)((hwnd))
991
992 /* INT ComboBox_OnGetTopIndex(HWND hwnd) */
993 #define HANDLE_CB_GETTOPINDEX(hwnd, wParam, lParam, fn) \
994 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
995
996 /* INT ComboBox_OnSetTopIndex(HWND hwnd, INT index) */
997 #define HANDLE_CB_SETTOPINDEX(hwnd, wParam, lParam, fn) \
998 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
999
1000 /* INT ComboBox_OnGetHorizontalExtent(HWND hwnd) */
1001 #define HANDLE_CB_GETHORIZONTALEXTENT(hwnd, wParam, lParam, fn) \
1002 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
1003
1004 /* void ComboBox_OnSetHorizontalExtent(HWND hwnd, INT cxExtent) */
1005 #define HANDLE_CB_SETHORIZONTALEXTENT(hwnd, wParam, lParam, fn) \
1006 ((fn)((hwnd), (INT)(wParam)), 0L)
1007
1008 /* INT ComboBox_OnGetDroppedWidth(HWND hwnd) */
1009 #define HANDLE_CB_GETDROPPEDWIDTH(hwnd, wParam, lParam, fn) \
1010 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
1011
1012 /* INT ComboBox_OnSetDroppedWidth(HWND hwnd, INT wWidth) */
1013 #define HANDLE_CB_SETDROPPEDWIDTH(hwnd, wParam, lParam, fn) \
1014 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam))
1015
1016 /* INT ComboBox_OnInitStorage(HWND hwnd, INT cItems, DWORD cb) */
1017 #define HANDLE_CB_INITSTORAGE(hwnd, wParam, lParam, fn) \
1018 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (DWORD)(lParam))
1019
1020 /* TODO: CB_MULTIPLEADDSTRING and CB_GETCOMBOBOXINFO */
1021
1022 /* INT ScrollBar_OnSetPos(HWND hwnd, INT nPos, BOOL fRedraw) */
1023 #define HANDLE_SBM_SETPOS(hwnd, wParam, lParam, fn) \
1024 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (BOOL)(lParam))
1025
1026 /* INT ScrollBar_OnGetPos(HWND hwnd) */
1027 #define HANDLE_SBM_GETPOS(hwnd, wParam, lParam, fn) \
1028 (LRESULT)(INT_PTR)(INT)(fn)((hwnd))
1029
1030 /* INT ScrollBar_OnSetRange(HWND hwnd, INT nMinPos, INT nMaxPos) */
1031 #define HANDLE_SBM_SETRANGE(hwnd, wParam, lParam, fn) \
1032 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1033
1034 /* INT ScrollBar_OnSetRangeRedraw(HWND hwnd, INT nMinPos, INT nMaxPos) */
1035 #define HANDLE_SBM_SETRANGEREDRAW(hwnd, wParam, lParam, fn) \
1036 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1037
1038 /* void ScrollBar_OnGetRange(HWND hwnd, LPINT lpnMinPos, LPINT lpnMaxPos) */
1039 #define HANDLE_SBM_GETRANGE(hwnd, wParam, lParam, fn) \
1040 ((fn)((hwnd), (LPINT)(wParam), (LPINT)(lParam)), 0L)
1041
1042 /* BOOL ScrollBar_OnEnableArrows(HWND hwnd, UINT fuArrowFlags) */
1043 #define HANDLE_SBM_ENABLE_ARROWS(hwnd, wParam, lParam, fn) \
1044 (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd), (UINT)(wParam))
1045
1046 /* INT ScrollBar_OnSetScrollInfo(HWND hwnd, BOOL fRedraw, LPSCROLLINFO lpsi) */
1047 #define HANDLE_SBM_SETSCROLLINFO(hwnd, wParam, lParam, fn) \
1048 (LRESULT)(INT_PTR)(INT)(fn)((hwnd), (BOOL)(wParam), (LPSCROLLINFO)(lParam))
1049
1050 /* BOOL ScrollBar_OnGetScrollInfo(HWND hwnd, LPSCROLLINFO lpsi) */
1051 #define HANDLE_SBM_GETSCROLLINFO(hwnd, wParam, lParam, fn) \
1052 (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd), (LPSCROLLINFO)(lParam))
1053
1054 /* BOOL ScrollBar_OnGetScrollBarInfo(HWND hwnd, LPSCROLLBARINFO lpsbi) */
1055 #define HANDLE_SBM_GETSCROLLBARINFO(hwnd, wParam, lParam, fn) \
1056 (LRESULT)(INT_PTR)(BOOL)(fn)((hwnd), (LPSCROLLBARINFO)(lParam))
1057
1058 /* COLORREF ListView_OnGetBkColor(HWND hwnd) */
1059 #define HANDLE_LVM_GETBKCOLOR(hwnd, wParam, lParam, fn) \
1060 (COLORREF)(fn)((hwnd))
1061
1062 /* BOOL ListView_OnSetBkColor(HWND hwnd, COLORREF clrBk) */
1063 #define HANDLE_LVM_SETBKCOLOR(hwnd, wParam, lParam, fn) \
1064 (BOOL)(fn)((hwnd), (COLORREF)(wParam))
1065
1066 /* HIMAGELIST ListView_OnGetImageList(HWND hwnd, INT iImageList) */
1067 #define HANDLE_LVM_GETIMAGELIST(hwnd, wParam, lParam, fn) \
1068 (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam))
1069
1070 /* HIMAGELIST ListView_OnSetImageList(HWND hwnd, INT iImageList, HIMAGELIST himl) */
1071 #define HANDLE_LVM_SETIMAGELIST(hwnd, wParam, lParam, fn) \
1072 (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (HIMAGELIST)(lParam))
1073
1074 /* INT ListView_OnGetItemCount(HWND hwnd) */
1075 #define HANDLE_LVM_GETITEMCOUNT(hwnd, wParam, lParam, fn) \
1076 (INT)(fn)((hwnd))
1077
1078 /* BOOL ListView_OnGetItemA(HWND hwnd, LV_ITEMA *pitem) */
1079 #define HANDLE_LVM_GETITEMA(hwnd, wParam, lParam, fn) \
1080 (BOOL)(fn)((hwnd), (LV_ITEMA *)(lParam))
1081
1082 /* BOOL ListView_OnSetItemA(HWND hwnd, const LV_ITEMA *pitem) */
1083 #define HANDLE_LVM_SETITEMA(hwnd, wParam, lParam, fn) \
1084 (BOOL)(fn)((hwnd), (const LV_ITEMA *)(lParam))
1085
1086 /* INT ListView_OnInsertItemA(HWND hwnd, const LV_ITEMA *pitem) */
1087 #define HANDLE_LVM_INSERTITEMA(hwnd, wParam, lParam, fn) \
1088 (INT)(fn)((hwnd), (const LV_ITEMA *)(lParam))
1089
1090 /* BOOL ListView_OnDeleteItem(HWND hwnd, INT i) */
1091 #define HANDLE_LVM_DELETEITEM(hwnd, wParam, lParam, fn) \
1092 (BOOL)(fn)((hwnd), (INT)(wParam))
1093
1094 /* BOOL ListView_OnDeleteAllItems(HWND hwnd) */
1095 #define HANDLE_LVM_DELETEALLITEMS(hwnd, wParam, lParam, fn) \
1096 (BOOL)(fn)((hwnd))
1097
1098 /* BOOL ListView_OnGetCallbackMask(HWND hwnd) */
1099 #define HANDLE_LVM_GETCALLBACKMASK(hwnd, wParam, lParam, fn) \
1100 (BOOL)(fn)((hwnd))
1101
1102 /* BOOL ListView_OnSetCallbackMask(HWND hwnd, UINT mask) */
1103 #define HANDLE_LVM_SETCALLBACKMASK(hwnd, wParam, lParam, fn) \
1104 (BOOL)(fn)((hwnd), (UINT)(wParam))
1105
1106 /* INT ListView_OnGetNextItem(HWND hwnd, INT i, UINT flags) */
1107 #define HANDLE_LVM_GETNEXTITEM(hwnd, wParam, lParam, fn) \
1108 (INT)(fn)((hwnd), (INT)(wParam), (UINT)(lParam))
1109
1110 /* INT ListView_OnFindItemA(HWND hwnd, INT iStart, const LV_FINDINFOA *plvfi) */
1111 #define HANDLE_LVM_FINDITEMA(hwnd, wParam, lParam, fn) \
1112 (INT)(fn)((hwnd), (INT)(wParam), (const LV_FINDINFOA *)(lParam))
1113
1114 /* BOOL ListView_OnGetItemRect(HWND hwnd, INT i, RECT *prc) */
1115 #define HANDLE_LVM_GETITEMRECT(hwnd, wParam, lParam, fn) \
1116 (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
1117
1118 /* BOOL ListView_OnSetItemPosition(HWND hwnd, INT i, INT x, INT y) */
1119 #define HANDLE_LVM_SETITEMPOSITION(hwnd, wParam, lParam, fn) \
1120 (BOOL)(fn)((hwnd), (INT)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
1121
1122 /* BOOL ListView_OnGetItemPosition(HWND hwnd, INT i, POINT *ppt) */
1123 #define HANDLE_LVM_GETITEMPOSITION(hwnd, wParam, lParam, fn) \
1124 (BOOL)(fn)((hwnd), (INT)(wParam), (POINT *)(lParam))
1125
1126 /* INT ListView_OnGetStringWidthA(HWND hwnd, LPCSTR psz) */
1127 #define HANDLE_LVM_GETSTRINGWIDTHA(hwnd, wParam, lParam, fn) \
1128 (INT)(fn)((hwnd), (LPCSTR)(lParam))
1129
1130 /* INT ListView_OnHitTest(HWND hwnd, LV_HITTESTINFO *pinfo) */
1131 #define HANDLE_LVM_HITTEST(hwnd, wParam, lParam, fn) \
1132 (INT)(fn)((hwnd), (LV_HITTESTINFO *)(lParam))
1133
1134 /* BOOL ListView_OnEnsureVisible(HWND hwnd, INT i, BOOL fPartialOK) */
1135 #define HANDLE_LVM_ENSUREVISIBLE(hwnd, wParam, lParam, fn) \
1136 (BOOL)(fn)((hwnd), (INT)(wParam), (BOOL)(lParam))
1137
1138 /* BOOL ListView_OnScroll(HWND hwnd, INT dx, INT dy) */
1139 #define HANDLE_LVM_SCROLL(hwnd, wParam, lParam, fn) \
1140 (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1141
1142 /* BOOL ListView_OnRedrawItems(HWND hwnd, INT iFirst, INT iLast) */
1143 #define HANDLE_LVM_REDRAWITEMS(hwnd, wParam, lParam, fn) \
1144 (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1145
1146 /* BOOL ListView_OnArrange(HWND hwnd, UINT code) */
1147 #define HANDLE_LVM_ARRANGE(hwnd, wParam, lParam, fn) \
1148 (BOOL)(fn)((hwnd), (UINT)(wParam))
1149
1150 /* HWND ListView_OnEditLabelA(HWND hwnd, INT i) */
1151 #define HANDLE_LVM_EDITLABELA(hwnd, wParam, lParam, fn) \
1152 (LRESULT)(HWND)(fn)((hwnd), (INT)(wParam))
1153
1154 /* HWND ListView_OnGetEditControl(HWND hwnd) */
1155 #define HANDLE_LVM_GETEDITCONTROL(hwnd, wParam, lParam, fn) \
1156 (LRESULT)(HWND)(fn)((hwnd))
1157
1158 /* BOOL ListView_OnGetColumnA(HWND hwnd, INT iCol, LV_COLUMNA *pcol) */
1159 #define HANDLE_LVM_GETCOLUMNA(hwnd, wParam, lParam, fn) \
1160 (BOOL)(fn)((hwnd), (INT)(wParam), (LV_COLUMNA *)(lParam))
1161
1162 /* BOOL ListView_OnSetColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol) */
1163 #define HANDLE_LVM_SETCOLUMNA(hwnd, wParam, lParam, fn) \
1164 (BOOL)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNA *)(lParam))
1165
1166 /* INT ListView_OnInsertColumnA(HWND hwnd, INT iCol, const LV_COLUMNA *pcol) */
1167 #define HANDLE_LVM_INSERTCOLUMNA(hwnd, wParam, lParam, fn) \
1168 (INT)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNA *)(lParam))
1169
1170 /* BOOL ListView_OnDeleteColumn(HWND hwnd, INT iCol) */
1171 #define HANDLE_LVM_DELETECOLUMN(hwnd, wParam, lParam, fn) \
1172 (BOOL)(fn)((hwnd), (INT)(wParam))
1173
1174 /* INT ListView_OnGetColumnWidth(HWND hwnd, INT iCol) */
1175 #define HANDLE_LVM_GETCOLUMNWIDTH(hwnd, wParam, lParam, fn) \
1176 (INT)(fn)((hwnd), (INT)(wParam))
1177
1178 /* BOOL ListView_OnSetColumnWidth(HWND hwnd, INT iCol, INT cx) */
1179 #define HANDLE_LVM_SETCOLUMNWIDTH(hwnd, wParam, lParam, fn) \
1180 (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1181
1182 /* HWND ListView_OnGetHeader(HWND hwnd) */
1183 #define HANDLE_LVM_GETHEADER(hwnd, wParam, lParam, fn) \
1184 (LRESULT)(HWND)(fn)((hwnd))
1185
1186 /* HIMAGELIST ListView_OnCreateDragImage(HWND hwnd, INT i, LPPOINT lpptUpLeft) */
1187 #define HANDLE_LVM_CREATEDRAGIMAGE(hwnd, wParam, lParam, fn) \
1188 (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (LPPOINT)(lParam))
1189
1190 /* BOOL ListView_OnGetViewRect(HWND hwnd, RECT *prc) */
1191 #define HANDLE_LVM_GETVIEWRECT(hwnd, wParam, lParam, fn) \
1192 (BOOL)(fn)((hwnd), (RECT *)(lParam))
1193
1194 /* COLORREF ListView_OnGetTextColor(HWND hwnd) */
1195 #define HANDLE_LVM_GETTEXTCOLOR(hwnd, wParam, lParam, fn) \
1196 (COLORREF)(fn)((hwnd))
1197
1198 /* BOOL ListView_OnSetTextColor(HWND hwnd, COLORREF clrText) */
1199 #define HANDLE_LVM_SETTEXTCOLOR(hwnd, wParam, lParam, fn) \
1200 (BOOL)(fn)((hwnd), (COLORREF)(lParam))
1201
1202 /* COLORREF ListView_OnGetTextBkColor(HWND hwnd) */
1203 #define HANDLE_LVM_GETTEXTBKCOLOR(hwnd, wParam, lParam, fn) \
1204 (COLORREF)(fn)((hwnd))
1205
1206 /* BOOL ListView_OnSetTextBkColor(HWND hwnd, COLORREF clrTextBk) */
1207 #define HANDLE_LVM_SETTEXTBKCOLOR(hwnd, wParam, lParam, fn) \
1208 (BOOL)(fn)((hwnd), (COLORREF)(lParam))
1209
1210 /* INT ListView_OnGetTopIndex(HWND hwnd) */
1211 #define HANDLE_LVM_GETTOPINDEX(hwnd, wParam, lParam, fn) \
1212 (INT)(fn)((hwnd))
1213
1214 /* INT ListView_OnGetCountPerPage(HWND hwnd) */
1215 #define HANDLE_LVM_GETCOUNTPERPAGE(hwnd, wParam, lParam, fn) \
1216 (INT)(fn)((hwnd))
1217
1218 /* BOOL ListView_OnGetOrigin(HWND hwnd, POINT *ppt) */
1219 #define HANDLE_LVM_GETORIGIN(hwnd, wParam, lParam, fn) \
1220 (BOOL)(fn)((hwnd), (POINT *)(lParam))
1221
1222 /* BOOL ListView_OnUpdate(HWND hwnd, INT i) */
1223 #define HANDLE_LVM_UPDATE(hwnd, wParam, lParam, fn) \
1224 (BOOL)(fn)((hwnd), (INT)(wParam))
1225
1226 /* BOOL ListView_OnSetItemState(HWND hwnd, INT i, LV_ITEM *lvi) */
1227 #define HANDLE_LVM_SETITEMSTATE(hwnd, wParam, lParam, fn) \
1228 (BOOL)(fn)((hwnd), (INT)(wParam), (LV_ITEM *)(lParam))
1229
1230 /* UINT ListView_OnGetItemState(HWND hwnd, INT i, UINT mask) */
1231 #define HANDLE_LVM_GETITEMSTATE(hwnd, wParam, lParam, fn) \
1232 (UINT)(fn)((hwnd), (INT)(wParam), (UINT)(lParam))
1233
1234 /* INT ListView_OnGetItemTextA(HWND hwnd, INT i, LV_ITEMA *lvi) */
1235 #define HANDLE_LVM_GETITEMTEXTA(hwnd, wParam, lParam, fn) \
1236 (INT)(fn)((hwnd), (INT)(wParam), (LV_ITEMA *)(lParam))
1237
1238 /* BOOL ListView_OnSetItemTextA(HWND hwnd, INT i, const LV_ITEMA *lvi) */
1239 #define HANDLE_LVM_SETITEMTEXTA(hwnd, wParam, lParam, fn) \
1240 (BOOL)(fn)((hwnd), (INT)(wParam), (const LV_ITEMA *)(lParam))
1241
1242 /* void ListView_OnSetItemCount(HWND hwnd, INT cItems) */
1243 #define HANDLE_LVM_SETITEMCOUNT(hwnd, wParam, lParam, fn) \
1244 ((fn)((hwnd), (INT)(wParam)), 0L)
1245
1246 /* BOOL ListView_OnSortItems(HWND hwnd, LPARAM lPrm, PFNLVCOMPARE pfnCompare) */
1247 #define HANDLE_LVM_SORTITEMS(hwnd, wParam, lParam, fn) \
1248 (BOOL)(fn)((hwnd), (LPARAM)(wParam), (PFNLVCOMPARE)(lParam))
1249
1250 /* void ListView_OnSetItemPosition32(HWND hwnd, INT i, const POINT *ppt) */
1251 #define HANDLE_LVM_SETITEMPOSITION32(hwnd, wParam, lParam, fn) \
1252 ((fn)((hwnd), (INT)(wParam), (const POINT *)(lParam)), 0L)
1253
1254 /* UINT ListView_OnGetSelectedCount(HWND hwnd) */
1255 #define HANDLE_LVM_GETSELECTEDCOUNT(hwnd, wParam, lParam, fn) \
1256 (UINT)(fn)((hwnd))
1257
1258 /* DWORD ListView_OnGetItemSpacing(HWND hwnd, BOOL fSmall) */
1259 #define HANDLE_LVM_GETITEMSPACING(hwnd, wParam, lParam, fn) \
1260 (DWORD)(fn)((hwnd), (BOOL)(wParam))
1261
1262 /* BOOL ListView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz) */
1263 #define HANDLE_LVM_GETISEARCHSTRINGA(hwnd, wParam, lParam, fn) \
1264 (BOOL)(fn)((hwnd), (LPSTR)(lParam))
1265
1266 /* DWORD ListView_OnSetIconSpacing(HWND hwnd, INT cx, INT cy) */
1267 #define HANDLE_LVM_SETICONSPACING(hwnd, wParam, lParam, fn) \
1268 (DWORD)(fn)((hwnd), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
1269
1270 /* DWORD ListView_OnSetExtendedListViewStyle(HWND hwnd, DWORD dwMask, DWORD dw) */
1271 #define HANDLE_LVM_SETEXTENDEDLISTVIEWSTYLE(hwnd, wParam, lParam, fn) \
1272 (DWORD)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
1273
1274 /* DWORD ListView_OnGetExtendedListViewStyle(HWND hwnd) */
1275 #define HANDLE_LVM_GETEXTENDEDLISTVIEWSTYLE(hwnd, wParam, lParam, fn) \
1276 (DWORD)(fn)((hwnd))
1277
1278 /* BOOL ListView_OnGetSubItemRect(HWND hwnd, INT iItem, RECT *prc) */
1279 #define HANDLE_LVM_GETSUBITEMRECT(hwnd, wParam, lParam, fn) \
1280 (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
1281
1282 /* INT ListView_OnSubItemHitTest(HWND hwnd, WPARAM wParam, LPLVHITTESTINFO plvhti) */
1283 #define HANDLE_LVM_SUBITEMHITTEST(hwnd, wParam, lParam, fn) \
1284 (INT)(fn)((hwnd), (wParam), (LPLVHITTESTINFO)(lParam))
1285
1286 /* BOOL ListView_OnSetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi) */
1287 #define HANDLE_LVM_SETCOLUMNORDERARRAY(hwnd, wParam, lParam, fn) \
1288 (BOOL)(fn)((hwnd), (INT)(wParam), (LPINT)(lParam))
1289
1290 /* BOOL ListView_OnGetColumnOrderArray(HWND hwnd, INT iCount, LPINT pi) */
1291 #define HANDLE_LVM_GETCOLUMNORDERARRAY(hwnd, wParam, lParam, fn) \
1292 (BOOL)(fn)((hwnd), (INT)(wParam), (LPINT)(lParam))
1293
1294 /* INT ListView_OnSetHotItem(HWND hwnd, INT i) */
1295 #define HANDLE_LVM_SETHOTITEM(hwnd, wParam, lParam, fn) \
1296 (INT)(fn)((hwnd), (INT)(wParam))
1297
1298 /* INT ListView_OnGetHotItem(HWND hwnd) */
1299 #define HANDLE_LVM_GETHOTITEM(hwnd, wParam, lParam, fn) \
1300 (INT)(fn)((hwnd))
1301
1302 /* HCURSOR ListView_OnSetHotCursor(HWND hwnd, HCURSOR hcur) */
1303 #define HANDLE_LVM_SETHOTCURSOR(hwnd, wParam, lParam, fn) \
1304 (LRESULT)(HCURSOR)(fn)((hwnd), (HCURSOR)(lParam))
1305
1306 /* HCURSOR ListView_OnGetHotCursor(HWND hwnd) */
1307 #define HANDLE_LVM_GETHOTCURSOR(hwnd, wParam, lParam, fn) \
1308 (LRESULT)(HCURSOR)(fn)((hwnd))
1309
1310 /* DWORD ListView_OnApproximateViewRect(HWND hwnd, INT iWidth, INT iHeight, INT iCount) */
1311 #define HANDLE_LVM_APPROXIMATEVIEWRECT(hwnd, wParam, lParam, fn) \
1312 (DWORD)(fn)((hwnd), (INT)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
1313
1314 /* BOOL ListView_OnSetWorkAreas(HWND hwnd, INT nWorkAreas, const RECT *prc) */
1315 #define HANDLE_LVM_SETWORKAREAS(hwnd, wParam, lParam, fn) \
1316 (BOOL)(fn)((hwnd), (INT)(wParam), (const RECT *)(lParam))
1317
1318 /* INT ListView_OnGetSelectionMark(HWND hwnd) */
1319 #define HANDLE_LVM_GETSELECTIONMARK(hwnd, wParam, lParam, fn) \
1320 (INT)(fn)((hwnd))
1321
1322 /* INT ListView_OnSetSelectionMark(HWND hwnd, INT i) */
1323 #define HANDLE_LVM_SETSELECTIONMARK(hwnd, wParam, lParam, fn) \
1324 (INT)(fn)((hwnd), (INT)(lParam))
1325
1326 /* BOOL ListView_OnSetBkImageA(HWND hwnd, const LVBKIMAGEA *plvbki) */
1327 #define HANDLE_LVM_SETBKIMAGEA(hwnd, wParam, lParam, fn) \
1328 (BOOL)(fn)((hwnd), (const LVBKIMAGEA *)(lParam))
1329
1330 /* BOOL ListView_OnGetBkImageA(HWND hwnd, LVBKIMAGEA *plvbki) */
1331 #define HANDLE_LVM_GETBKIMAGEA(hwnd, wParam, lParam, fn) \
1332 (BOOL)(fn)((hwnd), (LVBKIMAGEA *)(lParam))
1333
1334 /* BOOL ListView_OnGetWorkAreas(HWND hwnd, INT nWorkAreas, RECT *prc) */
1335 #define HANDLE_LVM_GETWORKAREAS(hwnd, wParam, lParam, fn) \
1336 (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
1337
1338 /* DWORD ListView_OnSetHoverTime(HWND hwnd, DWORD dwHoverTimeMs) */
1339 #define HANDLE_LVM_SETHOVERTIME(hwnd, wParam, lParam, fn) \
1340 (DWORD)(fn)((hwnd), (DWORD)(lParam))
1341
1342 /* DWORD ListView_OnGetHoverTime(HWND hwnd) */
1343 #define HANDLE_LVM_GETHOVERTIME(hwnd, wParam, lParam, fn) \
1344 (DWORD)(fn)((hwnd))
1345
1346 /* BOOL ListView_OnGetNumberOfWorkAreas(HWND hwnd, UINT *pnWorkAreas) */
1347 #define HANDLE_LVM_GETNUMBEROFWORKAREAS(hwnd, wParam, lParam, fn) \
1348 (BOOL)(fn)((hwnd), (UINT *)(lParam))
1349
1350 /* HWND ListView_OnSetToolTips(HWND hwnd, HWND hwndNewHwnd) */
1351 #define HANDLE_LVM_SETTOOLTIPS(hwnd, wParam, lParam, fn) \
1352 (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam))
1353
1354 /* BOOL ListView_OnGetItemW(HWND hwnd, LV_ITEMW *pitem) */
1355 #define HANDLE_LVM_GETITEMW(hwnd, wParam, lParam, fn) \
1356 (BOOL)(fn)((hwnd), (LV_ITEMW *)(lParam))
1357
1358 /* BOOL ListView_OnSetItemW(HWND hwnd, const LV_ITEMW *pitem) */
1359 #define HANDLE_LVM_SETITEMW(hwnd, wParam, lParam, fn) \
1360 (BOOL)(fn)((hwnd), (const LV_ITEMW *)(lParam))
1361
1362 /* INT ListView_OnInsertItemW(HWND hwnd, const LV_ITEMW *pitem) */
1363 #define HANDLE_LVM_INSERTITEMW(hwnd, wParam, lParam, fn) \
1364 (INT)(fn)((hwnd), (const LV_ITEMW *)(lParam))
1365
1366 /* HWND ListView_OnGetToolTips(HWND hwnd) */
1367 #define HANDLE_LVM_GETTOOLTIPS(hwnd, wParam, lParam, fn) \
1368 (LRESULT)(HWND)(fn)((hwnd))
1369
1370 /* BOOL ListView_OnSortItemsEx(HWND hwnd, PFNLVCOMPARE pfnCompare, LPARAM lPrm) */
1371 #define HANDLE_LVM_SORTITEMSEX(hwnd, wParam, lParam, fn) \
1372 (BOOL)(fn)((hwnd), (PFNLVCOMPARE)(lParam), (LPARAM)(wParam))
1373
1374 /* INT ListView_OnFindItemW(HWND hwnd, INT iStart, const LV_FINDINFOW *plvfi) */
1375 #define HANDLE_LVM_FINDITEMW(hwnd, wParam, lParam, fn) \
1376 (INT)(fn)((hwnd), (INT)(wParam), (const LV_FINDINFOW *)(lParam))
1377
1378 /* INT ListView_OnGetStringWidthW(HWND hwnd, LPCWSTR psz) */
1379 #define HANDLE_LVM_GETSTRINGWIDTHW(hwnd, wParam, lParam, fn) \
1380 (INT)(fn)((hwnd), (LPCWSTR)(lParam))
1381
1382 #if NTDDI_VERSION >= 0x06000000
1383 /* UINT ListView_OnGetGroupState(HWND hwnd, DWORD dwGroupId, DWORD dwMask) */
1384 #define HANDLE_LVM_GETGROUPSTATE(hwnd, wParam, lParam, fn) \
1385 (UINT)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
1386
1387 /* INT ListView_OnGetFocusedGroup(HWND hwnd) */
1388 #define HANDLE_LVM_GETFOCUSEDGROUP(hwnd, wParam, lParam, fn) \
1389 (INT)(fn)((hwnd))
1390 #endif
1391
1392 /* INT ListView_OnGetColumnW(HWND hwnd, INT iCol) */
1393 #define HANDLE_LVM_GETCOLUMNW(hwnd, wParam, lParam, fn) \
1394 (INT)(fn)((hwnd), (INT)(wParam))
1395
1396 /* BOOL ListView_OnSetColumnW(HWND hwnd, INT iCol, INT cx) */
1397 #define HANDLE_LVM_SETCOLUMNW(hwnd, wParam, lParam, fn) \
1398 (BOOL)(fn)((hwnd), (INT)(wParam), (INT)(lParam))
1399
1400 /* INT ListView_OnInsertColumnW(HWND hwnd, INT iCol, const LV_COLUMNW *pcol) */
1401 #define HANDLE_LVM_INSERTCOLUMNW(hwnd, wParam, lParam, fn) \
1402 (INT)(fn)((hwnd), (INT)(wParam), (const LV_COLUMNW *)(lParam))
1403
1404 #if NTDDI_VERSION >= 0x06000000
1405 /* BOOL ListView_OnGetGroupRect(HWND hwnd, INT iGroupId, RECT *prc) */
1406 #define HANDLE_LVM_GETGROUPRECT(hwnd, wParam, lParam, fn) \
1407 (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
1408 #endif
1409
1410 /* INT ListView_OnGetItemTextW(HWND hwnd, INT i, LV_ITEMW *pitem) */
1411 #define HANDLE_LVM_GETITEMTEXTW(hwnd, wParam, lParam, fn) \
1412 (INT)(fn)((hwnd), (INT)(wParam), (LV_ITEMW *)(lParam))
1413
1414 /* INT ListView_OnSetItemTextW(HWND hwnd, INT i, const LV_ITEMW *pitem) */
1415 #define HANDLE_LVM_SETITEMTEXTW(hwnd, wParam, lParam, fn) \
1416 (INT)(fn)((hwnd), (INT)(wParam), (const LV_ITEMW *)(lParam))
1417
1418 /* BOOL ListView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz) */
1419 #define HANDLE_LVM_GETISEARCHSTRINGW(hwnd, wParam, lParam, fn) \
1420 (BOOL)(fn)((hwnd), (LPWSTR)(lParam))
1421
1422 /* HWND ListView_OnEditLabelW(HWND hwnd, INT i) */
1423 #define HANDLE_LVM_EDITLABELW(hwnd, wParam, lParam, fn) \
1424 (LRESULT)(HWND)(fn)((hwnd), (INT)(wParam))
1425
1426 /* BOOL ListView_OnSetBkImageW(HWND hwnd, const LVBKIMAGEW *plvbki) */
1427 #define HANDLE_LVM_SETBKIMAGEW(hwnd, wParam, lParam, fn) \
1428 (BOOL)(fn)((hwnd), (const LVBKIMAGEW *)(lParam))
1429
1430 /* BOOL ListView_OnGetBkImageW(HWND hwnd, LVBKIMAGEW *plvbki) */
1431 #define HANDLE_LVM_GETBKIMAGEW(hwnd, wParam, lParam, fn) \
1432 (BOOL)(fn)((hwnd), (LVBKIMAGEW *)(lParam))
1433
1434 /* void ListView_OnSetSelectedColumn(HWND hwnd, INT iCol) */
1435 #define HANDLE_LVM_SETSELECTEDCOLUMN(hwnd, wParam, lParam, fn) \
1436 ((fn)((hwnd), (INT)(wParam)), 0L)
1437
1438 /* LRESULT ListView_OnSetTileWidth(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1439 #define HANDLE_LVM_SETTILEWIDTH(hwnd, wParam, lParam, fn) \
1440 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1441
1442 /* DWORD ListView_OnSetView(HWND hwnd, DWORD iView) */
1443 #define HANDLE_LVM_SETVIEW(hwnd, wParam, lParam, fn) \
1444 (DWORD)(fn)((hwnd), (DWORD)(wParam))
1445
1446 /* DWORD ListView_OnGetView(HWND hwnd) */
1447 #define HANDLE_LVM_GETVIEW(hwnd, wParam, lParam, fn) \
1448 (DWORD)(fn)((hwnd))
1449
1450 #if NTDDI_VERSION >= 0x06000000
1451 /* INT ListView_OnInsertGroup(HWND hwnd, INT iGroupId, const LVGROUP *pGroup) */
1452 #define HANDLE_LVM_INSERTGROUP(hwnd, wParam, lParam, fn) \
1453 (INT)(fn)((hwnd), (INT)(wParam), (const LVGROUP *)(lParam))
1454
1455 /* INT ListView_OnSetGroupInfo(HWND hwnd, INT iGroupId, const LVGROUP *pGroup) */
1456 #define HANDLE_LVM_SETGROUPINFO(hwnd, wParam, lParam, fn) \
1457 (INT)(fn)((hwnd), (INT)(wParam), (const LVGROUP *)(lParam))
1458
1459 /* INT ListView_OnGetGroupInfo(HWND hwnd, INT iGroupId, LVGROUP *pGroup) */
1460 #define HANDLE_LVM_GETGROUPINFO(hwnd, wParam, lParam, fn) \
1461 (INT)(fn)((hwnd), (INT)(wParam), (LVGROUP *)(lParam))
1462
1463 /* INT ListView_OnRemoveGroup(HWND hwnd, INT iGroupId) */
1464 #define HANDLE_LVM_REMOVEGROUP(hwnd, wParam, lParam, fn) \
1465 (INT)(fn)((hwnd), (INT)(wParam))
1466
1467 /* LRESULT ListView_OnMoveGroup(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1468 #define HANDLE_LVM_MOVEGROUP(hwnd, wParam, lParam, fn) \
1469 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1470
1471 /* INT ListView_OnGetGroupCount(HWND hwnd) */
1472 #define HANDLE_LVM_GETGROUPCOUNT(hwnd, wParam, lParam, fn) \
1473 (INT)(fn)((hwnd))
1474
1475 /* BOOL ListView_OnGetGroupInfoByIndex(HWND hwnd, INT iIndex, LVGROUP *pgrp) */
1476 #define HANDLE_LVM_GETGROUPINFOBYINDEX(hwnd, wParam, lParam, fn) \
1477 (BOOL)(fn)((hwnd), (INT)(wParam), (LVGROUP *)(lParam))
1478
1479 /* LRESULT ListView_OnMoveItemToGroup(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1480 #define HANDLE_LVM_MOVEITEMTOGROUP(hwnd, wParam, lParam, fn) \
1481 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1482
1483 /* void ListView_OnSetGroupMetrics(HWND hwnd, const LVGROUPMETRICS *pGroupMetrics) */
1484 #define HANDLE_LVM_SETGROUPMETRICS(hwnd, wParam, lParam, fn) \
1485 ((fn)((hwnd), (const LVGROUPMETRICS *)(lParam)), 0L)
1486
1487 /* void ListView_OnGetGroupMetrics(HWND hwnd, LVGROUPMETRICS *pGroupMetrics) */
1488 #define HANDLE_LVM_GETGROUPMETRICS(hwnd, wParam, lParam, fn) \
1489 ((fn)((hwnd), (LVGROUPMETRICS *)(lParam)), 0L)
1490
1491 /* INT ListView_OnEnableGroupView(HWND hwnd, BOOL fEnable) */
1492 #define HANDLE_LVM_ENABLEGROUPVIEW(hwnd, wParam, lParam, fn) \
1493 (INT)(fn)((hwnd), (BOOL)(wParam))
1494
1495 /* BOOL ListView_OnSortGroups(HWND hwnd, PFNLVGROUPCOMPARE pfnGroupCompate, void *plv) */
1496 #define HANDLE_LVM_SORTGROUPS(hwnd, wParam, lParam, fn) \
1497 (BOOL)(fn)((hwnd), (PFNLVGROUPCOMPARE)(wParam), (void *)(lParam))
1498
1499 /* void ListView_OnInsertGroupSorted(HWND hwnd, const LVINSERTGROUPSORTED *structInsert) */
1500 #define HANDLE_LVM_INSERTGROUPSORTED(hwnd, wParam, lParam, fn) \
1501 ((fn)((hwnd), (const LVINSERTGROUPSORTED *)(wParam)), 0L)
1502
1503 /* void ListView_OnRemoveAllGroups(HWND hwnd) */
1504 #define HANDLE_LVM_REMOVEALLGROUPS(hwnd, wParam, lParam, fn) \
1505 ((fn)((hwnd)), 0L)
1506
1507 /* BOOL ListView_OnHasGroup(HWND hwnd, DWORD dwGroupId) */
1508 #define HANDLE_LVM_HASGROUP(hwnd, wParam, lParam, fn) \
1509 (BOOL)(fn)((hwnd), (DWORD)(wParam))
1510 #endif
1511
1512 /* BOOL ListView_OnSetTileViewInfo(HWND hwnd, const LVTILEVIEWINFO *ptvi) */
1513 #define HANDLE_LVM_SETTILEVIEWINFO(hwnd, wParam, lParam, fn) \
1514 (BOOL)(fn)((hwnd), (const LVTILEVIEWINFO *)(lParam))
1515
1516 /* void ListView_OnGetTileViewInfo(HWND hwnd, LVTILEVIEWINFO *ptvi) */
1517 #define HANDLE_LVM_GETTILEVIEWINFO(hwnd, wParam, lParam, fn) \
1518 ((fn)((hwnd), (LVTILEVIEWINFO *)(lParam)), 0L)
1519
1520 /* BOOL ListView_OnSetTileInfo(HWND hwnd, const LVTILEINFO *pti) */
1521 #define HANDLE_LVM_SETTILEINFO(hwnd, wParam, lParam, fn) \
1522 (BOOL)(fn)((hwnd), (const LVTILEINFO *)(lParam))
1523
1524 /* void ListView_OnGetTileInfo(HWND hwnd, LVTILEINFO *pti) */
1525 #define HANDLE_LVM_GETTILEINFO(hwnd, wParam, lParam, fn) \
1526 ((fn)((hwnd), (LVTILEINFO *)(lParam)), 0L)
1527
1528 /* BOOL ListView_OnSetInsertMark(HWND hwnd, const LVINSERTMARK *lvim) */
1529 #define HANDLE_LVM_SETINSERTMARK(hwnd, wParam, lParam, fn) \
1530 (BOOL)(fn)((hwnd), (const LVINSERTMARK *)(lParam))
1531
1532 /* BOOL ListView_OnGetInsertMark(HWND hwnd, LVINSERTMARK *lvim) */
1533 #define HANDLE_LVM_GETINSERTMARK(hwnd, wParam, lParam, fn) \
1534 (BOOL)(fn)((hwnd), (LVINSERTMARK *)(lParam))
1535
1536 /* INT ListView_OnInsertMarkHitTest(HWND hwnd, LPPOINT point, LPLVINSERTMARK lvim) */
1537 #define HANDLE_LVM_INSERTMARKHITTEST(hwnd, wParam, lParam, fn) \
1538 (INT)(fn)((hwnd), (LPPOINT)(wParam), (LPLVINSERTMARK)(lParam))
1539
1540 /* INT ListView_OnGetInsertMarkRect(HWND hwnd, LPRECT rc) */
1541 #define HANDLE_LVM_GETINSERTMARKRECT(hwnd, wParam, lParam, fn) \
1542 (INT)(fn)((hwnd), (LPRECT)(lParam))
1543
1544 /* COLORREF ListView_OnSetInsertMarkColor(HWND hwnd, COLORREF color) */
1545 #define HANDLE_LVM_SETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
1546 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1547
1548 /* COLORREF ListView_OnGetInsertMarkColor(HWND hwnd) */
1549 #define HANDLE_LVM_GETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
1550 (COLORREF)(fn)((hwnd))
1551
1552 /* BOOL ListView_OnSetInfoTip(HWND hwnd, const LVSETINFOTIP *plvInfoTip) */
1553 #define HANDLE_LVM_SETINFOTIP(hwnd, wParam, lParam, fn) \
1554 (BOOL)(fn)((hwnd), (const LVSETINFOTIP *)(lParam))
1555
1556 /* UINT ListView_OnGetSelectedColumn(HWND hwnd) */
1557 #define HANDLE_LVM_GETSELECTEDCOLUMN(hwnd, wParam, lParam, fn) \
1558 (UINT)(fn)((hwnd))
1559
1560 /* BOOL ListView_OnIsGroupViewEnabled(HWND hwnd) */
1561 #define HANDLE_LVM_ISGROUPVIEWENABLED(hwnd, wParam, lParam, fn) \
1562 (BOOL)(fn)((hwnd))
1563
1564 /* COLORREF ListView_OnGetOutlineColor(HWND hwnd) */
1565 #define HANDLE_LVM_GETOUTLINECOLOR(hwnd, wParam, lParam, fn) \
1566 (COLORREF)(fn)((hwnd))
1567
1568 /* COLORREF ListView_OnSetOutlineColor(HWND hwnd, COLORREF color) */
1569 #define HANDLE_LVM_SETOUTLINECOLOR(hwnd, wParam, lParam, fn) \
1570 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1571
1572 /* void ListView_OnCancelEditLabel(HWND hwnd) */
1573 #define HANDLE_LVM_CANCELEDITLABEL(hwnd, wParam, lParam, fn) \
1574 ((fn)((hwnd)), 0L)
1575
1576 /* UINT ListView_OnMapIndexToID(HWND hwnd, UINT index) */
1577 #define HANDLE_LVM_MAPINDEXTOID(hwnd, wParam, lParam, fn) \
1578 (UINT)(fn)((hwnd), (UINT)(wParam))
1579
1580 /* UINT ListView_OnMapIDToIndex(HWND hwnd, UINT id) */
1581 #define HANDLE_LVM_MAPIDTOINDEX(hwnd, wParam, lParam, fn) \
1582 (UINT)(fn)((hwnd), (UINT)(wParam))
1583
1584 /* BOOL ListView_OnIsItemVisible(HWND hwnd, UINT index) */
1585 #define HANDLE_LVM_ISITEMVISIBLE(hwnd, wParam, lParam, fn) \
1586 (BOOL)(fn)((hwnd), (UINT)(wParam))
1587
1588 #if NTDDI_VERSION >= 0x06000000
1589 /* void ListView_OnGetEmptyText(HWND hwnd, PWSTR pszText, UINT cchText) */
1590 #define HANDLE_LVM_GETEMPTYTEXT(hwnd, wParam, lParam, fn) \
1591 ((fn)((hwnd), (PWSTR)(lParam), (UINT)(wParam)), 0L)
1592
1593 /* BOOL ListView_OnGetFooterRect(HWND hwnd, RECT *prc) */
1594 #define HANDLE_LVM_GETFOOTERRECT(hwnd, wParam, lParam, fn) \
1595 (BOOL)(fn)((hwnd), (RECT *)(lParam))
1596
1597 /* BOOL ListView_OnGetFooterInfo(HWND hwnd, LVFOOTERINFO *plvfi) */
1598 #define HANDLE_LVM_GETFOOTERINFO(hwnd, wParam, lParam, fn) \
1599 (BOOL)(fn)((hwnd), (LVFOOTERINFO *)(lParam))
1600
1601 /* BOOL ListView_OnGetFooterItemRect(HWND hwnd, INT iItem, RECT *prc) */
1602 #define HANDLE_LVM_GETFOOTERITEMRECT(hwnd, wParam, lParam, fn) \
1603 (BOOL)(fn)((hwnd), (INT)(wParam), (RECT *)(lParam))
1604
1605 /* BOOL ListView_OnGetFooterItem(HWND hwnd, INT iItem, LVFOOTERITEM *pfi) */
1606 #define HANDLE_LVM_GETFOOTERITEM(hwnd, wParam, lParam, fn) \
1607 (BOOL)(fn)((hwnd), (INT)(wParam), (LVFOOTERITEM *)(lParam))
1608
1609 /* BOOL ListView_OnGetItemIndexRect(HWND hwnd, const LVITEMINDEX *plvii, RECT *prc) */
1610 #define HANDLE_LVM_GETITEMINDEXRECT(hwnd, wParam, lParam, fn) \
1611 (BOOL)(fn)((hwnd), (const LVITEMINDEX *)(wParam), (RECT *)(lParam))
1612
1613 /* HRESULT ListView_OnSetItemIndexState(HWND hwnd, const LVITEMINDEX *plvii, const LV_ITEM *lvi) */
1614 #define HANDLE_LVM_SETITEMINDEXSTATE(hwnd, wParam, lParam, fn) \
1615 (HRESULT)(fn)((hwnd), (const LVITEMINDEX *)(wParam), (const LV_ITEM *)(lParam))
1616
1617 /* BOOL ListView_OnGetNextItemIndex(HWND hwnd, LVITEMINDEX *plvii, UINT flags) */
1618 #define HANDLE_LVM_GETNEXTITEMINDEX(hwnd, wParam, lParam, fn) \
1619 (BOOL)(fn)((hwnd), (LVITEMINDEX *)(wParam), (UINT)(lParam))
1620 #endif
1621
1622 /* HTREEITEM TreeView_OnInsertItemA(HWND hwnd, LPTV_INSERTSTRUCTA lpis) */
1623 #define HANDLE_TVM_INSERTITEMA(hwnd, wParam, lParam, fn) \
1624 (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_INSERTSTRUCTA)(lParam))
1625
1626 /* BOOL TreeView_OnDeleteItem(HWND hwnd, HTREEITEM hitem) */
1627 #define HANDLE_TVM_DELETEITEM(hwnd, wParam, lParam, fn) \
1628 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
1629
1630 /* BOOL TreeView_OnExpand(HWND hwnd, HTREEITEM hitem, UINT code) */
1631 #define HANDLE_TVM_EXPAND(hwnd, wParam, lParam, fn) \
1632 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (UINT)(wParam))
1633
1634 /* BOOL TreeView_OnGetItemRect(HWND hwnd, UINT code, RECT *prc) */
1635 #define HANDLE_TVM_GETITEMRECT(hwnd, wParam, lParam, fn) \
1636 (BOOL)(fn)((hwnd), (UINT)(wParam), (RECT *)(lParam))
1637
1638 /* UINT TreeView_OnGetCount(HWND hwnd) */
1639 #define HANDLE_TVM_GETCOUNT(hwnd, wParam, lParam, fn) \
1640 (UINT)(fn)((hwnd))
1641
1642 /* UINT TreeView_OnGetIndent(HWND hwnd) */
1643 #define HANDLE_TVM_GETINDENT(hwnd, wParam, lParam, fn) \
1644 (UINT)(fn)((hwnd))
1645
1646 /* BOOL TreeView_OnSetIndent(HWND hwnd, INT indent) */
1647 #define HANDLE_TVM_SETINDENT(hwnd, wParam, lParam, fn) \
1648 (BOOL)(fn)((hwnd), (INT)(wParam))
1649
1650 /* HIMAGELIST TreeView_OnGetImageList(HWND hwnd, INT iImage) */
1651 #define HANDLE_TVM_GETIMAGELIST(hwnd, wParam, lParam, fn) \
1652 (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam))
1653
1654 /* HIMAGELIST TreeView_OnSetImageList(HWND hwnd, INT iImage, HIMAGELIST himl) */
1655 #define HANDLE_TVM_SETIMAGELIST(hwnd, wParam, lParam, fn) \
1656 (LRESULT)(HIMAGELIST)(fn)((hwnd), (INT)(wParam), (HIMAGELIST)(lParam))
1657
1658 /* HTREEITEM TreeView_OnGetNextItem(HWND hwnd, HTREEITEM hitem, UINT code) */
1659 #define HANDLE_TVM_GETNEXTITEM(hwnd, wParam, lParam, fn) \
1660 (LRESULT)(HTREEITEM)(fn)((hwnd), (HTREEITEM)(lParam), (UINT)(wParam))
1661
1662 /* BOOL TreeView_OnSelectItem(HWND hwnd, UINT code, HTREEITEM hitem) */
1663 #define HANDLE_TVM_SELECTITEM(hwnd, wParam, lParam, fn) \
1664 (BOOL)(fn)((hwnd), (UINT)(wParam), (HTREEITEM)(lParam))
1665
1666 /* BOOL TreeView_OnGetItemA(HWND hwnd, TV_ITEMA *pitem) */
1667 #define HANDLE_TVM_GETITEMA(hwnd, wParam, lParam, fn) \
1668 (BOOL)(fn)((hwnd), (TV_ITEMA *)(lParam))
1669
1670 /* BOOL TreeView_OnSetItemA(HWND hwnd, const TV_ITEMA *pitem) */
1671 #define HANDLE_TVM_SETITEMA(hwnd, wParam, lParam, fn) \
1672 (BOOL)(fn)((hwnd), (const TV_ITEMA *)(lParam))
1673
1674 /* HWND TreeView_OnEditLabelA(HWND hwnd, HTREEITEM hitem) */
1675 #define HANDLE_TVM_EDITLABELA(hwnd, wParam, lParam, fn) \
1676 (LRESULT)(HWND)(fn)((hwnd), (HTREEITEM)(lParam))
1677
1678 /* HWND TreeView_OnGetEditControl(HWND hwnd) */
1679 #define HANDLE_TVM_GETEDITCONTROL(hwnd, wParam, lParam, fn) \
1680 (LRESULT)(HWND)(fn)((hwnd))
1681
1682 /* UINT TreeView_OnGetVisibleCount(HWND hwnd) */
1683 #define HANDLE_TVM_GETVISIBLECOUNT(hwnd, wParam, lParam, fn) \
1684 (UINT)(fn)((hwnd))
1685
1686 /* HTREEITEM TreeView_OnHitTest(HWND hwnd, LPTV_HITTESTINFO lpht) */
1687 #define HANDLE_TVM_HITTEST(hwnd, wParam, lParam, fn) \
1688 (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_HITTESTINFO)(lParam))
1689
1690 /* HIMAGELIST TreeView_OnCreateDragImage(HWND hwnd, HTREEITEM hitem) */
1691 #define HANDLE_TVM_CREATEDRAGIMAGE(hwnd, wParam, lParam, fn) \
1692 (LRESULT)(HIMAGELIST)(fn)((hwnd), (HTREEITEM)(lParam))
1693
1694 /* BOOL TreeView_OnSortChildren(HWND hwnd, HTREEITEM hitem, BOOL recurse) */
1695 #define HANDLE_TVM_SORTCHILDREN(hwnd, wParam, lParam, fn) \
1696 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (BOOL)(wParam))
1697
1698 /* BOOL TreeView_OnEnsureVisible(HWND hwnd, HTREEITEM hitem) */
1699 #define HANDLE_TVM_ENSUREVISIBLE(hwnd, wParam, lParam, fn) \
1700 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
1701
1702 /* BOOL TreeView_OnSortChildrenCB(HWND hwnd, LPTV_SORTCB psort, BOOL recurse) */
1703 #define HANDLE_TVM_SORTCHILDRENCB(hwnd, wParam, lParam, fn) \
1704 (BOOL)(fn)((hwnd), (LPTV_SORTCB)(lParam), (BOOL)(wParam))
1705
1706 /* BOOL TreeView_OnEndEditLabelNow(HWND hwnd, BOOL fCancel) */
1707 #define HANDLE_TVM_ENDEDITLABELNOW(hwnd, wParam, lParam, fn) \
1708 (BOOL)(fn)((hwnd), (BOOL)(wParam))
1709
1710 /* BOOL TreeView_OnGetISearchStringA(HWND hwnd, LPSTR lpsz) */
1711 #define HANDLE_TVM_GETISEARCHSTRINGA(hwnd, wParam, lParam, fn) \
1712 (BOOL)(fn)((hwnd), (LPSTR)(lParam))
1713
1714 /* HWND TreeView_OnSetToolTips(HWND hwnd, HWND hwndTT) */
1715 #define HANDLE_TVM_SETTOOLTIPS(hwnd, wParam, lParam, fn) \
1716 (LRESULT)(HWND)(fn)((hwnd), (HWND)(wParam))
1717
1718 /* HWND TreeView_OnGetToolTips(HWND hwnd) */
1719 #define HANDLE_TVM_GETTOOLTIPS(hwnd, wParam, lParam, fn) \
1720 (LRESULT)(HWND)(fn)((hwnd))
1721
1722 /* BOOL TreeView_OnSetInsertMark(HWND hwnd, HTREEITEM hItem, BOOL fAfter) */
1723 #define HANDLE_TVM_SETINSERTMARK(hwnd, wParam, lParam, fn) \
1724 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam), (BOOL)(wParam))
1725
1726 /* INT TreeView_OnSetItemHeight(HWND hwnd, INT iHeight) */
1727 #define HANDLE_TVM_SETITEMHEIGHT(hwnd, wParam, lParam, fn) \
1728 (INT)(fn)((hwnd), (INT)(wParam))
1729
1730 /* INT TreeView_OnGetItemHeight(HWND hwnd) */
1731 #define HANDLE_TVM_GETITEMHEIGHT(hwnd, wParam, lParam, fn) \
1732 (INT)(fn)((hwnd))
1733
1734 /* COLORREF TreeView_OnSetBkColor(HWND hwnd, COLORREF clr) */
1735 #define HANDLE_TVM_SETBKCOLOR(hwnd, wParam, lParam, fn) \
1736 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1737
1738 /* COLORREF TreeView_OnSetTextColor(HWND hwnd, COLORREF clr) */
1739 #define HANDLE_TVM_SETTEXTCOLOR(hwnd, wParam, lParam, fn) \
1740 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1741
1742 /* COLORREF TreeView_OnGetBkColor(HWND hwnd) */
1743 #define HANDLE_TVM_GETBKCOLOR(hwnd, wParam, lParam, fn) \
1744 (COLORREF)(fn)((hwnd))
1745
1746 /* COLORREF TreeView_OnGetTextColor(HWND hwnd) */
1747 #define HANDLE_TVM_GETTEXTCOLOR(hwnd, wParam, lParam, fn) \
1748 (COLORREF)(fn)((hwnd))
1749
1750 /* UINT TreeView_OnSetScrollTime(HWND hwnd, UINT uTime) */
1751 #define HANDLE_TVM_SETSCROLLTIME(hwnd, wParam, lParam, fn) \
1752 (UINT)(fn)((hwnd), (UINT)(wParam))
1753
1754 /* UINT TreeView_OnGetScrollTime(HWND hwnd) */
1755 #define HANDLE_TVM_GETSCROLLTIME(hwnd, wParam, lParam, fn) \
1756 (UINT)(fn)((hwnd))
1757
1758 #if NTDDI_VERSION >= 0x06000000
1759 /* INT TreeView_OnSetBorder(HWND hwnd, DWORD dwFlags, INT xBorder, INT yBorder) */
1760 #define HANDLE_TVM_SETBORDER(hwnd, wParam, lParam, fn) \
1761 (INT)(fn)((hwnd), (DWORD)(wParam), (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam))
1762 #endif
1763
1764 /* COLORREF TreeView_OnSetInsertMarkColor(HWND hwnd, COLORREF clr) */
1765 #define HANDLE_TVM_SETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
1766 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1767
1768 /* COLORREF TreeView_OnGetInsertMarkColor(HWND hwnd) */
1769 #define HANDLE_TVM_GETINSERTMARKCOLOR(hwnd, wParam, lParam, fn) \
1770 (COLORREF)(fn)((hwnd))
1771
1772 /* UINT TreeView_OnGetItemState(HWND hwnd, HTREEITEM hti, UINT mask) */
1773 #define HANDLE_TVM_GETITEMSTATE(hwnd, wParam, lParam, fn) \
1774 (UINT)(fn)((hwnd), (HTREEITEM)(wParam), (UINT)(lParam))
1775
1776 /* COLORREF TreeView_OnSetLineColor(HWND hwnd, COLORREF clr) */
1777 #define HANDLE_TVM_SETLINECOLOR(hwnd, wParam, lParam, fn) \
1778 (COLORREF)(fn)((hwnd), (COLORREF)(lParam))
1779
1780 /* COLORREF TreeView_OnGetLineColor(HWND hwnd) */
1781 #define HANDLE_TVM_GETLINECOLOR(hwnd, wParam, lParam, fn) \
1782 (COLORREF)(fn)((hwnd))
1783
1784 /* HTREEITEM TreeView_OnMapAccIDToHTREEITEM(HWND hwnd, UINT id) */
1785 #define HANDLE_TVM_MAPACCIDTOHTREEITEM(hwnd, wParam, lParam, fn) \
1786 (LRESULT)(HTREEITEM)(fn)((hwnd), (UINT)(wParam))
1787
1788 /* UINT TreeView_OnMapHTREEITEMToAccID(HWND hwnd, HTREEITEM htreeitem) */
1789 #define HANDLE_TVM_MAPHTREEITEMTOACCID(hwnd, wParam, lParam, fn) \
1790 (UINT)(fn)((hwnd), (HTREEITEM)(wParam))
1791
1792 #if NTDDI_VERSION >= 0x06000000
1793 /* DWORD TreeView_OnSetExtendedStyle(HWND hwnd, DWORD dw, DWORD mask) */
1794 #define HANDLE_TVM_SETEXTENDEDSTYLE(hwnd, wParam, lParam, fn) \
1795 (DWORD)(fn)((hwnd), (DWORD)(wParam), (DWORD)(lParam))
1796
1797 /* DWORD TreeView_OnGetExtendedStyle(HWND hwnd) */
1798 #define HANDLE_TVM_GETEXTENDEDSTYLE(hwnd, wParam, lParam, fn) \
1799 (DWORD)(fn)((hwnd))
1800 #endif
1801
1802 /* HTREEITEM TreeView_OnInsertItemW(HWND hwnd, LPTV_INSERTSTRUCTW lpis) */
1803 #define HANDLE_TVM_INSERTITEMW(hwnd, wParam, lParam, fn) \
1804 (LRESULT)(HTREEITEM)(fn)((hwnd), (LPTV_INSERTSTRUCTW)(lParam))
1805
1806 #if NTDDI_VERSION >= 0x06000000
1807 /* BOOL TreeView_OnSetHot(HWND hwnd, HTREEITEM hitem) */
1808 #define HANDLE_TVM_SETHOT(hwnd, wParam, lParam, fn) \
1809 (BOOL)(fn)((hwnd), (HTREEITEM)(lParam))
1810
1811 /* BOOL TreeView_OnSetAutoScrollInfo(HWND hwnd, UINT uPixPerSec, UINT uUpdateTime) */
1812 #define HANDLE_TVM_SETAUTOSCROLLINFO(hwnd, wParam, lParam, fn) \
1813 (BOOL)(fn)((hwnd), (UINT)(wParam), (UINT)(lParam))
1814 #endif
1815
1816 /* BOOL TreeView_OnGetItemW(HWND hwnd, TV_ITEMW *pitem) */
1817 #define HANDLE_TVM_GETITEMW(hwnd, wParam, lParam, fn) \
1818 (BOOL)(fn)((hwnd), (TV_ITEMW *)(lParam))
1819
1820 /* BOOL TreeView_OnSetItemW(HWND hwnd, const TV_ITEMW *pitem) */
1821 #define HANDLE_TVM_SETITEMW(hwnd, wParam, lParam, fn) \
1822 (BOOL)(fn)((hwnd), (const TV_ITEMW *)(lParam))
1823
1824 /* BOOL TreeView_OnGetISearchStringW(HWND hwnd, LPWSTR lpsz) */
1825 #define HANDLE_TVM_GETISEARCHSTRINGW(hwnd, wParam, lParam, fn) \
1826 (BOOL)(fn)((hwnd), (LPWSTR)(lParam))
1827
1828 /* HWND TreeView_OnEditLabelW(HWND hwnd, HTREEITEM hitem) */
1829 #define HANDLE_TVM_EDITLABELW(hwnd, wParam, lParam, fn) \
1830 (LRESULT)(HWND)(fn)((hwnd), (HTREEITEM)(lParam))
1831
1832 #if NTDDI_VERSION >= 0x06000000
1833 /* DWORD TreeView_OnGetSelectedCount(HWND hwnd) */
1834 #define HANDLE_TVM_GETSELECTEDCOUNT(hwnd, wParam, lParam, fn) \
1835 (DWORD)(fn)((hwnd))
1836
1837 /* DWORD TreeView_OnShowInfoTip(HWND hwnd, HTREEITEM hitem) */
1838 #define HANDLE_TVM_SHOWINFOTIP(hwnd, wParam, lParam, fn) \
1839 (DWORD)(fn)((hwnd), (HTREEITEM)(lParam))
1840
1841 /* LRESULT TreeView_OnGetItemPartRect(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1842 #define HANDLE_TVM_GETITEMPARTRECT(hwnd, wParam, lParam, fn) \
1843 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1844 #endif
1845
1846 #ifdef _UNDOCUSER_H /* UNDOCUMENTED */
1847 /* LRESULT Cls_OnDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1848 #ifndef HANDLE_WM_DROPOBJECT
1849 #define HANDLE_WM_DROPOBJECT(hwnd, wParam, lParam, fn) \
1850 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1851 #define FORWARD_WM_DROPOBJECT(hwnd, wParam, lParam, fn) \
1852 (LRESULT)((fn)((hwnd), WM_DROPOBJECT, wParam, lParam))
1853 #endif
1854
1855 /* LRESULT Cls_OnQueryDropObject(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1856 #ifndef HANDLE_WM_QUERYDROPOBJECT
1857 #define HANDLE_WM_QUERYDROPOBJECT(hwnd, wParam, lParam, fn) \
1858 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1859 #define FORWARD_WM_QUERYDROPOBJECT(hwnd, wParam, lParam, fn) \
1860 (LRESULT)((fn)((hwnd), WM_QUERYDROPOBJECT, wParam, lParam))
1861 #endif
1862
1863 /* LRESULT Cls_OnBeginDrag(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1864 #ifndef HANDLE_WM_BEGINDRAG
1865 #define HANDLE_WM_BEGINDRAG(hwnd, wParam, lParam, fn) \
1866 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1867 #define FORWARD_WM_BEGINDRAG(hwnd, wParam, lParam, fn) \
1868 (LRESULT)((fn)((hwnd), WM_BEGINDRAG, wParam, lParam))
1869 #endif
1870
1871 /* LRESULT Cls_OnDragLoop(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1872 #ifndef HANDLE_WM_DRAGLOOP
1873 #define HANDLE_WM_DRAGLOOP(hwnd, wParam, lParam, fn) \
1874 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1875 #define FORWARD_WM_DRAGLOOP(hwnd, wParam, lParam, fn) \
1876 (LRESULT)((fn)((hwnd), WM_DRAGLOOP, wParam, lParam))
1877 #endif
1878
1879 /* LRESULT Cls_OnDragSelect(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1880 #ifndef HANDLE_WM_DRAGSELECT
1881 #define HANDLE_WM_DRAGSELECT(hwnd, wParam, lParam, fn) \
1882 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1883 #define FORWARD_WM_DRAGSELECT(hwnd, wParam, lParam, fn) \
1884 (LRESULT)((fn)((hwnd), WM_DRAGSELECT, wParam, lParam))
1885 #endif
1886
1887 /* LRESULT Cls_OnDragMove(HWND hwnd, WPARAM wParam, LPARAM lParam) */
1888 #ifndef HANDLE_WM_DRAGMOVE
1889 #define HANDLE_WM_DRAGMOVE(hwnd, wParam, lParam, fn) \
1890 (LRESULT)(fn)((hwnd), (wParam), (lParam))
1891 #define FORWARD_WM_DRAGMOVE(hwnd, wParam, lParam, fn) \
1892 (LRESULT)((fn)((hwnd), WM_DRAGMOVE, wParam, lParam))
1893 #endif
1894 #endif
1895
1896 /* LRESULT RichEdit_OnCanPaste(HWND hwnd, UINT uFormat) */
1897 #define HANDLE_EM_CANPASTE(hwnd, wParam, lParam, fn) \
1898 (LRESULT)(fn)((hwnd), (UINT)(wParam))
1899
1900 /* BOOL RichEdit_OnDisplayBand(HWND hwnd, LPRECT lprc) */
1901 #define HANDLE_EM_DISPLAYBAND(hwnd, wParam, lParam, fn) \
1902 (BOOL)(fn)((hwnd), (LPRECT)(lParam))
1903
1904 /* void RichEdit_OnExGetSel(HWND hwnd, CHARRANGE *lpchr) */
1905 #define HANDLE_EM_EXGETSEL(hwnd, wParam, lParam, fn) \
1906 ((fn)((hwnd), (CHARRANGE *)(lParam)), 0L)
1907
1908 /* void RichEdit_OnExLimitText(HWND hwnd, DWORD cchTextMax) */
1909 #define HANDLE_EM_EXLIMITTEXT(hwnd, wParam, lParam, fn) \
1910 ((fn)((hwnd), (DWORD)(lParam)), 0L)
1911
1912 /* INT RichEdit_OnExLineFromChar(HWND hwnd, DWORD ichCharPos) */
1913 #define HANDLE_EM_EXLINEFROMCHAR(hwnd, wParam, lParam, fn) \
1914 (INT)(fn)((hwnd), (DWORD)(wParam))
1915
1916 /* INT RichEdit_OnExSetSel(HWND hwnd, INT ichChar) */
1917 #define HANDLE_EM_EXSETSEL(hwnd, wParam, lParam, fn) \
1918 (INT)(fn)((hwnd), (INT)(INT_PTR)(lParam))
1919
1920 /* INT RichEdit_OnFindText(HWND hwnd, UINT fuFlags, FINDTEXT *lpFindText) */
1921 #define HANDLE_EM_FINDTEXT(hwnd, wParam, lParam, fn) \
1922 (INT)(fn)((hwnd), (UINT)(wParam), (FINDTEXT *)(lParam))
1923
1924 /* INT RichEdit_OnFormatRange(HWND hwnd, BOOL fRender, FORMATRANGE *lpFmt) */
1925 #define HANDLE_EM_FORMATRANGE(hwnd, wParam, lParam, fn) \
1926 (INT)(fn)((hwnd), (BOOL)(wParam), (FORMATRANGE *)(lParam))
1927
1928 /* DWORD RichEdit_OnGetCharFormat(HWND hwnd, BOOL fSelection, CHARFORMAT *lpFmt) */
1929 #define HANDLE_EM_GETCHARFORMAT(hwnd, wParam, lParam, fn) \
1930 (DWORD)(fn)((hwnd), (BOOL)(wParam), (CHARFORMAT *)(lParam))
1931
1932 /* DWORD RichEdit_OnGetEventMask(HWND hwnd) */
1933 #define HANDLE_EM_GETEVENTMASK(hwnd, wParam, lParam, fn) \
1934 (DWORD)(fn)((hwnd))
1935
1936 /* BOOL RichEdit_OnOleInterface(HWND hwnd, LPVOID *ppObject) */
1937 #define HANDLE_EM_GETOLEINTERFACE(hwnd, wParam, lParam, fn) \
1938 (BOOL)(fn)((hwnd), (LPVOID *)(lParam))
1939
1940 /* DWORD RichEdit_OnGetParaFormat(HWND hwnd, PARAFORMAT *lpFmt) */
1941 #define HANDLE_EM_GETPARAFORMAT(hwnd, wParam, lParam, fn) \
1942 (DWORD)(fn)((hwnd), (PARAFORMAT *)(lParam))
1943
1944 /* INT RichEdit_OnGetSelText(HWND hwnd, LPTSTR lpBuf) */
1945 #define HANDLE_EM_GETSELTEXT(hwnd, wParam, lParam, fn) \
1946 (INT)(fn)((hwnd), (LPTSTR)(lParam))
1947
1948 /* void RichEdit_OnHideSelection(HWND hwnd, BOOL fHide, BOOL fChangeStyle) */
1949 #define HANDLE_EM_HIDESELECTION(hwnd, wParam, lParam, fn) \
1950 ((fn)((hwnd), (BOOL)(wParam), (BOOL)(lParam)), 0L)
1951
1952 /* void RichEdit_OnPasteSpecial(HWND hwnd, UINT uFormat, REPASTESPECIAL *lpRePasteSpecial) */
1953 #define HANDLE_EM_PASTESPECIAL(hwnd, wParam, lParam, fn) \
1954 ((fn)((hwnd), (UINT)(wParam), (REPASTESPECIAL *)(lParam)), 0L)
1955
1956 /* void RichEdit_OnRequestResize(HWND hwnd) */
1957 #define HANDLE_EM_REQUESTRESIZE(hwnd, wParam, lParam, fn) \
1958 ((fn)((hwnd)), 0L)
1959
1960 /* DWORD RichEdit_OnSelectionType(HWND hwnd) */
1961 #define HANDLE_EM_SELECTIONTYPE(hwnd, wParam, lParam, fn) \
1962 (DWORD)(fn)((hwnd))
1963
1964 /* COLORREF RichEdit_OnSetBkgndColor(HWND hwnd, BOOL fUseSysColor, COLORREF clr) */
1965 #define HANDLE_EM_SETBKGNDCOLOR(hwnd, wParam, lParam, fn) \
1966 (DWORD)(fn)((hwnd), (BOOL)(wParam), (COLORREF)(lParam))
1967
1968 /* BOOL RichEdit_OnSetCharFormat(HWND hwnd, UINT uFlags, CHARFORMAT *lpFmt) */
1969 #define HANDLE_EM_SETCHARFORMAT(hwnd, wParam, lParam, fn) \
1970 (BOOL)(fn)((hwnd), (UINT)(wParam), (CHARFORMAT *)(lParam))
1971
1972 /* DWORD RichEdit_OnSetEventMask(HWND hwnd, DWORD dwMask) */
1973 #define HANDLE_EM_SETEVENTMASK(hwnd, wParam, lParam, fn) \
1974 (DWORD)(fn)((hwnd), (DWORD)(lParam))
1975
1976 /* BOOL RichEdit_OnSetOleCallback(HWND hwnd, void *pCallback) */
1977 #define HANDLE_EM_SETOLECALLBACK(hwnd, wParam, lParam, fn) \
1978 (BOOL)(fn)((hwnd), (void *)(lParam))
1979
1980 /* BOOL RichEdit_OnSetParaFormat(HWND hwnd, PARAFORMAT *lpFmt) */
1981 #define HANDLE_EM_SETPARAFORMAT(hwnd, wParam, lParam, fn) \
1982 (BOOL)(fn)((hwnd), (PARAFORMAT *)(lParam))
1983
1984 /* BOOL RichEdit_OnSetTargetDevice(HWND hwnd, HDC hdcTarget, INT cxLineWidth) */
1985 #define HANDLE_EM_SETTARGETDEVICE(hwnd, wParam, lParam, fn) \
1986 (BOOL)(fn)((hwnd), (HDC)(wParam), (INT)(lParam))
1987
1988 /* DWORD RichEdit_OnStreamIn(HWND hwnd, UINT uFormat, EDITSTREAM *lpStream) */
1989 #define HANDLE_EM_STREAMIN(hwnd, wParam, lParam, fn) \
1990 (DWORD)(fn)((hwnd), (UINT)(wParam), (EDITSTREAM *)(lParam))
1991
1992 /* DWORD RichEdit_OnStreamOut(HWND hwnd, UINT uFormat, EDITSTREAM *lpStream) */
1993 #define HANDLE_EM_STREAMOUT(hwnd, wParam, lParam, fn) \
1994 (DWORD)(fn)((hwnd), (UINT)(wParam), (EDITSTREAM *)(lParam))
1995
1996 /* DWORD RichEdit_OnGetTextRange(HWND hwnd, TEXTRANGE *lpRange) */
1997 #define HANDLE_EM_GETTEXTRANGE(hwnd, wParam, lParam, fn) \
1998 (DWORD)(fn)((hwnd), (TEXTRANGE *)(lParam))
1999
2000 /* DWORD RichEdit_OnFindWordBreak(HWND hwnd, UINT code, DWORD ichStart) */
2001 #define HANDLE_EM_FINDWORDBREAK(hwnd, wParam, lParam, fn) \
2002 (DWORD)(fn)((hwnd), (UINT)(wParam), (DWORD)(lParam))
2003
2004 /* UINT RichEdit_OnSetOptions(HWND hwnd, UINT fOperation, UINT fOptions) */
2005 #define HANDLE_EM_SETOPTIONS(hwnd, wParam, lParam, fn) \
2006 (UINT)(fn)((hwnd), (UINT)(wParam), (UINT)(lParam))
2007
2008 /* UINT RichEdit_OnGetOptions(HWND hwnd) */
2009 #define HANDLE_EM_GETOPTIONS(hwnd, wParam, lParam, fn) \
2010 (UINT)(fn)((hwnd))
2011
2012 /* INT RichEdit_OnFindTextEx(HWND hwnd, UINT fuFlags, FINDTEXTEX *lpFindText) */
2013 #define HANDLE_EM_FINDTEXTEX(hwnd, wParam, lParam, fn) \
2014 (INT)(fn)((hwnd), (UINT)(wParam), (FINDTEXTEX *)(lParam))
2015
2016 /* void *RichEdit_OnGetWordBreakProcEx(HWND hwnd) */
2017 #define HANDLE_EM_GETWORDBREAKPROCEX(hwnd, wParam, lParam, fn) \
2018 (LRESULT)(void *)(fn)((hwnd))
2019
2020 /* void *RichEdit_OnSetWordBreakProcEx(HWND hwnd, void *pfn) */
2021 #define HANDLE_EM_SETWORDBREAKPROCEX(hwnd, wParam, lParam, fn) \
2022 (LRESULT)(void *)(fn)((hwnd), (void *)(lParam))
2023
2024 /* DWORD RichEdit_OnSetUndoLimit(HWND hwnd, DWORD dwMaxUndo) */
2025 #define HANDLE_EM_SETUNDOLIMIT(hwnd, wParam, lParam, fn) \
2026 (DWORD)(fn)((hwnd), (DWORD)(wParam))
2027
2028 /* BOOL RichEdit_OnRedo(HWND hwnd) */
2029 #define HANDLE_EM_REDO(hwnd, wParam, lParam, fn) \
2030 (BOOL)(fn)((hwnd))
2031
2032 /* BOOL RichEdit_OnCanRedo(HWND hwnd) */
2033 #define HANDLE_EM_CANREDO(hwnd, wParam, lParam, fn) \
2034 (BOOL)(fn)((hwnd))
2035
2036 /* INT RichEdit_OnGetUndoName(HWND hwnd) */
2037 #define HANDLE_EM_GETUNDONAME(hwnd, wParam, lParam, fn) \
2038 (INT)(fn)((hwnd))
2039
2040 /* INT RichEdit_OnGetRedoName(HWND hwnd) */
2041 #define HANDLE_EM_GETREDONAME(hwnd, wParam, lParam, fn) \
2042 (INT)(fn)((hwnd))
2043
2044 /* void RichEdit_OnStopGroupTyping(HWND hwnd) */
2045 #define HANDLE_EM_STOPGROUPTYPING(hwnd, wParam, lParam, fn) \
2046 ((fn)((hwnd)), 0L)
2047
2048 /* BOOL RichEdit_OnSetTextMode(HWND hwnd, DWORD dwTextMode) */
2049 #define HANDLE_EM_SETTEXTMODE(hwnd, wParam, lParam, fn) \
2050 (BOOL)(fn)((hwnd), (DWORD)(wParam))
2051
2052 /* DWORD RichEdit_OnGetTextMode(HWND hwnd) */
2053 #define HANDLE_EM_GETTEXTMODE(hwnd, wParam, lParam, fn) \
2054 (DWORD)(fn)((hwnd))
2055
2056 #endif