1 /* 2 * PROJECT: ReactOS header files 3 * LICENSE: CC-BY-4.0 (https://spdx.org/licenses/CC-BY-4.0) 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 2057