OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef UI_GFX_WIN_MSG_UTIL_H_ |
| 6 #define UI_GFX_WIN_MSG_UTIL_H_ |
| 7 |
| 8 #include "base/logging.h" |
| 9 #include "ui/gfx/geometry/point.h" |
| 10 #include "ui/gfx/geometry/size.h" |
| 11 |
| 12 // Based on WTL version 8.0 atlcrack.h |
| 13 |
| 14 // This differs from the original atlcrack.h by removing usage of CPoint, |
| 15 // CSize, etc. |
| 16 |
| 17 /////////////////////////////////////////////////////////////////////////////// |
| 18 // Message map macro for cracked handlers |
| 19 |
| 20 // Note about message maps with cracked handlers: |
| 21 // For ATL 3.0, a message map using cracked handlers MUST use BEGIN_MSG_MAP_EX. |
| 22 // For ATL 7.0 or higher, you can use BEGIN_MSG_MAP for CWindowImpl/CDialogImpl |
| 23 // derived classes, |
| 24 // but must use BEGIN_MSG_MAP_EX for classes that don't derive from |
| 25 // CWindowImpl/CDialogImpl. |
| 26 |
| 27 #define CR_BEGIN_MSG_MAP_EX(theClass) \ |
| 28 public: \ |
| 29 BOOL m_bMsgHandled; \ |
| 30 /* "handled" management for cracked handlers */ \ |
| 31 BOOL IsMsgHandled() const { return m_bMsgHandled; } \ |
| 32 void SetMsgHandled(BOOL bHandled) { m_bMsgHandled = bHandled; } \ |
| 33 BOOL ProcessWindowMessage(HWND hWnd, \ |
| 34 UINT uMsg, \ |
| 35 WPARAM wParam, \ |
| 36 LPARAM lParam, \ |
| 37 LRESULT& lResult, \ |
| 38 DWORD dwMsgMapID = 0) { \ |
| 39 BOOL bOldMsgHandled = m_bMsgHandled; \ |
| 40 BOOL bRet = _ProcessWindowMessage( \ |
| 41 hWnd, uMsg, wParam, lParam, lResult, dwMsgMapID); \ |
| 42 m_bMsgHandled = bOldMsgHandled; \ |
| 43 return bRet; \ |
| 44 } \ |
| 45 BOOL _ProcessWindowMessage(HWND hWnd, \ |
| 46 UINT uMsg, \ |
| 47 WPARAM wParam, \ |
| 48 LPARAM lParam, \ |
| 49 LRESULT& lResult, \ |
| 50 DWORD dwMsgMapID) { \ |
| 51 BOOL bHandled = TRUE; \ |
| 52 hWnd; \ |
| 53 uMsg; \ |
| 54 wParam; \ |
| 55 lParam; \ |
| 56 lResult; \ |
| 57 bHandled; \ |
| 58 switch (dwMsgMapID) { \ |
| 59 case 0: |
| 60 |
| 61 // Replacement for atlwin.h's END_MSG_MAP for removing ATL usage. |
| 62 #define CR_END_MSG_MAP() \ |
| 63 break; \ |
| 64 default: \ |
| 65 NOTREACHED() << "Invalid message map ID: " << dwMsgMapID; \ |
| 66 break; \ |
| 67 } \ |
| 68 return FALSE; \ |
| 69 } |
| 70 |
| 71 #define CR_GET_X_LPARAM(lParam) ((int)(short)LOWORD(lParam)) |
| 72 #define CR_GET_Y_LPARAM(lParam) ((int)(short)HIWORD(lParam)) |
| 73 |
| 74 /////////////////////////////////////////////////////////////////////////////// |
| 75 // Standard Windows message macros |
| 76 |
| 77 // int OnCreate(LPCREATESTRUCT lpCreateStruct) |
| 78 #define CR_MSG_WM_CREATE(func) \ |
| 79 if (uMsg == WM_CREATE) { \ |
| 80 SetMsgHandled(TRUE); \ |
| 81 lResult = (LRESULT)func((LPCREATESTRUCT)lParam); \ |
| 82 if (IsMsgHandled()) \ |
| 83 return TRUE; \ |
| 84 } |
| 85 |
| 86 // BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam) |
| 87 #define CR_MSG_WM_INITDIALOG(func) \ |
| 88 if (uMsg == WM_INITDIALOG) { \ |
| 89 SetMsgHandled(TRUE); \ |
| 90 lResult = (LRESULT)func((HWND)wParam, lParam); \ |
| 91 if (IsMsgHandled()) \ |
| 92 return TRUE; \ |
| 93 } |
| 94 |
| 95 // BOOL OnCopyData(CWindow wnd, PCOPYDATASTRUCT pCopyDataStruct) |
| 96 #define CR_MSG_WM_COPYDATA(func) \ |
| 97 if (uMsg == WM_COPYDATA) { \ |
| 98 SetMsgHandled(TRUE); \ |
| 99 lResult = (LRESULT)func((HWND)wParam, (PCOPYDATASTRUCT)lParam); \ |
| 100 if (IsMsgHandled()) \ |
| 101 return TRUE; \ |
| 102 } |
| 103 |
| 104 // void OnDestroy() |
| 105 #define CR_MSG_WM_DESTROY(func) \ |
| 106 if (uMsg == WM_DESTROY) { \ |
| 107 SetMsgHandled(TRUE); \ |
| 108 func(); \ |
| 109 lResult = 0; \ |
| 110 if (IsMsgHandled()) \ |
| 111 return TRUE; \ |
| 112 } |
| 113 |
| 114 // void OnMove(CPoint ptPos) |
| 115 #define CR_MSG_WM_MOVE(func) \ |
| 116 if (uMsg == WM_MOVE) { \ |
| 117 SetMsgHandled(TRUE); \ |
| 118 func(gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 119 lResult = 0; \ |
| 120 if (IsMsgHandled()) \ |
| 121 return TRUE; \ |
| 122 } |
| 123 |
| 124 // void OnSize(UINT nType, gfx::Size size) |
| 125 #define CR_MSG_WM_SIZE(func) \ |
| 126 if (uMsg == WM_SIZE) { \ |
| 127 SetMsgHandled(TRUE); \ |
| 128 func((UINT)wParam, \ |
| 129 gfx::Size(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 130 lResult = 0; \ |
| 131 if (IsMsgHandled()) \ |
| 132 return TRUE; \ |
| 133 } |
| 134 |
| 135 // void OnActivate(UINT nState, BOOL bMinimized, CWindow wndOther) |
| 136 #define CR_MSG_WM_ACTIVATE(func) \ |
| 137 if (uMsg == WM_ACTIVATE) { \ |
| 138 SetMsgHandled(TRUE); \ |
| 139 func((UINT)LOWORD(wParam), (BOOL)HIWORD(wParam), (HWND)lParam); \ |
| 140 lResult = 0; \ |
| 141 if (IsMsgHandled()) \ |
| 142 return TRUE; \ |
| 143 } |
| 144 |
| 145 // void OnSetFocus(CWindow wndOld) |
| 146 #define CR_MSG_WM_SETFOCUS(func) \ |
| 147 if (uMsg == WM_SETFOCUS) { \ |
| 148 SetMsgHandled(TRUE); \ |
| 149 func((HWND)wParam); \ |
| 150 lResult = 0; \ |
| 151 if (IsMsgHandled()) \ |
| 152 return TRUE; \ |
| 153 } |
| 154 |
| 155 // void OnKillFocus(CWindow wndFocus) |
| 156 #define CR_MSG_WM_KILLFOCUS(func) \ |
| 157 if (uMsg == WM_KILLFOCUS) { \ |
| 158 SetMsgHandled(TRUE); \ |
| 159 func((HWND)wParam); \ |
| 160 lResult = 0; \ |
| 161 if (IsMsgHandled()) \ |
| 162 return TRUE; \ |
| 163 } |
| 164 |
| 165 // void OnEnable(BOOL bEnable) |
| 166 #define CR_MSG_WM_ENABLE(func) \ |
| 167 if (uMsg == WM_ENABLE) { \ |
| 168 SetMsgHandled(TRUE); \ |
| 169 func((BOOL)wParam); \ |
| 170 lResult = 0; \ |
| 171 if (IsMsgHandled()) \ |
| 172 return TRUE; \ |
| 173 } |
| 174 |
| 175 // void OnPaint(CDCHandle dc) |
| 176 #define CR_MSG_WM_PAINT(func) \ |
| 177 if (uMsg == WM_PAINT) { \ |
| 178 SetMsgHandled(TRUE); \ |
| 179 func((HDC)wParam); \ |
| 180 lResult = 0; \ |
| 181 if (IsMsgHandled()) \ |
| 182 return TRUE; \ |
| 183 } |
| 184 |
| 185 // void OnClose() |
| 186 #define CR_MSG_WM_CLOSE(func) \ |
| 187 if (uMsg == WM_CLOSE) { \ |
| 188 SetMsgHandled(TRUE); \ |
| 189 func(); \ |
| 190 lResult = 0; \ |
| 191 if (IsMsgHandled()) \ |
| 192 return TRUE; \ |
| 193 } |
| 194 |
| 195 // BOOL OnQueryEndSession(UINT nSource, UINT uLogOff) |
| 196 #define CR_MSG_WM_QUERYENDSESSION(func) \ |
| 197 if (uMsg == WM_QUERYENDSESSION) { \ |
| 198 SetMsgHandled(TRUE); \ |
| 199 lResult = (LRESULT)func((UINT)wParam, (UINT)lParam); \ |
| 200 if (IsMsgHandled()) \ |
| 201 return TRUE; \ |
| 202 } |
| 203 |
| 204 // BOOL OnQueryOpen() |
| 205 #define CR_MSG_WM_QUERYOPEN(func) \ |
| 206 if (uMsg == WM_QUERYOPEN) { \ |
| 207 SetMsgHandled(TRUE); \ |
| 208 lResult = (LRESULT)func(); \ |
| 209 if (IsMsgHandled()) \ |
| 210 return TRUE; \ |
| 211 } |
| 212 |
| 213 // BOOL OnEraseBkgnd(CDCHandle dc) |
| 214 #define CR_MSG_WM_ERASEBKGND(func) \ |
| 215 if (uMsg == WM_ERASEBKGND) { \ |
| 216 SetMsgHandled(TRUE); \ |
| 217 lResult = (LRESULT)func((HDC)wParam); \ |
| 218 if (IsMsgHandled()) \ |
| 219 return TRUE; \ |
| 220 } |
| 221 |
| 222 // void OnSysColorChange() |
| 223 #define CR_MSG_WM_SYSCOLORCHANGE(func) \ |
| 224 if (uMsg == WM_SYSCOLORCHANGE) { \ |
| 225 SetMsgHandled(TRUE); \ |
| 226 func(); \ |
| 227 lResult = 0; \ |
| 228 if (IsMsgHandled()) \ |
| 229 return TRUE; \ |
| 230 } |
| 231 |
| 232 // void OnEndSession(BOOL bEnding, UINT uLogOff) |
| 233 #define CR_MSG_WM_ENDSESSION(func) \ |
| 234 if (uMsg == WM_ENDSESSION) { \ |
| 235 SetMsgHandled(TRUE); \ |
| 236 func((BOOL)wParam, (UINT)lParam); \ |
| 237 lResult = 0; \ |
| 238 if (IsMsgHandled()) \ |
| 239 return TRUE; \ |
| 240 } |
| 241 |
| 242 // void OnShowWindow(BOOL bShow, UINT nStatus) |
| 243 #define CR_MSG_WM_SHOWWINDOW(func) \ |
| 244 if (uMsg == WM_SHOWWINDOW) { \ |
| 245 SetMsgHandled(TRUE); \ |
| 246 func((BOOL)wParam, (int)lParam); \ |
| 247 lResult = 0; \ |
| 248 if (IsMsgHandled()) \ |
| 249 return TRUE; \ |
| 250 } |
| 251 |
| 252 // HBRUSH OnCtlColorEdit(CDCHandle dc, CEdit edit) |
| 253 #define CR_MSG_WM_CTLCOLOREDIT(func) \ |
| 254 if (uMsg == WM_CTLCOLOREDIT) { \ |
| 255 SetMsgHandled(TRUE); \ |
| 256 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 257 if (IsMsgHandled()) \ |
| 258 return TRUE; \ |
| 259 } |
| 260 |
| 261 // HBRUSH OnCtlColorListBox(CDCHandle dc, CListBox listBox) |
| 262 #define CR_MSG_WM_CTLCOLORLISTBOX(func) \ |
| 263 if (uMsg == WM_CTLCOLORLISTBOX) { \ |
| 264 SetMsgHandled(TRUE); \ |
| 265 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 266 if (IsMsgHandled()) \ |
| 267 return TRUE; \ |
| 268 } |
| 269 |
| 270 // HBRUSH OnCtlColorBtn(CDCHandle dc, CButton button) |
| 271 #define CR_MSG_WM_CTLCOLORBTN(func) \ |
| 272 if (uMsg == WM_CTLCOLORBTN) { \ |
| 273 SetMsgHandled(TRUE); \ |
| 274 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 275 if (IsMsgHandled()) \ |
| 276 return TRUE; \ |
| 277 } |
| 278 |
| 279 // HBRUSH OnCtlColorDlg(CDCHandle dc, CWindow wnd) |
| 280 #define CR_MSG_WM_CTLCOLORDLG(func) \ |
| 281 if (uMsg == WM_CTLCOLORDLG) { \ |
| 282 SetMsgHandled(TRUE); \ |
| 283 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 284 if (IsMsgHandled()) \ |
| 285 return TRUE; \ |
| 286 } |
| 287 |
| 288 // HBRUSH OnCtlColorScrollBar(CDCHandle dc, CScrollBar scrollBar) |
| 289 #define CR_MSG_WM_CTLCOLORSCROLLBAR(func) \ |
| 290 if (uMsg == WM_CTLCOLORSCROLLBAR) { \ |
| 291 SetMsgHandled(TRUE); \ |
| 292 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 293 if (IsMsgHandled()) \ |
| 294 return TRUE; \ |
| 295 } |
| 296 |
| 297 // HBRUSH OnCtlColorStatic(CDCHandle dc, CStatic wndStatic) |
| 298 #define CR_MSG_WM_CTLCOLORSTATIC(func) \ |
| 299 if (uMsg == WM_CTLCOLORSTATIC) { \ |
| 300 SetMsgHandled(TRUE); \ |
| 301 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 302 if (IsMsgHandled()) \ |
| 303 return TRUE; \ |
| 304 } |
| 305 |
| 306 // void OnSettingChange(UINT uFlags, LPCTSTR lpszSection) |
| 307 #define CR_MSG_WM_SETTINGCHANGE(func) \ |
| 308 if (uMsg == WM_SETTINGCHANGE) { \ |
| 309 SetMsgHandled(TRUE); \ |
| 310 func((UINT)wParam, (LPCTSTR)lParam); \ |
| 311 lResult = 0; \ |
| 312 if (IsMsgHandled()) \ |
| 313 return TRUE; \ |
| 314 } |
| 315 |
| 316 // void OnDevModeChange(LPCTSTR lpDeviceName) |
| 317 #define CR_MSG_WM_DEVMODECHANGE(func) \ |
| 318 if (uMsg == WM_DEVMODECHANGE) { \ |
| 319 SetMsgHandled(TRUE); \ |
| 320 func((LPCTSTR)lParam); \ |
| 321 lResult = 0; \ |
| 322 if (IsMsgHandled()) \ |
| 323 return TRUE; \ |
| 324 } |
| 325 |
| 326 // void OnActivateApp(BOOL bActive, DWORD dwThreadID) |
| 327 #define CR_MSG_WM_ACTIVATEAPP(func) \ |
| 328 if (uMsg == WM_ACTIVATEAPP) { \ |
| 329 SetMsgHandled(TRUE); \ |
| 330 func((BOOL)wParam, (DWORD)lParam); \ |
| 331 lResult = 0; \ |
| 332 if (IsMsgHandled()) \ |
| 333 return TRUE; \ |
| 334 } |
| 335 |
| 336 // void OnFontChange() |
| 337 #define CR_MSG_WM_FONTCHANGE(func) \ |
| 338 if (uMsg == WM_FONTCHANGE) { \ |
| 339 SetMsgHandled(TRUE); \ |
| 340 func(); \ |
| 341 lResult = 0; \ |
| 342 if (IsMsgHandled()) \ |
| 343 return TRUE; \ |
| 344 } |
| 345 |
| 346 // void OnTimeChange() |
| 347 #define CR_MSG_WM_TIMECHANGE(func) \ |
| 348 if (uMsg == WM_TIMECHANGE) { \ |
| 349 SetMsgHandled(TRUE); \ |
| 350 func(); \ |
| 351 lResult = 0; \ |
| 352 if (IsMsgHandled()) \ |
| 353 return TRUE; \ |
| 354 } |
| 355 |
| 356 // void OnCancelMode() |
| 357 #define CR_MSG_WM_CANCELMODE(func) \ |
| 358 if (uMsg == WM_CANCELMODE) { \ |
| 359 SetMsgHandled(TRUE); \ |
| 360 func(); \ |
| 361 lResult = 0; \ |
| 362 if (IsMsgHandled()) \ |
| 363 return TRUE; \ |
| 364 } |
| 365 |
| 366 // BOOL OnSetCursor(CWindow wnd, UINT nHitTest, UINT message) |
| 367 #define CR_MSG_WM_SETCURSOR(func) \ |
| 368 if (uMsg == WM_SETCURSOR) { \ |
| 369 SetMsgHandled(TRUE); \ |
| 370 lResult = (LRESULT)func( \ |
| 371 (HWND)wParam, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)); \ |
| 372 if (IsMsgHandled()) \ |
| 373 return TRUE; \ |
| 374 } |
| 375 |
| 376 // int OnMouseActivate(CWindow wndTopLevel, UINT nHitTest, UINT message) |
| 377 #define CR_MSG_WM_MOUSEACTIVATE(func) \ |
| 378 if (uMsg == WM_MOUSEACTIVATE) { \ |
| 379 SetMsgHandled(TRUE); \ |
| 380 lResult = (LRESULT)func( \ |
| 381 (HWND)wParam, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)); \ |
| 382 if (IsMsgHandled()) \ |
| 383 return TRUE; \ |
| 384 } |
| 385 |
| 386 // void OnChildActivate() |
| 387 #define CR_MSG_WM_CHILDACTIVATE(func) \ |
| 388 if (uMsg == WM_CHILDACTIVATE) { \ |
| 389 SetMsgHandled(TRUE); \ |
| 390 func(); \ |
| 391 lResult = 0; \ |
| 392 if (IsMsgHandled()) \ |
| 393 return TRUE; \ |
| 394 } |
| 395 |
| 396 // void OnGetMinMaxInfo(LPMINMAXINFO lpMMI) |
| 397 #define CR_MSG_WM_GETMINMAXINFO(func) \ |
| 398 if (uMsg == WM_GETMINMAXINFO) { \ |
| 399 SetMsgHandled(TRUE); \ |
| 400 func((LPMINMAXINFO)lParam); \ |
| 401 lResult = 0; \ |
| 402 if (IsMsgHandled()) \ |
| 403 return TRUE; \ |
| 404 } |
| 405 |
| 406 // void OnIconEraseBkgnd(CDCHandle dc) |
| 407 #define CR_MSG_WM_ICONERASEBKGND(func) \ |
| 408 if (uMsg == WM_ICONERASEBKGND) { \ |
| 409 SetMsgHandled(TRUE); \ |
| 410 func((HDC)wParam); \ |
| 411 lResult = 0; \ |
| 412 if (IsMsgHandled()) \ |
| 413 return TRUE; \ |
| 414 } |
| 415 |
| 416 // void OnSpoolerStatus(UINT nStatus, UINT nJobs) |
| 417 #define CR_MSG_WM_SPOOLERSTATUS(func) \ |
| 418 if (uMsg == WM_SPOOLERSTATUS) { \ |
| 419 SetMsgHandled(TRUE); \ |
| 420 func((UINT)wParam, (UINT)LOWORD(lParam)); \ |
| 421 lResult = 0; \ |
| 422 if (IsMsgHandled()) \ |
| 423 return TRUE; \ |
| 424 } |
| 425 |
| 426 // void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) |
| 427 #define CR_MSG_WM_DRAWITEM(func) \ |
| 428 if (uMsg == WM_DRAWITEM) { \ |
| 429 SetMsgHandled(TRUE); \ |
| 430 func((UINT)wParam, (LPDRAWITEMSTRUCT)lParam); \ |
| 431 lResult = TRUE; \ |
| 432 if (IsMsgHandled()) \ |
| 433 return TRUE; \ |
| 434 } |
| 435 |
| 436 // void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct) |
| 437 #define CR_MSG_WM_MEASUREITEM(func) \ |
| 438 if (uMsg == WM_MEASUREITEM) { \ |
| 439 SetMsgHandled(TRUE); \ |
| 440 func((UINT)wParam, (LPMEASUREITEMSTRUCT)lParam); \ |
| 441 lResult = TRUE; \ |
| 442 if (IsMsgHandled()) \ |
| 443 return TRUE; \ |
| 444 } |
| 445 |
| 446 // void OnDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct) |
| 447 #define CR_MSG_WM_DELETEITEM(func) \ |
| 448 if (uMsg == WM_DELETEITEM) { \ |
| 449 SetMsgHandled(TRUE); \ |
| 450 func((UINT)wParam, (LPDELETEITEMSTRUCT)lParam); \ |
| 451 lResult = TRUE; \ |
| 452 if (IsMsgHandled()) \ |
| 453 return TRUE; \ |
| 454 } |
| 455 |
| 456 // int OnCharToItem(UINT nChar, UINT nIndex, CListBox listBox) |
| 457 #define CR_MSG_WM_CHARTOITEM(func) \ |
| 458 if (uMsg == WM_CHARTOITEM) { \ |
| 459 SetMsgHandled(TRUE); \ |
| 460 lResult = (LRESULT)func( \ |
| 461 (UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (HWND)lParam); \ |
| 462 if (IsMsgHandled()) \ |
| 463 return TRUE; \ |
| 464 } |
| 465 |
| 466 // int OnVKeyToItem(UINT nKey, UINT nIndex, CListBox listBox) |
| 467 #define CR_MSG_WM_VKEYTOITEM(func) \ |
| 468 if (uMsg == WM_VKEYTOITEM) { \ |
| 469 SetMsgHandled(TRUE); \ |
| 470 lResult = (LRESULT)func( \ |
| 471 (UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (HWND)lParam); \ |
| 472 if (IsMsgHandled()) \ |
| 473 return TRUE; \ |
| 474 } |
| 475 |
| 476 // HCURSOR OnQueryDragIcon() |
| 477 #define CR_MSG_WM_QUERYDRAGICON(func) \ |
| 478 if (uMsg == WM_QUERYDRAGICON) { \ |
| 479 SetMsgHandled(TRUE); \ |
| 480 lResult = (LRESULT)func(); \ |
| 481 if (IsMsgHandled()) \ |
| 482 return TRUE; \ |
| 483 } |
| 484 |
| 485 // int OnCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT lpCompareItemStruct) |
| 486 #define CR_MSG_WM_COMPAREITEM(func) \ |
| 487 if (uMsg == WM_COMPAREITEM) { \ |
| 488 SetMsgHandled(TRUE); \ |
| 489 lResult = (LRESULT)func((UINT)wParam, (LPCOMPAREITEMSTRUCT)lParam); \ |
| 490 if (IsMsgHandled()) \ |
| 491 return TRUE; \ |
| 492 } |
| 493 |
| 494 // void OnCompacting(UINT nCpuTime) |
| 495 #define CR_MSG_WM_COMPACTING(func) \ |
| 496 if (uMsg == WM_COMPACTING) { \ |
| 497 SetMsgHandled(TRUE); \ |
| 498 func((UINT)wParam); \ |
| 499 lResult = 0; \ |
| 500 if (IsMsgHandled()) \ |
| 501 return TRUE; \ |
| 502 } |
| 503 |
| 504 // BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct) |
| 505 #define CR_MSG_WM_NCCREATE(func) \ |
| 506 if (uMsg == WM_NCCREATE) { \ |
| 507 SetMsgHandled(TRUE); \ |
| 508 lResult = (LRESULT)func((LPCREATESTRUCT)lParam); \ |
| 509 if (IsMsgHandled()) \ |
| 510 return TRUE; \ |
| 511 } |
| 512 |
| 513 // void OnNcDestroy() |
| 514 #define CR_MSG_WM_NCDESTROY(func) \ |
| 515 if (uMsg == WM_NCDESTROY) { \ |
| 516 SetMsgHandled(TRUE); \ |
| 517 func(); \ |
| 518 lResult = 0; \ |
| 519 if (IsMsgHandled()) \ |
| 520 return TRUE; \ |
| 521 } |
| 522 |
| 523 // LRESULT OnNcCalcSize(BOOL bCalcValidRects, LPARAM lParam) |
| 524 #define CR_MSG_WM_NCCALCSIZE(func) \ |
| 525 if (uMsg == WM_NCCALCSIZE) { \ |
| 526 SetMsgHandled(TRUE); \ |
| 527 lResult = func((BOOL)wParam, lParam); \ |
| 528 if (IsMsgHandled()) \ |
| 529 return TRUE; \ |
| 530 } |
| 531 |
| 532 // UINT OnNcHitTest(gfx::Point point) |
| 533 #define CR_MSG_WM_NCHITTEST(func) \ |
| 534 if (uMsg == WM_NCHITTEST) { \ |
| 535 SetMsgHandled(TRUE); \ |
| 536 lResult = (LRESULT)func( \ |
| 537 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 538 if (IsMsgHandled()) \ |
| 539 return TRUE; \ |
| 540 } |
| 541 |
| 542 // void OnNcPaint(CRgn rgn) |
| 543 #define CR_MSG_WM_NCPAINT(func) \ |
| 544 if (uMsg == WM_NCPAINT) { \ |
| 545 SetMsgHandled(TRUE); \ |
| 546 func((HRGN)wParam); \ |
| 547 lResult = 0; \ |
| 548 if (IsMsgHandled()) \ |
| 549 return TRUE; \ |
| 550 } |
| 551 |
| 552 // BOOL OnNcActivate(BOOL bActive) |
| 553 #define CR_MSG_WM_NCACTIVATE(func) \ |
| 554 if (uMsg == WM_NCACTIVATE) { \ |
| 555 SetMsgHandled(TRUE); \ |
| 556 lResult = (LRESULT)func((BOOL)wParam); \ |
| 557 if (IsMsgHandled()) \ |
| 558 return TRUE; \ |
| 559 } |
| 560 |
| 561 // UINT OnGetDlgCode(LPMSG lpMsg) |
| 562 #define CR_MSG_WM_GETDLGCODE(func) \ |
| 563 if (uMsg == WM_GETDLGCODE) { \ |
| 564 SetMsgHandled(TRUE); \ |
| 565 lResult = (LRESULT)func((LPMSG)lParam); \ |
| 566 if (IsMsgHandled()) \ |
| 567 return TRUE; \ |
| 568 } |
| 569 |
| 570 // void OnNcMouseMove(UINT nHitTest, gfx::Point point) |
| 571 #define CR_MSG_WM_NCMOUSEMOVE(func) \ |
| 572 if (uMsg == WM_NCMOUSEMOVE) { \ |
| 573 SetMsgHandled(TRUE); \ |
| 574 func((UINT)wParam, \ |
| 575 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 576 lResult = 0; \ |
| 577 if (IsMsgHandled()) \ |
| 578 return TRUE; \ |
| 579 } |
| 580 |
| 581 // void OnNcLButtonDown(UINT nHitTest, gfx::Point point) |
| 582 #define CR_MSG_WM_NCLBUTTONDOWN(func) \ |
| 583 if (uMsg == WM_NCLBUTTONDOWN) { \ |
| 584 SetMsgHandled(TRUE); \ |
| 585 func((UINT)wParam, \ |
| 586 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 587 lResult = 0; \ |
| 588 if (IsMsgHandled()) \ |
| 589 return TRUE; \ |
| 590 } |
| 591 |
| 592 // void OnNcLButtonUp(UINT nHitTest, gfx::Point point) |
| 593 #define CR_MSG_WM_NCLBUTTONUP(func) \ |
| 594 if (uMsg == WM_NCLBUTTONUP) { \ |
| 595 SetMsgHandled(TRUE); \ |
| 596 func((UINT)wParam, \ |
| 597 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 598 lResult = 0; \ |
| 599 if (IsMsgHandled()) \ |
| 600 return TRUE; \ |
| 601 } |
| 602 |
| 603 // void OnNcLButtonDblClk(UINT nHitTest, gfx::Point point) |
| 604 #define CR_MSG_WM_NCLBUTTONDBLCLK(func) \ |
| 605 if (uMsg == WM_NCLBUTTONDBLCLK) { \ |
| 606 SetMsgHandled(TRUE); \ |
| 607 func((UINT)wParam, \ |
| 608 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 609 lResult = 0; \ |
| 610 if (IsMsgHandled()) \ |
| 611 return TRUE; \ |
| 612 } |
| 613 |
| 614 // void OnNcRButtonDown(UINT nHitTest, gfx::Point point) |
| 615 #define CR_MSG_WM_NCRBUTTONDOWN(func) \ |
| 616 if (uMsg == WM_NCRBUTTONDOWN) { \ |
| 617 SetMsgHandled(TRUE); \ |
| 618 func((UINT)wParam, \ |
| 619 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 620 lResult = 0; \ |
| 621 if (IsMsgHandled()) \ |
| 622 return TRUE; \ |
| 623 } |
| 624 |
| 625 // void OnNcRButtonUp(UINT nHitTest, gfx::Point point) |
| 626 #define CR_MSG_WM_NCRBUTTONUP(func) \ |
| 627 if (uMsg == WM_NCRBUTTONUP) { \ |
| 628 SetMsgHandled(TRUE); \ |
| 629 func((UINT)wParam, \ |
| 630 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 631 lResult = 0; \ |
| 632 if (IsMsgHandled()) \ |
| 633 return TRUE; \ |
| 634 } |
| 635 |
| 636 // void OnNcRButtonDblClk(UINT nHitTest, CPoint point) |
| 637 #define CR_MSG_WM_NCRBUTTONDBLCLK(func) \ |
| 638 if (uMsg == WM_NCRBUTTONDBLCLK) { \ |
| 639 SetMsgHandled(TRUE); \ |
| 640 func((UINT)wParam, \ |
| 641 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 642 lResult = 0; \ |
| 643 if (IsMsgHandled()) \ |
| 644 return TRUE; \ |
| 645 } |
| 646 |
| 647 // void OnNcMButtonDown(UINT nHitTest, CPoint point) |
| 648 #define CR_MSG_WM_NCMBUTTONDOWN(func) \ |
| 649 if (uMsg == WM_NCMBUTTONDOWN) { \ |
| 650 SetMsgHandled(TRUE); \ |
| 651 func((UINT)wParam, \ |
| 652 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 653 lResult = 0; \ |
| 654 if (IsMsgHandled()) \ |
| 655 return TRUE; \ |
| 656 } |
| 657 |
| 658 // void OnNcMButtonUp(UINT nHitTest, CPoint point) |
| 659 #define CR_MSG_WM_NCMBUTTONUP(func) \ |
| 660 if (uMsg == WM_NCMBUTTONUP) { \ |
| 661 SetMsgHandled(TRUE); \ |
| 662 func((UINT)wParam, \ |
| 663 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 664 lResult = 0; \ |
| 665 if (IsMsgHandled()) \ |
| 666 return TRUE; \ |
| 667 } |
| 668 |
| 669 // void OnNcMButtonDblClk(UINT nHitTest, CPoint point) |
| 670 #define CR_MSG_WM_NCMBUTTONDBLCLK(func) \ |
| 671 if (uMsg == WM_NCMBUTTONDBLCLK) { \ |
| 672 SetMsgHandled(TRUE); \ |
| 673 func((UINT)wParam, \ |
| 674 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 675 lResult = 0; \ |
| 676 if (IsMsgHandled()) \ |
| 677 return TRUE; \ |
| 678 } |
| 679 |
| 680 // void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 681 #define CR_MSG_WM_KEYDOWN(func) \ |
| 682 if (uMsg == WM_KEYDOWN) { \ |
| 683 SetMsgHandled(TRUE); \ |
| 684 func((TCHAR)wParam, \ |
| 685 (UINT)lParam & 0xFFFF, \ |
| 686 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 687 lResult = 0; \ |
| 688 if (IsMsgHandled()) \ |
| 689 return TRUE; \ |
| 690 } |
| 691 |
| 692 // void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 693 #define CR_MSG_WM_KEYUP(func) \ |
| 694 if (uMsg == WM_KEYUP) { \ |
| 695 SetMsgHandled(TRUE); \ |
| 696 func((TCHAR)wParam, \ |
| 697 (UINT)lParam & 0xFFFF, \ |
| 698 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 699 lResult = 0; \ |
| 700 if (IsMsgHandled()) \ |
| 701 return TRUE; \ |
| 702 } |
| 703 |
| 704 // void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 705 #define CR_MSG_WM_CHAR(func) \ |
| 706 if (uMsg == WM_CHAR) { \ |
| 707 SetMsgHandled(TRUE); \ |
| 708 func((TCHAR)wParam, \ |
| 709 (UINT)lParam & 0xFFFF, \ |
| 710 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 711 lResult = 0; \ |
| 712 if (IsMsgHandled()) \ |
| 713 return TRUE; \ |
| 714 } |
| 715 |
| 716 // void OnDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 717 #define CR_MSG_WM_DEADCHAR(func) \ |
| 718 if (uMsg == WM_DEADCHAR) { \ |
| 719 SetMsgHandled(TRUE); \ |
| 720 func((TCHAR)wParam, \ |
| 721 (UINT)lParam & 0xFFFF, \ |
| 722 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 723 lResult = 0; \ |
| 724 if (IsMsgHandled()) \ |
| 725 return TRUE; \ |
| 726 } |
| 727 |
| 728 // void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 729 #define CR_MSG_WM_SYSKEYDOWN(func) \ |
| 730 if (uMsg == WM_SYSKEYDOWN) { \ |
| 731 SetMsgHandled(TRUE); \ |
| 732 func((TCHAR)wParam, \ |
| 733 (UINT)lParam & 0xFFFF, \ |
| 734 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 735 lResult = 0; \ |
| 736 if (IsMsgHandled()) \ |
| 737 return TRUE; \ |
| 738 } |
| 739 |
| 740 // void OnSysKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 741 #define CR_MSG_WM_SYSKEYUP(func) \ |
| 742 if (uMsg == WM_SYSKEYUP) { \ |
| 743 SetMsgHandled(TRUE); \ |
| 744 func((TCHAR)wParam, \ |
| 745 (UINT)lParam & 0xFFFF, \ |
| 746 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 747 lResult = 0; \ |
| 748 if (IsMsgHandled()) \ |
| 749 return TRUE; \ |
| 750 } |
| 751 |
| 752 // void OnSysChar(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 753 #define CR_MSG_WM_SYSCHAR(func) \ |
| 754 if (uMsg == WM_SYSCHAR) { \ |
| 755 SetMsgHandled(TRUE); \ |
| 756 func((TCHAR)wParam, \ |
| 757 (UINT)lParam & 0xFFFF, \ |
| 758 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 759 lResult = 0; \ |
| 760 if (IsMsgHandled()) \ |
| 761 return TRUE; \ |
| 762 } |
| 763 |
| 764 // void OnSysDeadChar(UINT nChar, UINT nRepCnt, UINT nFlags) |
| 765 #define CR_MSG_WM_SYSDEADCHAR(func) \ |
| 766 if (uMsg == WM_SYSDEADCHAR) { \ |
| 767 SetMsgHandled(TRUE); \ |
| 768 func((TCHAR)wParam, \ |
| 769 (UINT)lParam & 0xFFFF, \ |
| 770 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 771 lResult = 0; \ |
| 772 if (IsMsgHandled()) \ |
| 773 return TRUE; \ |
| 774 } |
| 775 |
| 776 // void OnSysCommand(UINT nID, LPARAM lParam) |
| 777 #define CR_MSG_WM_SYSCOMMAND(func) \ |
| 778 if (uMsg == WM_SYSCOMMAND) { \ |
| 779 SetMsgHandled(TRUE); \ |
| 780 func((UINT)wParam, \ |
| 781 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 782 lResult = 0; \ |
| 783 if (IsMsgHandled()) \ |
| 784 return TRUE; \ |
| 785 } |
| 786 |
| 787 // void OnTCard(UINT idAction, DWORD dwActionData) |
| 788 #define CR_MSG_WM_TCARD(func) \ |
| 789 if (uMsg == WM_TCARD) { \ |
| 790 SetMsgHandled(TRUE); \ |
| 791 func((UINT)wParam, (DWORD)lParam); \ |
| 792 lResult = 0; \ |
| 793 if (IsMsgHandled()) \ |
| 794 return TRUE; \ |
| 795 } |
| 796 |
| 797 // void OnTimer(UINT_PTR nIDEvent) |
| 798 #define CR_MSG_WM_TIMER(func) \ |
| 799 if (uMsg == WM_TIMER) { \ |
| 800 SetMsgHandled(TRUE); \ |
| 801 func((UINT_PTR)wParam); \ |
| 802 lResult = 0; \ |
| 803 if (IsMsgHandled()) \ |
| 804 return TRUE; \ |
| 805 } |
| 806 |
| 807 // void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar pScrollBar) |
| 808 #define CR_MSG_WM_HSCROLL(func) \ |
| 809 if (uMsg == WM_HSCROLL) { \ |
| 810 SetMsgHandled(TRUE); \ |
| 811 func((int)LOWORD(wParam), (short)HIWORD(wParam), (HWND)lParam); \ |
| 812 lResult = 0; \ |
| 813 if (IsMsgHandled()) \ |
| 814 return TRUE; \ |
| 815 } |
| 816 |
| 817 // void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar pScrollBar) |
| 818 #define CR_MSG_WM_VSCROLL(func) \ |
| 819 if (uMsg == WM_VSCROLL) { \ |
| 820 SetMsgHandled(TRUE); \ |
| 821 func((int)LOWORD(wParam), (short)HIWORD(wParam), (HWND)lParam); \ |
| 822 lResult = 0; \ |
| 823 if (IsMsgHandled()) \ |
| 824 return TRUE; \ |
| 825 } |
| 826 |
| 827 // void OnInitMenu(CMenu menu) |
| 828 #define CR_MSG_WM_INITMENU(func) \ |
| 829 if (uMsg == WM_INITMENU) { \ |
| 830 SetMsgHandled(TRUE); \ |
| 831 func((HMENU)wParam); \ |
| 832 lResult = 0; \ |
| 833 if (IsMsgHandled()) \ |
| 834 return TRUE; \ |
| 835 } |
| 836 |
| 837 // void OnInitMenuPopup(CMenu menuPopup, UINT nIndex, BOOL bSysMenu) |
| 838 #define CR_MSG_WM_INITMENUPOPUP(func) \ |
| 839 if (uMsg == WM_INITMENUPOPUP) { \ |
| 840 SetMsgHandled(TRUE); \ |
| 841 func((HMENU)wParam, (UINT)LOWORD(lParam), (BOOL)HIWORD(lParam)); \ |
| 842 lResult = 0; \ |
| 843 if (IsMsgHandled()) \ |
| 844 return TRUE; \ |
| 845 } |
| 846 |
| 847 // void OnMenuSelect(UINT nItemID, UINT nFlags, CMenu menu) |
| 848 #define CR_MSG_WM_MENUSELECT(func) \ |
| 849 if (uMsg == WM_MENUSELECT) { \ |
| 850 SetMsgHandled(TRUE); \ |
| 851 func((UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (HMENU)lParam); \ |
| 852 lResult = 0; \ |
| 853 if (IsMsgHandled()) \ |
| 854 return TRUE; \ |
| 855 } |
| 856 |
| 857 // LRESULT OnMenuChar(UINT nChar, UINT nFlags, CMenu menu) |
| 858 #define CR_MSG_WM_MENUCHAR(func) \ |
| 859 if (uMsg == WM_MENUCHAR) { \ |
| 860 SetMsgHandled(TRUE); \ |
| 861 lResult = \ |
| 862 func((TCHAR)LOWORD(wParam), (UINT)HIWORD(wParam), (HMENU)lParam); \ |
| 863 if (IsMsgHandled()) \ |
| 864 return TRUE; \ |
| 865 } |
| 866 |
| 867 // LRESULT OnNotify(int idCtrl, LPNMHDR pnmh) |
| 868 #define CR_MSG_WM_NOTIFY(func) \ |
| 869 if (uMsg == WM_NOTIFY) { \ |
| 870 SetMsgHandled(TRUE); \ |
| 871 lResult = func((int)wParam, (LPNMHDR)lParam); \ |
| 872 if (IsMsgHandled()) \ |
| 873 return TRUE; \ |
| 874 } |
| 875 |
| 876 // void OnEnterIdle(UINT nWhy, CWindow wndWho) |
| 877 #define CR_MSG_WM_ENTERIDLE(func) \ |
| 878 if (uMsg == WM_ENTERIDLE) { \ |
| 879 SetMsgHandled(TRUE); \ |
| 880 func((UINT)wParam, (HWND)lParam); \ |
| 881 lResult = 0; \ |
| 882 if (IsMsgHandled()) \ |
| 883 return TRUE; \ |
| 884 } |
| 885 |
| 886 // void OnMouseMove(UINT nFlags, CPoint point) |
| 887 #define CR_MSG_WM_MOUSEMOVE(func) \ |
| 888 if (uMsg == WM_MOUSEMOVE) { \ |
| 889 SetMsgHandled(TRUE); \ |
| 890 func((UINT)wParam, \ |
| 891 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 892 lResult = 0; \ |
| 893 if (IsMsgHandled()) \ |
| 894 return TRUE; \ |
| 895 } |
| 896 |
| 897 // BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) |
| 898 #define CR_MSG_WM_MOUSEWHEEL(func) \ |
| 899 if (uMsg == WM_MOUSEWHEEL) { \ |
| 900 SetMsgHandled(TRUE); \ |
| 901 lResult = (LRESULT)func( \ |
| 902 (UINT)LOWORD(wParam), \ |
| 903 (short)HIWORD(wParam), \ |
| 904 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 905 if (IsMsgHandled()) \ |
| 906 return TRUE; \ |
| 907 } |
| 908 |
| 909 // void OnLButtonDown(UINT nFlags, CPoint point) |
| 910 #define CR_MSG_WM_LBUTTONDOWN(func) \ |
| 911 if (uMsg == WM_LBUTTONDOWN) { \ |
| 912 SetMsgHandled(TRUE); \ |
| 913 func((UINT)wParam, \ |
| 914 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 915 lResult = 0; \ |
| 916 if (IsMsgHandled()) \ |
| 917 return TRUE; \ |
| 918 } |
| 919 |
| 920 // void OnLButtonUp(UINT nFlags, CPoint point) |
| 921 #define CR_MSG_WM_LBUTTONUP(func) \ |
| 922 if (uMsg == WM_LBUTTONUP) { \ |
| 923 SetMsgHandled(TRUE); \ |
| 924 func((UINT)wParam, \ |
| 925 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 926 lResult = 0; \ |
| 927 if (IsMsgHandled()) \ |
| 928 return TRUE; \ |
| 929 } |
| 930 |
| 931 // void OnLButtonDblClk(UINT nFlags, CPoint point) |
| 932 #define CR_MSG_WM_LBUTTONDBLCLK(func) \ |
| 933 if (uMsg == WM_LBUTTONDBLCLK) { \ |
| 934 SetMsgHandled(TRUE); \ |
| 935 func((UINT)wParam, \ |
| 936 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 937 lResult = 0; \ |
| 938 if (IsMsgHandled()) \ |
| 939 return TRUE; \ |
| 940 } |
| 941 |
| 942 // void OnRButtonDown(UINT nFlags, CPoint point) |
| 943 #define CR_MSG_WM_RBUTTONDOWN(func) \ |
| 944 if (uMsg == WM_RBUTTONDOWN) { \ |
| 945 SetMsgHandled(TRUE); \ |
| 946 func((UINT)wParam, \ |
| 947 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 948 lResult = 0; \ |
| 949 if (IsMsgHandled()) \ |
| 950 return TRUE; \ |
| 951 } |
| 952 |
| 953 // void OnRButtonUp(UINT nFlags, CPoint point) |
| 954 #define CR_MSG_WM_RBUTTONUP(func) \ |
| 955 if (uMsg == WM_RBUTTONUP) { \ |
| 956 SetMsgHandled(TRUE); \ |
| 957 func((UINT)wParam, \ |
| 958 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 959 lResult = 0; \ |
| 960 if (IsMsgHandled()) \ |
| 961 return TRUE; \ |
| 962 } |
| 963 |
| 964 // void OnRButtonDblClk(UINT nFlags, CPoint point) |
| 965 #define CR_MSG_WM_RBUTTONDBLCLK(func) \ |
| 966 if (uMsg == WM_RBUTTONDBLCLK) { \ |
| 967 SetMsgHandled(TRUE); \ |
| 968 func((UINT)wParam, \ |
| 969 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 970 lResult = 0; \ |
| 971 if (IsMsgHandled()) \ |
| 972 return TRUE; \ |
| 973 } |
| 974 |
| 975 // void OnMButtonDown(UINT nFlags, CPoint point) |
| 976 #define CR_MSG_WM_MBUTTONDOWN(func) \ |
| 977 if (uMsg == WM_MBUTTONDOWN) { \ |
| 978 SetMsgHandled(TRUE); \ |
| 979 func((UINT)wParam, \ |
| 980 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 981 lResult = 0; \ |
| 982 if (IsMsgHandled()) \ |
| 983 return TRUE; \ |
| 984 } |
| 985 |
| 986 // void OnMButtonUp(UINT nFlags, CPoint point) |
| 987 #define CR_MSG_WM_MBUTTONUP(func) \ |
| 988 if (uMsg == WM_MBUTTONUP) { \ |
| 989 SetMsgHandled(TRUE); \ |
| 990 func((UINT)wParam, \ |
| 991 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 992 lResult = 0; \ |
| 993 if (IsMsgHandled()) \ |
| 994 return TRUE; \ |
| 995 } |
| 996 |
| 997 // void OnMButtonDblClk(UINT nFlags, CPoint point) |
| 998 #define CR_MSG_WM_MBUTTONDBLCLK(func) \ |
| 999 if (uMsg == WM_MBUTTONDBLCLK) { \ |
| 1000 SetMsgHandled(TRUE); \ |
| 1001 func((UINT)wParam, \ |
| 1002 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1003 lResult = 0; \ |
| 1004 if (IsMsgHandled()) \ |
| 1005 return TRUE; \ |
| 1006 } |
| 1007 |
| 1008 // void OnParentNotify(UINT message, UINT nChildID, LPARAM lParam) |
| 1009 #define CR_MSG_WM_PARENTNOTIFY(func) \ |
| 1010 if (uMsg == WM_PARENTNOTIFY) { \ |
| 1011 SetMsgHandled(TRUE); \ |
| 1012 func((UINT)LOWORD(wParam), (UINT)HIWORD(wParam), lParam); \ |
| 1013 lResult = 0; \ |
| 1014 if (IsMsgHandled()) \ |
| 1015 return TRUE; \ |
| 1016 } |
| 1017 |
| 1018 // void OnMDIActivate(CWindow wndActivate, CWindow wndDeactivate) |
| 1019 #define CR_MSG_WM_MDIACTIVATE(func) \ |
| 1020 if (uMsg == WM_MDIACTIVATE) { \ |
| 1021 SetMsgHandled(TRUE); \ |
| 1022 func((HWND)wParam, (HWND)lParam); \ |
| 1023 lResult = 0; \ |
| 1024 if (IsMsgHandled()) \ |
| 1025 return TRUE; \ |
| 1026 } |
| 1027 |
| 1028 // void OnRenderFormat(UINT nFormat) |
| 1029 #define CR_MSG_WM_RENDERFORMAT(func) \ |
| 1030 if (uMsg == WM_RENDERFORMAT) { \ |
| 1031 SetMsgHandled(TRUE); \ |
| 1032 func((UINT)wParam); \ |
| 1033 lResult = 0; \ |
| 1034 if (IsMsgHandled()) \ |
| 1035 return TRUE; \ |
| 1036 } |
| 1037 |
| 1038 // void OnRenderAllFormats() |
| 1039 #define CR_MSG_WM_RENDERALLFORMATS(func) \ |
| 1040 if (uMsg == WM_RENDERALLFORMATS) { \ |
| 1041 SetMsgHandled(TRUE); \ |
| 1042 func(); \ |
| 1043 lResult = 0; \ |
| 1044 if (IsMsgHandled()) \ |
| 1045 return TRUE; \ |
| 1046 } |
| 1047 |
| 1048 // void OnDestroyClipboard() |
| 1049 #define CR_MSG_WM_DESTROYCLIPBOARD(func) \ |
| 1050 if (uMsg == WM_DESTROYCLIPBOARD) { \ |
| 1051 SetMsgHandled(TRUE); \ |
| 1052 func(); \ |
| 1053 lResult = 0; \ |
| 1054 if (IsMsgHandled()) \ |
| 1055 return TRUE; \ |
| 1056 } |
| 1057 |
| 1058 // void OnDrawClipboard() |
| 1059 #define CR_MSG_WM_DRAWCLIPBOARD(func) \ |
| 1060 if (uMsg == WM_DRAWCLIPBOARD) { \ |
| 1061 SetMsgHandled(TRUE); \ |
| 1062 func(); \ |
| 1063 lResult = 0; \ |
| 1064 if (IsMsgHandled()) \ |
| 1065 return TRUE; \ |
| 1066 } |
| 1067 |
| 1068 // void OnPaintClipboard(CWindow wndViewer, const LPPAINTSTRUCT lpPaintStruct) |
| 1069 #define CR_MSG_WM_PAINTCLIPBOARD(func) \ |
| 1070 if (uMsg == WM_PAINTCLIPBOARD) { \ |
| 1071 SetMsgHandled(TRUE); \ |
| 1072 func((HWND)wParam, (const LPPAINTSTRUCT)::GlobalLock((HGLOBAL)lParam)); \ |
| 1073 ::GlobalUnlock((HGLOBAL)lParam); \ |
| 1074 lResult = 0; \ |
| 1075 if (IsMsgHandled()) \ |
| 1076 return TRUE; \ |
| 1077 } |
| 1078 |
| 1079 // void OnVScrollClipboard(CWindow wndViewer, UINT nSBCode, UINT nPos) |
| 1080 #define CR_MSG_WM_VSCROLLCLIPBOARD(func) \ |
| 1081 if (uMsg == WM_VSCROLLCLIPBOARD) { \ |
| 1082 SetMsgHandled(TRUE); \ |
| 1083 func((HWND)wParam, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)); \ |
| 1084 lResult = 0; \ |
| 1085 if (IsMsgHandled()) \ |
| 1086 return TRUE; \ |
| 1087 } |
| 1088 |
| 1089 // void OnContextMenu(CWindow wnd, CPoint point) |
| 1090 #define CR_MSG_WM_CONTEXTMENU(func) \ |
| 1091 if (uMsg == WM_CONTEXTMENU) { \ |
| 1092 SetMsgHandled(TRUE); \ |
| 1093 func((HWND)wParam, \ |
| 1094 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1095 lResult = 0; \ |
| 1096 if (IsMsgHandled()) \ |
| 1097 return TRUE; \ |
| 1098 } |
| 1099 |
| 1100 // void OnSizeClipboard(CWindow wndViewer, const LPRECT lpRect) |
| 1101 #define CR_MSG_WM_SIZECLIPBOARD(func) \ |
| 1102 if (uMsg == WM_SIZECLIPBOARD) { \ |
| 1103 SetMsgHandled(TRUE); \ |
| 1104 func((HWND)wParam, (const LPRECT)::GlobalLock((HGLOBAL)lParam)); \ |
| 1105 ::GlobalUnlock((HGLOBAL)lParam); \ |
| 1106 lResult = 0; \ |
| 1107 if (IsMsgHandled()) \ |
| 1108 return TRUE; \ |
| 1109 } |
| 1110 |
| 1111 // void OnAskCbFormatName(UINT nMaxCount, LPTSTR lpszString) |
| 1112 #define CR_MSG_WM_ASKCBFORMATNAME(func) \ |
| 1113 if (uMsg == WM_ASKCBFORMATNAME) { \ |
| 1114 SetMsgHandled(TRUE); \ |
| 1115 func((DWORD)wParam, (LPTSTR)lParam); \ |
| 1116 lResult = 0; \ |
| 1117 if (IsMsgHandled()) \ |
| 1118 return TRUE; \ |
| 1119 } |
| 1120 |
| 1121 // void OnChangeCbChain(CWindow wndRemove, CWindow wndAfter) |
| 1122 #define CR_MSG_WM_CHANGECBCHAIN(func) \ |
| 1123 if (uMsg == WM_CHANGECBCHAIN) { \ |
| 1124 SetMsgHandled(TRUE); \ |
| 1125 func((HWND)wParam, (HWND)lParam); \ |
| 1126 lResult = 0; \ |
| 1127 if (IsMsgHandled()) \ |
| 1128 return TRUE; \ |
| 1129 } |
| 1130 |
| 1131 // void OnHScrollClipboard(CWindow wndViewer, UINT nSBCode, UINT nPos) |
| 1132 #define CR_MSG_WM_HSCROLLCLIPBOARD(func) \ |
| 1133 if (uMsg == WM_HSCROLLCLIPBOARD) { \ |
| 1134 SetMsgHandled(TRUE); \ |
| 1135 func((HWND)wParam, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)); \ |
| 1136 lResult = 0; \ |
| 1137 if (IsMsgHandled()) \ |
| 1138 return TRUE; \ |
| 1139 } |
| 1140 |
| 1141 // BOOL OnQueryNewPalette() |
| 1142 #define CR_MSG_WM_QUERYNEWPALETTE(func) \ |
| 1143 if (uMsg == WM_QUERYNEWPALETTE) { \ |
| 1144 SetMsgHandled(TRUE); \ |
| 1145 lResult = (LRESULT)func(); \ |
| 1146 if (IsMsgHandled()) \ |
| 1147 return TRUE; \ |
| 1148 } |
| 1149 |
| 1150 // void OnPaletteChanged(CWindow wndFocus) |
| 1151 #define CR_MSG_WM_PALETTECHANGED(func) \ |
| 1152 if (uMsg == WM_PALETTECHANGED) { \ |
| 1153 SetMsgHandled(TRUE); \ |
| 1154 func((HWND)wParam); \ |
| 1155 lResult = 0; \ |
| 1156 if (IsMsgHandled()) \ |
| 1157 return TRUE; \ |
| 1158 } |
| 1159 |
| 1160 // void OnPaletteIsChanging(CWindow wndPalChg) |
| 1161 #define CR_MSG_WM_PALETTEISCHANGING(func) \ |
| 1162 if (uMsg == WM_PALETTEISCHANGING) { \ |
| 1163 SetMsgHandled(TRUE); \ |
| 1164 func((HWND)wParam); \ |
| 1165 lResult = 0; \ |
| 1166 if (IsMsgHandled()) \ |
| 1167 return TRUE; \ |
| 1168 } |
| 1169 |
| 1170 // void OnDropFiles(HDROP hDropInfo) |
| 1171 #define CR_MSG_WM_DROPFILES(func) \ |
| 1172 if (uMsg == WM_DROPFILES) { \ |
| 1173 SetMsgHandled(TRUE); \ |
| 1174 func((HDROP)wParam); \ |
| 1175 lResult = 0; \ |
| 1176 if (IsMsgHandled()) \ |
| 1177 return TRUE; \ |
| 1178 } |
| 1179 |
| 1180 // void OnWindowPosChanging(LPWINDOWPOS lpWndPos) |
| 1181 #define CR_MSG_WM_WINDOWPOSCHANGING(func) \ |
| 1182 if (uMsg == WM_WINDOWPOSCHANGING) { \ |
| 1183 SetMsgHandled(TRUE); \ |
| 1184 func((LPWINDOWPOS)lParam); \ |
| 1185 lResult = 0; \ |
| 1186 if (IsMsgHandled()) \ |
| 1187 return TRUE; \ |
| 1188 } |
| 1189 |
| 1190 // void OnWindowPosChanged(LPWINDOWPOS lpWndPos) |
| 1191 #define CR_MSG_WM_WINDOWPOSCHANGED(func) \ |
| 1192 if (uMsg == WM_WINDOWPOSCHANGED) { \ |
| 1193 SetMsgHandled(TRUE); \ |
| 1194 func((LPWINDOWPOS)lParam); \ |
| 1195 lResult = 0; \ |
| 1196 if (IsMsgHandled()) \ |
| 1197 return TRUE; \ |
| 1198 } |
| 1199 |
| 1200 // void OnExitMenuLoop(BOOL fIsTrackPopupMenu) |
| 1201 #define CR_MSG_WM_EXITMENULOOP(func) \ |
| 1202 if (uMsg == WM_EXITMENULOOP) { \ |
| 1203 SetMsgHandled(TRUE); \ |
| 1204 func((BOOL)wParam); \ |
| 1205 lResult = 0; \ |
| 1206 if (IsMsgHandled()) \ |
| 1207 return TRUE; \ |
| 1208 } |
| 1209 |
| 1210 // void OnEnterMenuLoop(BOOL fIsTrackPopupMenu) |
| 1211 #define CR_MSG_WM_ENTERMENULOOP(func) \ |
| 1212 if (uMsg == WM_ENTERMENULOOP) { \ |
| 1213 SetMsgHandled(TRUE); \ |
| 1214 func((BOOL)wParam); \ |
| 1215 lResult = 0; \ |
| 1216 if (IsMsgHandled()) \ |
| 1217 return TRUE; \ |
| 1218 } |
| 1219 |
| 1220 // void OnStyleChanged(int nStyleType, LPSTYLESTRUCT lpStyleStruct) |
| 1221 #define CR_MSG_WM_STYLECHANGED(func) \ |
| 1222 if (uMsg == WM_STYLECHANGED) { \ |
| 1223 SetMsgHandled(TRUE); \ |
| 1224 func((UINT)wParam, (LPSTYLESTRUCT)lParam); \ |
| 1225 lResult = 0; \ |
| 1226 if (IsMsgHandled()) \ |
| 1227 return TRUE; \ |
| 1228 } |
| 1229 |
| 1230 // void OnStyleChanging(int nStyleType, LPSTYLESTRUCT lpStyleStruct) |
| 1231 #define CR_MSG_WM_STYLECHANGING(func) \ |
| 1232 if (uMsg == WM_STYLECHANGING) { \ |
| 1233 SetMsgHandled(TRUE); \ |
| 1234 func((UINT)wParam, (LPSTYLESTRUCT)lParam); \ |
| 1235 lResult = 0; \ |
| 1236 if (IsMsgHandled()) \ |
| 1237 return TRUE; \ |
| 1238 } |
| 1239 |
| 1240 // void OnSizing(UINT fwSide, LPRECT pRect) |
| 1241 #define CR_MSG_WM_SIZING(func) \ |
| 1242 if (uMsg == WM_SIZING) { \ |
| 1243 SetMsgHandled(TRUE); \ |
| 1244 func((UINT)wParam, (LPRECT)lParam); \ |
| 1245 lResult = TRUE; \ |
| 1246 if (IsMsgHandled()) \ |
| 1247 return TRUE; \ |
| 1248 } |
| 1249 |
| 1250 // void OnMoving(UINT fwSide, LPRECT pRect) |
| 1251 #define CR_MSG_WM_MOVING(func) \ |
| 1252 if (uMsg == WM_MOVING) { \ |
| 1253 SetMsgHandled(TRUE); \ |
| 1254 func((UINT)wParam, (LPRECT)lParam); \ |
| 1255 lResult = TRUE; \ |
| 1256 if (IsMsgHandled()) \ |
| 1257 return TRUE; \ |
| 1258 } |
| 1259 |
| 1260 // void OnCaptureChanged(CWindow wnd) |
| 1261 #define CR_MSG_WM_CAPTURECHANGED(func) \ |
| 1262 if (uMsg == WM_CAPTURECHANGED) { \ |
| 1263 SetMsgHandled(TRUE); \ |
| 1264 func((HWND)lParam); \ |
| 1265 lResult = 0; \ |
| 1266 if (IsMsgHandled()) \ |
| 1267 return TRUE; \ |
| 1268 } |
| 1269 |
| 1270 // BOOL OnDeviceChange(UINT nEventType, DWORD dwData) |
| 1271 #define CR_MSG_WM_DEVICECHANGE(func) \ |
| 1272 if (uMsg == WM_DEVICECHANGE) { \ |
| 1273 SetMsgHandled(TRUE); \ |
| 1274 lResult = (LRESULT)func((UINT)wParam, (DWORD)lParam); \ |
| 1275 if (IsMsgHandled()) \ |
| 1276 return TRUE; \ |
| 1277 } |
| 1278 |
| 1279 // void OnCommand(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 1280 #define CR_MSG_WM_COMMAND(func) \ |
| 1281 if (uMsg == WM_COMMAND) { \ |
| 1282 SetMsgHandled(TRUE); \ |
| 1283 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 1284 lResult = 0; \ |
| 1285 if (IsMsgHandled()) \ |
| 1286 return TRUE; \ |
| 1287 } |
| 1288 |
| 1289 // void OnDisplayChange(UINT uBitsPerPixel, gfx::Size sizeScreen) |
| 1290 #define CR_MSG_WM_DISPLAYCHANGE(func) \ |
| 1291 if (uMsg == WM_DISPLAYCHANGE) { \ |
| 1292 SetMsgHandled(TRUE); \ |
| 1293 func((UINT)wParam, \ |
| 1294 gfx::Size(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1295 lResult = 0; \ |
| 1296 if (IsMsgHandled()) \ |
| 1297 return TRUE; \ |
| 1298 } |
| 1299 |
| 1300 // void OnEnterSizeMove() |
| 1301 #define CR_MSG_WM_ENTERSIZEMOVE(func) \ |
| 1302 if (uMsg == WM_ENTERSIZEMOVE) { \ |
| 1303 SetMsgHandled(TRUE); \ |
| 1304 func(); \ |
| 1305 lResult = 0; \ |
| 1306 if (IsMsgHandled()) \ |
| 1307 return TRUE; \ |
| 1308 } |
| 1309 |
| 1310 // void OnExitSizeMove() |
| 1311 #define CR_MSG_WM_EXITSIZEMOVE(func) \ |
| 1312 if (uMsg == WM_EXITSIZEMOVE) { \ |
| 1313 SetMsgHandled(TRUE); \ |
| 1314 func(); \ |
| 1315 lResult = 0; \ |
| 1316 if (IsMsgHandled()) \ |
| 1317 return TRUE; \ |
| 1318 } |
| 1319 |
| 1320 // HFONT OnGetFont() |
| 1321 #define CR_MSG_WM_GETFONT(func) \ |
| 1322 if (uMsg == WM_GETFONT) { \ |
| 1323 SetMsgHandled(TRUE); \ |
| 1324 lResult = (LRESULT)func(); \ |
| 1325 if (IsMsgHandled()) \ |
| 1326 return TRUE; \ |
| 1327 } |
| 1328 |
| 1329 // LRESULT OnGetHotKey() |
| 1330 #define CR_MSG_WM_GETHOTKEY(func) \ |
| 1331 if (uMsg == WM_GETHOTKEY) { \ |
| 1332 SetMsgHandled(TRUE); \ |
| 1333 lResult = func(); \ |
| 1334 if (IsMsgHandled()) \ |
| 1335 return TRUE; \ |
| 1336 } |
| 1337 |
| 1338 // HICON OnGetIcon() |
| 1339 #define CR_MSG_WM_GETICON(func) \ |
| 1340 if (uMsg == WM_GETICON) { \ |
| 1341 SetMsgHandled(TRUE); \ |
| 1342 lResult = (LRESULT)func((UINT)wParam); \ |
| 1343 if (IsMsgHandled()) \ |
| 1344 return TRUE; \ |
| 1345 } |
| 1346 |
| 1347 // int OnGetText(int cchTextMax, LPTSTR lpszText) |
| 1348 #define CR_MSG_WM_GETTEXT(func) \ |
| 1349 if (uMsg == WM_GETTEXT) { \ |
| 1350 SetMsgHandled(TRUE); \ |
| 1351 lResult = (LRESULT)func((int)wParam, (LPTSTR)lParam); \ |
| 1352 if (IsMsgHandled()) \ |
| 1353 return TRUE; \ |
| 1354 } |
| 1355 |
| 1356 // int OnGetTextLength() |
| 1357 #define CR_MSG_WM_GETTEXTLENGTH(func) \ |
| 1358 if (uMsg == WM_GETTEXTLENGTH) { \ |
| 1359 SetMsgHandled(TRUE); \ |
| 1360 lResult = (LRESULT)func(); \ |
| 1361 if (IsMsgHandled()) \ |
| 1362 return TRUE; \ |
| 1363 } |
| 1364 |
| 1365 // void OnHelp(LPHELPINFO lpHelpInfo) |
| 1366 #define CR_MSG_WM_HELP(func) \ |
| 1367 if (uMsg == WM_HELP) { \ |
| 1368 SetMsgHandled(TRUE); \ |
| 1369 func((LPHELPINFO)lParam); \ |
| 1370 lResult = TRUE; \ |
| 1371 if (IsMsgHandled()) \ |
| 1372 return TRUE; \ |
| 1373 } |
| 1374 |
| 1375 // void OnHotKey(int nHotKeyID, UINT uModifiers, UINT uVirtKey) |
| 1376 #define CR_MSG_WM_HOTKEY(func) \ |
| 1377 if (uMsg == WM_HOTKEY) { \ |
| 1378 SetMsgHandled(TRUE); \ |
| 1379 func((int)wParam, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam)); \ |
| 1380 lResult = 0; \ |
| 1381 if (IsMsgHandled()) \ |
| 1382 return TRUE; \ |
| 1383 } |
| 1384 |
| 1385 // void OnInputLangChange(DWORD dwCharSet, HKL hKbdLayout) |
| 1386 #define CR_MSG_WM_INPUTLANGCHANGE(func) \ |
| 1387 if (uMsg == WM_INPUTLANGCHANGE) { \ |
| 1388 SetMsgHandled(TRUE); \ |
| 1389 func((DWORD)wParam, (HKL)lParam); \ |
| 1390 lResult = TRUE; \ |
| 1391 if (IsMsgHandled()) \ |
| 1392 return TRUE; \ |
| 1393 } |
| 1394 |
| 1395 // void OnInputLangChangeRequest(BOOL bSysCharSet, HKL hKbdLayout) |
| 1396 #define CR_MSG_WM_INPUTLANGCHANGEREQUEST(func) \ |
| 1397 if (uMsg == WM_INPUTLANGCHANGEREQUEST) { \ |
| 1398 SetMsgHandled(TRUE); \ |
| 1399 func((BOOL)wParam, (HKL)lParam); \ |
| 1400 lResult = 0; \ |
| 1401 if (IsMsgHandled()) \ |
| 1402 return TRUE; \ |
| 1403 } |
| 1404 |
| 1405 // void OnNextDlgCtl(BOOL bHandle, WPARAM wCtlFocus) |
| 1406 #define CR_MSG_WM_NEXTDLGCTL(func) \ |
| 1407 if (uMsg == WM_NEXTDLGCTL) { \ |
| 1408 SetMsgHandled(TRUE); \ |
| 1409 func((BOOL)LOWORD(lParam), wParam); \ |
| 1410 lResult = 0; \ |
| 1411 if (IsMsgHandled()) \ |
| 1412 return TRUE; \ |
| 1413 } |
| 1414 |
| 1415 // void OnNextMenu(int nVirtKey, LPMDINEXTMENU lpMdiNextMenu) |
| 1416 #define CR_MSG_WM_NEXTMENU(func) \ |
| 1417 if (uMsg == WM_NEXTMENU) { \ |
| 1418 SetMsgHandled(TRUE); \ |
| 1419 func((int)wParam, (LPMDINEXTMENU)lParam); \ |
| 1420 lResult = 0; \ |
| 1421 if (IsMsgHandled()) \ |
| 1422 return TRUE; \ |
| 1423 } |
| 1424 |
| 1425 // int OnNotifyFormat(CWindow wndFrom, int nCommand) |
| 1426 #define CR_MSG_WM_NOTIFYFORMAT(func) \ |
| 1427 if (uMsg == WM_NOTIFYFORMAT) { \ |
| 1428 SetMsgHandled(TRUE); \ |
| 1429 lResult = (LRESULT)func((HWND)wParam, (int)lParam); \ |
| 1430 if (IsMsgHandled()) \ |
| 1431 return TRUE; \ |
| 1432 } |
| 1433 |
| 1434 // BOOL OnPowerBroadcast(DWORD dwPowerEvent, DWORD dwData) |
| 1435 #define CR_MSG_WM_POWERBROADCAST(func) \ |
| 1436 if (uMsg == WM_POWERBROADCAST) { \ |
| 1437 SetMsgHandled(TRUE); \ |
| 1438 lResult = (LRESULT)func((DWORD)wParam, (DWORD)lParam); \ |
| 1439 if (IsMsgHandled()) \ |
| 1440 return TRUE; \ |
| 1441 } |
| 1442 |
| 1443 // void OnPrint(CDCHandle dc, UINT uFlags) |
| 1444 #define CR_MSG_WM_PRINT(func) \ |
| 1445 if (uMsg == WM_PRINT) { \ |
| 1446 SetMsgHandled(TRUE); \ |
| 1447 func((HDC)wParam, (UINT)lParam); \ |
| 1448 lResult = 0; \ |
| 1449 if (IsMsgHandled()) \ |
| 1450 return TRUE; \ |
| 1451 } |
| 1452 |
| 1453 // void OnPrintClient(CDCHandle dc, UINT uFlags) |
| 1454 #define CR_MSG_WM_PRINTCLIENT(func) \ |
| 1455 if (uMsg == WM_PRINTCLIENT) { \ |
| 1456 SetMsgHandled(TRUE); \ |
| 1457 func((HDC)wParam, (UINT)lParam); \ |
| 1458 lResult = 0; \ |
| 1459 if (IsMsgHandled()) \ |
| 1460 return TRUE; \ |
| 1461 } |
| 1462 |
| 1463 // void OnRasDialEvent(RASCONNSTATE rasconnstate, DWORD dwError) |
| 1464 #define CR_MSG_WM_RASDIALEVENT(func) \ |
| 1465 if (uMsg == WM_RASDIALEVENT) { \ |
| 1466 SetMsgHandled(TRUE); \ |
| 1467 func((RASCONNSTATE)wParam, (DWORD)lParam); \ |
| 1468 lResult = TRUE; \ |
| 1469 if (IsMsgHandled()) \ |
| 1470 return TRUE; \ |
| 1471 } |
| 1472 |
| 1473 // void OnSetFont(CFont font, BOOL bRedraw) |
| 1474 #define CR_MSG_WM_SETFONT(func) \ |
| 1475 if (uMsg == WM_SETFONT) { \ |
| 1476 SetMsgHandled(TRUE); \ |
| 1477 func((HFONT)wParam, (BOOL)LOWORD(lParam)); \ |
| 1478 lResult = 0; \ |
| 1479 if (IsMsgHandled()) \ |
| 1480 return TRUE; \ |
| 1481 } |
| 1482 |
| 1483 // int OnSetHotKey(int nVirtKey, UINT uFlags) |
| 1484 #define CR_MSG_WM_SETHOTKEY(func) \ |
| 1485 if (uMsg == WM_SETHOTKEY) { \ |
| 1486 SetMsgHandled(TRUE); \ |
| 1487 lResult = (LRESULT)func((int)LOBYTE(LOWORD(wParam)), \ |
| 1488 (UINT)HIBYTE(LOWORD(wParam))); \ |
| 1489 if (IsMsgHandled()) \ |
| 1490 return TRUE; \ |
| 1491 } |
| 1492 |
| 1493 // HICON OnSetIcon(UINT uType, HICON hIcon) |
| 1494 #define CR_MSG_WM_SETICON(func) \ |
| 1495 if (uMsg == WM_SETICON) { \ |
| 1496 SetMsgHandled(TRUE); \ |
| 1497 lResult = (LRESULT)func((UINT)wParam, (HICON)lParam); \ |
| 1498 if (IsMsgHandled()) \ |
| 1499 return TRUE; \ |
| 1500 } |
| 1501 |
| 1502 // void OnSetRedraw(BOOL bRedraw) |
| 1503 #define CR_MSG_WM_SETREDRAW(func) \ |
| 1504 if (uMsg == WM_SETREDRAW) { \ |
| 1505 SetMsgHandled(TRUE); \ |
| 1506 func((BOOL)wParam); \ |
| 1507 lResult = 0; \ |
| 1508 if (IsMsgHandled()) \ |
| 1509 return TRUE; \ |
| 1510 } |
| 1511 |
| 1512 // int OnSetText(LPCTSTR lpstrText) |
| 1513 #define CR_MSG_WM_SETTEXT(func) \ |
| 1514 if (uMsg == WM_SETTEXT) { \ |
| 1515 SetMsgHandled(TRUE); \ |
| 1516 lResult = (LRESULT)func((LPCTSTR)lParam); \ |
| 1517 if (IsMsgHandled()) \ |
| 1518 return TRUE; \ |
| 1519 } |
| 1520 |
| 1521 // void OnUserChanged() |
| 1522 #define CR_MSG_WM_USERCHANGED(func) \ |
| 1523 if (uMsg == WM_USERCHANGED) { \ |
| 1524 SetMsgHandled(TRUE); \ |
| 1525 func(); \ |
| 1526 lResult = 0; \ |
| 1527 if (IsMsgHandled()) \ |
| 1528 return TRUE; \ |
| 1529 } |
| 1530 |
| 1531 /////////////////////////////////////////////////////////////////////////////// |
| 1532 // New NT4 & NT5 messages |
| 1533 |
| 1534 #if (_WIN32_WINNT >= 0x0400) |
| 1535 |
| 1536 // void OnMouseHover(WPARAM wParam, CPoint ptPos) |
| 1537 #define CR_MSG_WM_MOUSEHOVER(func) \ |
| 1538 if (uMsg == WM_MOUSEHOVER) { \ |
| 1539 SetMsgHandled(TRUE); \ |
| 1540 func(wParam, \ |
| 1541 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1542 lResult = 0; \ |
| 1543 if (IsMsgHandled()) \ |
| 1544 return TRUE; \ |
| 1545 } |
| 1546 |
| 1547 // void OnMouseLeave() |
| 1548 #define CR_MSG_WM_MOUSELEAVE(func) \ |
| 1549 if (uMsg == WM_MOUSELEAVE) { \ |
| 1550 SetMsgHandled(TRUE); \ |
| 1551 func(); \ |
| 1552 lResult = 0; \ |
| 1553 if (IsMsgHandled()) \ |
| 1554 return TRUE; \ |
| 1555 } |
| 1556 |
| 1557 #endif /* _WIN32_WINNT >= 0x0400 */ |
| 1558 |
| 1559 #if (WINVER >= 0x0500) |
| 1560 |
| 1561 // void OnMenuRButtonUp(WPARAM wParam, CMenu menu) |
| 1562 #define CR_MSG_WM_MENURBUTTONUP(func) \ |
| 1563 if (uMsg == WM_MENURBUTTONUP) { \ |
| 1564 SetMsgHandled(TRUE); \ |
| 1565 func(wParam, (HMENU)lParam); \ |
| 1566 lResult = 0; \ |
| 1567 if (IsMsgHandled()) \ |
| 1568 return TRUE; \ |
| 1569 } |
| 1570 |
| 1571 // LRESULT OnMenuDrag(WPARAM wParam, CMenu menu) |
| 1572 #define CR_MSG_WM_MENUDRAG(func) \ |
| 1573 if (uMsg == WM_MENUDRAG) { \ |
| 1574 SetMsgHandled(TRUE); \ |
| 1575 lResult = func(wParam, (HMENU)lParam); \ |
| 1576 if (IsMsgHandled()) \ |
| 1577 return TRUE; \ |
| 1578 } |
| 1579 |
| 1580 // LRESULT OnMenuGetObject(PMENUGETOBJECTINFO info) |
| 1581 #define CR_MSG_WM_MENUGETOBJECT(func) \ |
| 1582 if (uMsg == WM_MENUGETOBJECT) { \ |
| 1583 SetMsgHandled(TRUE); \ |
| 1584 lResult = func((PMENUGETOBJECTINFO)lParam); \ |
| 1585 if (IsMsgHandled()) \ |
| 1586 return TRUE; \ |
| 1587 } |
| 1588 |
| 1589 // void OnUnInitMenuPopup(UINT nID, CMenu menu) |
| 1590 #define CR_MSG_WM_UNINITMENUPOPUP(func) \ |
| 1591 if (uMsg == WM_UNINITMENUPOPUP) { \ |
| 1592 SetMsgHandled(TRUE); \ |
| 1593 func((UINT)HIWORD(lParam), (HMENU)wParam); \ |
| 1594 lResult = 0; \ |
| 1595 if (IsMsgHandled()) \ |
| 1596 return TRUE; \ |
| 1597 } |
| 1598 |
| 1599 // void OnMenuCommand(WPARAM nIndex, CMenu menu) |
| 1600 #define CR_MSG_WM_MENUCOMMAND(func) \ |
| 1601 if (uMsg == WM_MENUCOMMAND) { \ |
| 1602 SetMsgHandled(TRUE); \ |
| 1603 func(wParam, (HMENU)lParam); \ |
| 1604 lResult = 0; \ |
| 1605 if (IsMsgHandled()) \ |
| 1606 return TRUE; \ |
| 1607 } |
| 1608 |
| 1609 #endif /* WINVER >= 0x0500 */ |
| 1610 |
| 1611 #if (_WIN32_WINNT >= 0x0500) |
| 1612 |
| 1613 // BOOL OnAppCommand(CWindow wndFocus, short cmd, WORD uDevice, int dwKeys) |
| 1614 #define CR_MSG_WM_APPCOMMAND(func) \ |
| 1615 if (uMsg == WM_APPCOMMAND) { \ |
| 1616 SetMsgHandled(TRUE); \ |
| 1617 lResult = (LRESULT)func((HWND)wParam, \ |
| 1618 GET_APPCOMMAND_LPARAM(lParam), \ |
| 1619 GET_DEVICE_LPARAM(lParam), \ |
| 1620 GET_KEYSTATE_LPARAM(lParam)); \ |
| 1621 if (IsMsgHandled()) \ |
| 1622 return TRUE; \ |
| 1623 } |
| 1624 |
| 1625 // void OnNCXButtonDown(int fwButton, short nHittest, CPoint ptPos) |
| 1626 #define CR_MSG_WM_NCXBUTTONDOWN(func) \ |
| 1627 if (uMsg == WM_NCXBUTTONDOWN) { \ |
| 1628 SetMsgHandled(TRUE); \ |
| 1629 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1630 GET_NCHITTEST_WPARAM(wParam), \ |
| 1631 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1632 lResult = 0; \ |
| 1633 if (IsMsgHandled()) \ |
| 1634 return TRUE; \ |
| 1635 } |
| 1636 |
| 1637 // void OnNCXButtonUp(int fwButton, short nHittest, CPoint ptPos) |
| 1638 #define CR_MSG_WM_NCXBUTTONUP(func) \ |
| 1639 if (uMsg == WM_NCXBUTTONUP) { \ |
| 1640 SetMsgHandled(TRUE); \ |
| 1641 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1642 GET_NCHITTEST_WPARAM(wParam), \ |
| 1643 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1644 lResult = 0; \ |
| 1645 if (IsMsgHandled()) \ |
| 1646 return TRUE; \ |
| 1647 } |
| 1648 |
| 1649 // void OnNCXButtonDblClk(int fwButton, short nHittest, CPoint ptPos) |
| 1650 #define CR_MSG_WM_NCXBUTTONDBLCLK(func) \ |
| 1651 if (uMsg == WM_NCXBUTTONDBLCLK) { \ |
| 1652 SetMsgHandled(TRUE); \ |
| 1653 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1654 GET_NCHITTEST_WPARAM(wParam), \ |
| 1655 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1656 lResult = 0; \ |
| 1657 if (IsMsgHandled()) \ |
| 1658 return TRUE; \ |
| 1659 } |
| 1660 |
| 1661 // void OnXButtonDown(int fwButton, int dwKeys, CPoint ptPos) |
| 1662 #define CR_MSG_WM_XBUTTONDOWN(func) \ |
| 1663 if (uMsg == WM_XBUTTONDOWN) { \ |
| 1664 SetMsgHandled(TRUE); \ |
| 1665 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1666 GET_KEYSTATE_WPARAM(wParam), \ |
| 1667 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1668 lResult = 0; \ |
| 1669 if (IsMsgHandled()) \ |
| 1670 return TRUE; \ |
| 1671 } |
| 1672 |
| 1673 // void OnXButtonUp(int fwButton, int dwKeys, CPoint ptPos) |
| 1674 #define CR_MSG_WM_XBUTTONUP(func) \ |
| 1675 if (uMsg == WM_XBUTTONUP) { \ |
| 1676 SetMsgHandled(TRUE); \ |
| 1677 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1678 GET_KEYSTATE_WPARAM(wParam), \ |
| 1679 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1680 lResult = 0; \ |
| 1681 if (IsMsgHandled()) \ |
| 1682 return TRUE; \ |
| 1683 } |
| 1684 |
| 1685 // void OnXButtonDblClk(int fwButton, int dwKeys, CPoint ptPos) |
| 1686 #define CR_MSG_WM_XBUTTONDBLCLK(func) \ |
| 1687 if (uMsg == WM_XBUTTONDBLCLK) { \ |
| 1688 SetMsgHandled(TRUE); \ |
| 1689 func(GET_XBUTTON_WPARAM(wParam), \ |
| 1690 GET_KEYSTATE_WPARAM(wParam), \ |
| 1691 gfx::Point(CR_GET_X_LPARAM(lParam), CR_GET_Y_LPARAM(lParam))); \ |
| 1692 lResult = 0; \ |
| 1693 if (IsMsgHandled()) \ |
| 1694 return TRUE; \ |
| 1695 } |
| 1696 |
| 1697 // void OnChangeUIState(WORD nAction, WORD nState) |
| 1698 #define CR_MSG_WM_CHANGEUISTATE(func) \ |
| 1699 if (uMsg == WM_CHANGEUISTATE) { \ |
| 1700 SetMsgHandled(TRUE); \ |
| 1701 func(LOWORD(wParam), HIWORD(wParam)); \ |
| 1702 lResult = 0; \ |
| 1703 if (IsMsgHandled()) \ |
| 1704 return TRUE; \ |
| 1705 } |
| 1706 |
| 1707 // void OnUpdateUIState(WORD nAction, WORD nState) |
| 1708 #define CR_MSG_WM_UPDATEUISTATE(func) \ |
| 1709 if (uMsg == WM_UPDATEUISTATE) { \ |
| 1710 SetMsgHandled(TRUE); \ |
| 1711 func(LOWORD(wParam), HIWORD(wParam)); \ |
| 1712 lResult = 0; \ |
| 1713 if (IsMsgHandled()) \ |
| 1714 return TRUE; \ |
| 1715 } |
| 1716 |
| 1717 // LRESULT OnQueryUIState() |
| 1718 #define CR_MSG_WM_QUERYUISTATE(func) \ |
| 1719 if (uMsg == WM_QUERYUISTATE) { \ |
| 1720 SetMsgHandled(TRUE); \ |
| 1721 lResult = func(); \ |
| 1722 if (IsMsgHandled()) \ |
| 1723 return TRUE; \ |
| 1724 } |
| 1725 |
| 1726 #endif // (_WIN32_WINNT >= 0x0500) |
| 1727 |
| 1728 #if (_WIN32_WINNT >= 0x0501) |
| 1729 |
| 1730 // void OnInput(WPARAM RawInputCode, HRAWINPUT hRawInput) |
| 1731 #define CR_MSG_WM_INPUT(func) \ |
| 1732 if (uMsg == WM_INPUT) { \ |
| 1733 SetMsgHandled(TRUE); \ |
| 1734 func(GET_RAWINPUT_CODE_WPARAM(wParam), (HRAWINPUT)lParam); \ |
| 1735 lResult = 0; \ |
| 1736 if (IsMsgHandled()) \ |
| 1737 return TRUE; \ |
| 1738 } |
| 1739 |
| 1740 // void OnUniChar(TCHAR nChar, UINT nRepCnt, UINT nFlags) |
| 1741 #define CR_MSG_WM_UNICHAR(func) \ |
| 1742 if (uMsg == WM_UNICHAR) { \ |
| 1743 SetMsgHandled(TRUE); \ |
| 1744 func((TCHAR)wParam, \ |
| 1745 (UINT)lParam & 0xFFFF, \ |
| 1746 (UINT)((lParam & 0xFFFF0000) >> 16)); \ |
| 1747 if (IsMsgHandled()) { \ |
| 1748 lResult = (wParam == UNICODE_NOCHAR) ? TRUE : FALSE; \ |
| 1749 return TRUE; \ |
| 1750 } \ |
| 1751 } |
| 1752 |
| 1753 // void OnWTSSessionChange(WPARAM nStatusCode, PWTSSESSION_NOTIFICATION |
| 1754 // nSessionID) |
| 1755 #define CR_MSG_WM_WTSSESSION_CHANGE(func) \ |
| 1756 if (uMsg == WM_WTSSESSION_CHANGE) { \ |
| 1757 SetMsgHandled(TRUE); \ |
| 1758 func(wParam, (PWTSSESSION_NOTIFICATION)lParam); \ |
| 1759 lResult = 0; \ |
| 1760 if (IsMsgHandled()) \ |
| 1761 return TRUE; \ |
| 1762 } |
| 1763 |
| 1764 // OnThemeChanged() |
| 1765 #define CR_MSG_WM_THEMECHANGED(func) \ |
| 1766 if (uMsg == WM_THEMECHANGED) { \ |
| 1767 SetMsgHandled(TRUE); \ |
| 1768 func(); \ |
| 1769 lResult = 0; \ |
| 1770 if (IsMsgHandled()) \ |
| 1771 return TRUE; \ |
| 1772 } |
| 1773 |
| 1774 #endif /* _WIN32_WINNT >= 0x0501 */ |
| 1775 |
| 1776 /////////////////////////////////////////////////////////////////////////////// |
| 1777 // ATL defined messages |
| 1778 |
| 1779 // BOOL OnForwardMsg(LPMSG Msg, DWORD nUserData) |
| 1780 #define CR_MSG_WM_FORWARDMSG(func) \ |
| 1781 if (uMsg == WM_FORWARDMSG) { \ |
| 1782 SetMsgHandled(TRUE); \ |
| 1783 lResult = (LRESULT)func((LPMSG)lParam, (DWORD)wParam); \ |
| 1784 if (IsMsgHandled()) \ |
| 1785 return TRUE; \ |
| 1786 } |
| 1787 |
| 1788 /////////////////////////////////////////////////////////////////////////////// |
| 1789 // Dialog specific messages |
| 1790 |
| 1791 // LRESULT OnDMGetDefID() |
| 1792 #define MSG_DM_GETDEFID(func) \ |
| 1793 if (uMsg == DM_GETDEFID) { \ |
| 1794 SetMsgHandled(TRUE); \ |
| 1795 lResult = func(); \ |
| 1796 if (IsMsgHandled()) \ |
| 1797 return TRUE; \ |
| 1798 } |
| 1799 |
| 1800 // void OnDMSetDefID(UINT DefID) |
| 1801 #define MSG_DM_SETDEFID(func) \ |
| 1802 if (uMsg == DM_SETDEFID) { \ |
| 1803 SetMsgHandled(TRUE); \ |
| 1804 func((UINT)wParam); \ |
| 1805 lResult = TRUE; \ |
| 1806 if (IsMsgHandled()) \ |
| 1807 return TRUE; \ |
| 1808 } |
| 1809 |
| 1810 // void OnDMReposition() |
| 1811 #define MSG_DM_REPOSITION(func) \ |
| 1812 if (uMsg == DM_REPOSITION) { \ |
| 1813 SetMsgHandled(TRUE); \ |
| 1814 func(); \ |
| 1815 lResult = 0; \ |
| 1816 if (IsMsgHandled()) \ |
| 1817 return TRUE; \ |
| 1818 } |
| 1819 |
| 1820 /////////////////////////////////////////////////////////////////////////////// |
| 1821 // Reflected messages |
| 1822 |
| 1823 // void OnReflectedCommand(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 1824 #define MSG_OCM_COMMAND(func) \ |
| 1825 if (uMsg == OCM_COMMAND) { \ |
| 1826 SetMsgHandled(TRUE); \ |
| 1827 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 1828 lResult = 0; \ |
| 1829 if (IsMsgHandled()) \ |
| 1830 return TRUE; \ |
| 1831 } |
| 1832 |
| 1833 // LRESULT OnReflectedNotify(int idCtrl, LPNMHDR pnmh) |
| 1834 #define MSG_OCM_NOTIFY(func) \ |
| 1835 if (uMsg == OCM_NOTIFY) { \ |
| 1836 SetMsgHandled(TRUE); \ |
| 1837 lResult = func((int)wParam, (LPNMHDR)lParam); \ |
| 1838 if (IsMsgHandled()) \ |
| 1839 return TRUE; \ |
| 1840 } |
| 1841 |
| 1842 // void OnReflectedParentNotify(UINT message, UINT nChildID, LPARAM lParam) |
| 1843 #define MSG_OCM_PARENTNOTIFY(func) \ |
| 1844 if (uMsg == OCM_PARENTNOTIFY) { \ |
| 1845 SetMsgHandled(TRUE); \ |
| 1846 func((UINT)LOWORD(wParam), (UINT)HIWORD(wParam), lParam); \ |
| 1847 lResult = 0; \ |
| 1848 if (IsMsgHandled()) \ |
| 1849 return TRUE; \ |
| 1850 } |
| 1851 |
| 1852 // void OnReflectedDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) |
| 1853 #define MSG_OCM_DRAWITEM(func) \ |
| 1854 if (uMsg == OCM_DRAWITEM) { \ |
| 1855 SetMsgHandled(TRUE); \ |
| 1856 func((UINT)wParam, (LPDRAWITEMSTRUCT)lParam); \ |
| 1857 lResult = TRUE; \ |
| 1858 if (IsMsgHandled()) \ |
| 1859 return TRUE; \ |
| 1860 } |
| 1861 |
| 1862 // void OnReflectedMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT |
| 1863 // lpMeasureItemStruct) |
| 1864 #define MSG_OCM_MEASUREITEM(func) \ |
| 1865 if (uMsg == OCM_MEASUREITEM) { \ |
| 1866 SetMsgHandled(TRUE); \ |
| 1867 func((UINT)wParam, (LPMEASUREITEMSTRUCT)lParam); \ |
| 1868 lResult = TRUE; \ |
| 1869 if (IsMsgHandled()) \ |
| 1870 return TRUE; \ |
| 1871 } |
| 1872 |
| 1873 // int OnReflectedCompareItem(int nIDCtl, LPCOMPAREITEMSTRUCT |
| 1874 // lpCompareItemStruct) |
| 1875 #define MSG_OCM_COMPAREITEM(func) \ |
| 1876 if (uMsg == OCM_COMPAREITEM) { \ |
| 1877 SetMsgHandled(TRUE); \ |
| 1878 lResult = (LRESULT)func((UINT)wParam, (LPCOMPAREITEMSTRUCT)lParam); \ |
| 1879 if (IsMsgHandled()) \ |
| 1880 return TRUE; \ |
| 1881 } |
| 1882 |
| 1883 // void OnReflectedDeleteItem(int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct) |
| 1884 #define MSG_OCM_DELETEITEM(func) \ |
| 1885 if (uMsg == OCM_DELETEITEM) { \ |
| 1886 SetMsgHandled(TRUE); \ |
| 1887 func((UINT)wParam, (LPDELETEITEMSTRUCT)lParam); \ |
| 1888 lResult = TRUE; \ |
| 1889 if (IsMsgHandled()) \ |
| 1890 return TRUE; \ |
| 1891 } |
| 1892 |
| 1893 // int OnReflectedVKeyToItem(UINT nKey, UINT nIndex, CListBox listBox) |
| 1894 #define MSG_OCM_VKEYTOITEM(func) \ |
| 1895 if (uMsg == OCM_VKEYTOITEM) { \ |
| 1896 SetMsgHandled(TRUE); \ |
| 1897 lResult = (LRESULT)func( \ |
| 1898 (UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (HWND)lParam); \ |
| 1899 if (IsMsgHandled()) \ |
| 1900 return TRUE; \ |
| 1901 } |
| 1902 |
| 1903 // int OnReflectedCharToItem(UINT nChar, UINT nIndex, CListBox listBox) |
| 1904 #define MSG_OCM_CHARTOITEM(func) \ |
| 1905 if (uMsg == OCM_CHARTOITEM) { \ |
| 1906 SetMsgHandled(TRUE); \ |
| 1907 lResult = (LRESULT)func( \ |
| 1908 (UINT)LOWORD(wParam), (UINT)HIWORD(wParam), (HWND)lParam); \ |
| 1909 if (IsMsgHandled()) \ |
| 1910 return TRUE; \ |
| 1911 } |
| 1912 |
| 1913 // void OnReflectedHScroll(UINT nSBCode, UINT nPos, CScrollBar pScrollBar) |
| 1914 #define MSG_OCM_HSCROLL(func) \ |
| 1915 if (uMsg == OCM_HSCROLL) { \ |
| 1916 SetMsgHandled(TRUE); \ |
| 1917 func((int)LOWORD(wParam), (short)HIWORD(wParam), (HWND)lParam); \ |
| 1918 lResult = 0; \ |
| 1919 if (IsMsgHandled()) \ |
| 1920 return TRUE; \ |
| 1921 } |
| 1922 |
| 1923 // void OnReflectedVScroll(UINT nSBCode, UINT nPos, CScrollBar pScrollBar) |
| 1924 #define MSG_OCM_VSCROLL(func) \ |
| 1925 if (uMsg == OCM_VSCROLL) { \ |
| 1926 SetMsgHandled(TRUE); \ |
| 1927 func((int)LOWORD(wParam), (short)HIWORD(wParam), (HWND)lParam); \ |
| 1928 lResult = 0; \ |
| 1929 if (IsMsgHandled()) \ |
| 1930 return TRUE; \ |
| 1931 } |
| 1932 |
| 1933 // HBRUSH OnReflectedCtlColorEdit(CDCHandle dc, CEdit edit) |
| 1934 #define MSG_OCM_CTLCOLOREDIT(func) \ |
| 1935 if (uMsg == OCM_CTLCOLOREDIT) { \ |
| 1936 SetMsgHandled(TRUE); \ |
| 1937 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1938 if (IsMsgHandled()) \ |
| 1939 return TRUE; \ |
| 1940 } |
| 1941 |
| 1942 // HBRUSH OnReflectedCtlColorListBox(CDCHandle dc, CListBox listBox) |
| 1943 #define MSG_OCM_CTLCOLORLISTBOX(func) \ |
| 1944 if (uMsg == OCM_CTLCOLORLISTBOX) { \ |
| 1945 SetMsgHandled(TRUE); \ |
| 1946 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1947 if (IsMsgHandled()) \ |
| 1948 return TRUE; \ |
| 1949 } |
| 1950 |
| 1951 // HBRUSH OnReflectedCtlColorBtn(CDCHandle dc, CButton button) |
| 1952 #define MSG_OCM_CTLCOLORBTN(func) \ |
| 1953 if (uMsg == OCM_CTLCOLORBTN) { \ |
| 1954 SetMsgHandled(TRUE); \ |
| 1955 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1956 if (IsMsgHandled()) \ |
| 1957 return TRUE; \ |
| 1958 } |
| 1959 |
| 1960 // HBRUSH OnReflectedCtlColorDlg(CDCHandle dc, CWindow wnd) |
| 1961 #define MSG_OCM_CTLCOLORDLG(func) \ |
| 1962 if (uMsg == OCM_CTLCOLORDLG) { \ |
| 1963 SetMsgHandled(TRUE); \ |
| 1964 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1965 if (IsMsgHandled()) \ |
| 1966 return TRUE; \ |
| 1967 } |
| 1968 |
| 1969 // HBRUSH OnReflectedCtlColorScrollBar(CDCHandle dc, CScrollBar scrollBar) |
| 1970 #define MSG_OCM_CTLCOLORSCROLLBAR(func) \ |
| 1971 if (uMsg == OCM_CTLCOLORSCROLLBAR) { \ |
| 1972 SetMsgHandled(TRUE); \ |
| 1973 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1974 if (IsMsgHandled()) \ |
| 1975 return TRUE; \ |
| 1976 } |
| 1977 |
| 1978 // HBRUSH OnReflectedCtlColorStatic(CDCHandle dc, CStatic wndStatic) |
| 1979 #define MSG_OCM_CTLCOLORSTATIC(func) \ |
| 1980 if (uMsg == OCM_CTLCOLORSTATIC) { \ |
| 1981 SetMsgHandled(TRUE); \ |
| 1982 lResult = (LRESULT)func((HDC)wParam, (HWND)lParam); \ |
| 1983 if (IsMsgHandled()) \ |
| 1984 return TRUE; \ |
| 1985 } |
| 1986 |
| 1987 /////////////////////////////////////////////////////////////////////////////// |
| 1988 // Edit specific messages |
| 1989 |
| 1990 // void OnClear() |
| 1991 #define CR_MSG_WM_CLEAR(func) \ |
| 1992 if (uMsg == WM_CLEAR) { \ |
| 1993 SetMsgHandled(TRUE); \ |
| 1994 func(); \ |
| 1995 lResult = 0; \ |
| 1996 if (IsMsgHandled()) \ |
| 1997 return TRUE; \ |
| 1998 } |
| 1999 |
| 2000 // void OnCopy() |
| 2001 #define CR_MSG_WM_COPY(func) \ |
| 2002 if (uMsg == WM_COPY) { \ |
| 2003 SetMsgHandled(TRUE); \ |
| 2004 func(); \ |
| 2005 lResult = 0; \ |
| 2006 if (IsMsgHandled()) \ |
| 2007 return TRUE; \ |
| 2008 } |
| 2009 |
| 2010 // void OnCut() |
| 2011 #define CR_MSG_WM_CUT(func) \ |
| 2012 if (uMsg == WM_CUT) { \ |
| 2013 SetMsgHandled(TRUE); \ |
| 2014 func(); \ |
| 2015 lResult = 0; \ |
| 2016 if (IsMsgHandled()) \ |
| 2017 return TRUE; \ |
| 2018 } |
| 2019 |
| 2020 // void OnPaste() |
| 2021 #define CR_MSG_WM_PASTE(func) \ |
| 2022 if (uMsg == WM_PASTE) { \ |
| 2023 SetMsgHandled(TRUE); \ |
| 2024 func(); \ |
| 2025 lResult = 0; \ |
| 2026 if (IsMsgHandled()) \ |
| 2027 return TRUE; \ |
| 2028 } |
| 2029 |
| 2030 // void OnUndo() |
| 2031 #define CR_MSG_WM_UNDO(func) \ |
| 2032 if (uMsg == WM_UNDO) { \ |
| 2033 SetMsgHandled(TRUE); \ |
| 2034 func(); \ |
| 2035 lResult = 0; \ |
| 2036 if (IsMsgHandled()) \ |
| 2037 return TRUE; \ |
| 2038 } |
| 2039 |
| 2040 /////////////////////////////////////////////////////////////////////////////// |
| 2041 // Generic message handlers |
| 2042 |
| 2043 // LRESULT OnMessageHandlerEX(UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 2044 #define CR_MESSAGE_HANDLER_EX(msg, func) \ |
| 2045 if (uMsg == msg) { \ |
| 2046 SetMsgHandled(TRUE); \ |
| 2047 lResult = func(uMsg, wParam, lParam); \ |
| 2048 if (IsMsgHandled()) \ |
| 2049 return TRUE; \ |
| 2050 } |
| 2051 |
| 2052 // LRESULT OnMessageRangeHandlerEX(UINT uMsg, WPARAM wParam, LPARAM lParam) |
| 2053 #define CR_MESSAGE_RANGE_HANDLER_EX(msgFirst, msgLast, func) \ |
| 2054 if (uMsg >= msgFirst && uMsg <= msgLast) { \ |
| 2055 SetMsgHandled(TRUE); \ |
| 2056 lResult = func(uMsg, wParam, lParam); \ |
| 2057 if (IsMsgHandled()) \ |
| 2058 return TRUE; \ |
| 2059 } |
| 2060 |
| 2061 /////////////////////////////////////////////////////////////////////////////// |
| 2062 // Commands and notifications |
| 2063 |
| 2064 // void OnCommandHandlerEX(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 2065 #define CR_COMMAND_HANDLER_EX(id, code, func) \ |
| 2066 if (uMsg == WM_COMMAND && code == HIWORD(wParam) && id == LOWORD(wParam)) { \ |
| 2067 SetMsgHandled(TRUE); \ |
| 2068 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2069 lResult = 0; \ |
| 2070 if (IsMsgHandled()) \ |
| 2071 return TRUE; \ |
| 2072 } |
| 2073 |
| 2074 // void OnCommandIDHandlerEX(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 2075 #define CR_COMMAND_ID_HANDLER_EX(id, func) \ |
| 2076 if (uMsg == WM_COMMAND && id == LOWORD(wParam)) { \ |
| 2077 SetMsgHandled(TRUE); \ |
| 2078 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2079 lResult = 0; \ |
| 2080 if (IsMsgHandled()) \ |
| 2081 return TRUE; \ |
| 2082 } |
| 2083 |
| 2084 // void OnCommandCodeHandlerEX(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 2085 #define CR_COMMAND_CODE_HANDLER_EX(code, func) \ |
| 2086 if (uMsg == WM_COMMAND && code == HIWORD(wParam)) { \ |
| 2087 SetMsgHandled(TRUE); \ |
| 2088 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2089 lResult = 0; \ |
| 2090 if (IsMsgHandled()) \ |
| 2091 return TRUE; \ |
| 2092 } |
| 2093 |
| 2094 // LRESULT OnNotifyHandlerEX(LPNMHDR pnmh) |
| 2095 #define CR_NOTIFY_HANDLER_EX(id, cd, func) \ |
| 2096 if (uMsg == WM_NOTIFY && cd == ((LPNMHDR)lParam)->code && \ |
| 2097 id == ((LPNMHDR)lParam)->idFrom) { \ |
| 2098 SetMsgHandled(TRUE); \ |
| 2099 lResult = func((LPNMHDR)lParam); \ |
| 2100 if (IsMsgHandled()) \ |
| 2101 return TRUE; \ |
| 2102 } |
| 2103 |
| 2104 // LRESULT OnNotifyIDHandlerEX(LPNMHDR pnmh) |
| 2105 #define CR_NOTIFY_ID_HANDLER_EX(id, func) \ |
| 2106 if (uMsg == WM_NOTIFY && id == ((LPNMHDR)lParam)->idFrom) { \ |
| 2107 SetMsgHandled(TRUE); \ |
| 2108 lResult = func((LPNMHDR)lParam); \ |
| 2109 if (IsMsgHandled()) \ |
| 2110 return TRUE; \ |
| 2111 } |
| 2112 |
| 2113 // LRESULT OnNotifyCodeHandlerEX(LPNMHDR pnmh) |
| 2114 #define CR_NOTIFY_CODE_HANDLER_EX(cd, func) \ |
| 2115 if (uMsg == WM_NOTIFY && cd == ((LPNMHDR)lParam)->code) { \ |
| 2116 SetMsgHandled(TRUE); \ |
| 2117 lResult = func((LPNMHDR)lParam); \ |
| 2118 if (IsMsgHandled()) \ |
| 2119 return TRUE; \ |
| 2120 } |
| 2121 |
| 2122 // void OnCommandRangeHandlerEX(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 2123 #define CR_COMMAND_RANGE_HANDLER_EX(idFirst, idLast, func) \ |
| 2124 if (uMsg == WM_COMMAND && LOWORD(wParam) >= idFirst && \ |
| 2125 LOWORD(wParam) <= idLast) { \ |
| 2126 SetMsgHandled(TRUE); \ |
| 2127 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2128 lResult = 0; \ |
| 2129 if (IsMsgHandled()) \ |
| 2130 return TRUE; \ |
| 2131 } |
| 2132 |
| 2133 // void OnCommandRangeCodeHandlerEX(UINT uNotifyCode, int nID, CWindow wndCtl) |
| 2134 #define CR_COMMAND_RANGE_CODE_HANDLER_EX(idFirst, idLast, code, func) \ |
| 2135 if (uMsg == WM_COMMAND && code == HIWORD(wParam) && \ |
| 2136 LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) { \ |
| 2137 SetMsgHandled(TRUE); \ |
| 2138 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2139 lResult = 0; \ |
| 2140 if (IsMsgHandled()) \ |
| 2141 return TRUE; \ |
| 2142 } |
| 2143 |
| 2144 // LRESULT OnNotifyRangeHandlerEX(LPNMHDR pnmh) |
| 2145 #define CR_NOTIFY_RANGE_HANDLER_EX(idFirst, idLast, func) \ |
| 2146 if (uMsg == WM_NOTIFY && ((LPNMHDR)lParam)->idFrom >= idFirst && \ |
| 2147 ((LPNMHDR)lParam)->idFrom <= idLast) { \ |
| 2148 SetMsgHandled(TRUE); \ |
| 2149 lResult = func((LPNMHDR)lParam); \ |
| 2150 if (IsMsgHandled()) \ |
| 2151 return TRUE; \ |
| 2152 } |
| 2153 |
| 2154 // LRESULT OnNotifyRangeCodeHandlerEX(LPNMHDR pnmh) |
| 2155 #define CR_NOTIFY_RANGE_CODE_HANDLER_EX(idFirst, idLast, cd, func) \ |
| 2156 if (uMsg == WM_NOTIFY && cd == ((LPNMHDR)lParam)->code && \ |
| 2157 ((LPNMHDR)lParam)->idFrom >= idFirst && \ |
| 2158 ((LPNMHDR)lParam)->idFrom <= idLast) { \ |
| 2159 SetMsgHandled(TRUE); \ |
| 2160 lResult = func((LPNMHDR)lParam); \ |
| 2161 if (IsMsgHandled()) \ |
| 2162 return TRUE; \ |
| 2163 } |
| 2164 |
| 2165 // LRESULT OnReflectedCommandHandlerEX(UINT uNotifyCode, int nID, CWindow |
| 2166 // wndCtl) |
| 2167 #define CR_REFLECTED_COMMAND_HANDLER_EX(id, code, func) \ |
| 2168 if (uMsg == OCM_COMMAND && code == HIWORD(wParam) && id == LOWORD(wParam)) { \ |
| 2169 SetMsgHandled(TRUE); \ |
| 2170 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2171 lResult = 0; \ |
| 2172 if (IsMsgHandled()) \ |
| 2173 return TRUE; \ |
| 2174 } |
| 2175 |
| 2176 // LRESULT OnReflectedCommandIDHandlerEX(UINT uNotifyCode, int nID, CWindow |
| 2177 // wndCtl) |
| 2178 #define CR_REFLECTED_COMMAND_ID_HANDLER_EX(id, func) \ |
| 2179 if (uMsg == OCM_COMMAND && id == LOWORD(wParam)) { \ |
| 2180 SetMsgHandled(TRUE); \ |
| 2181 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2182 lResult = 0; \ |
| 2183 if (IsMsgHandled()) \ |
| 2184 return TRUE; \ |
| 2185 } |
| 2186 |
| 2187 // LRESULT OnReflectedCommandCodeHandlerEX(UINT uNotifyCode, int nID, CWindow |
| 2188 // wndCtl) |
| 2189 #define CR_REFLECTED_COMMAND_CODE_HANDLER_EX(code, func) \ |
| 2190 if (uMsg == OCM_COMMAND && code == HIWORD(wParam)) { \ |
| 2191 SetMsgHandled(TRUE); \ |
| 2192 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2193 lResult = 0; \ |
| 2194 if (IsMsgHandled()) \ |
| 2195 return TRUE; \ |
| 2196 } |
| 2197 |
| 2198 // LRESULT OnReflectedNotifyHandlerEX(LPNMHDR pnmh) |
| 2199 #define CR_REFLECTED_NOTIFY_HANDLER_EX(id, cd, func) \ |
| 2200 if (uMsg == OCM_NOTIFY && cd == ((LPNMHDR)lParam)->code && \ |
| 2201 id == ((LPNMHDR)lParam)->idFrom) { \ |
| 2202 SetMsgHandled(TRUE); \ |
| 2203 lResult = func((LPNMHDR)lParam); \ |
| 2204 if (IsMsgHandled()) \ |
| 2205 return TRUE; \ |
| 2206 } |
| 2207 |
| 2208 // LRESULT OnReflectedNotifyIDHandlerEX(LPNMHDR pnmh) |
| 2209 #define CR_REFLECTED_NOTIFY_ID_HANDLER_EX(id, func) \ |
| 2210 if (uMsg == OCM_NOTIFY && id == ((LPNMHDR)lParam)->idFrom) { \ |
| 2211 SetMsgHandled(TRUE); \ |
| 2212 lResult = func((LPNMHDR)lParam); \ |
| 2213 if (IsMsgHandled()) \ |
| 2214 return TRUE; \ |
| 2215 } |
| 2216 |
| 2217 // LRESULT OnReflectedNotifyCodeHandlerEX(LPNMHDR pnmh) |
| 2218 #define CR_REFLECTED_NOTIFY_CODE_HANDLER_EX(cd, func) \ |
| 2219 if (uMsg == OCM_NOTIFY && cd == ((LPNMHDR)lParam)->code) { \ |
| 2220 SetMsgHandled(TRUE); \ |
| 2221 lResult = func((LPNMHDR)lParam); \ |
| 2222 if (IsMsgHandled()) \ |
| 2223 return TRUE; \ |
| 2224 } |
| 2225 |
| 2226 // void OnReflectedCommandRangeHandlerEX(UINT uNotifyCode, int nID, CWindow |
| 2227 // wndCtl) |
| 2228 #define CR_REFLECTED_COMMAND_RANGE_HANDLER_EX(idFirst, idLast, func) \ |
| 2229 if (uMsg == OCM_COMMAND && LOWORD(wParam) >= idFirst && \ |
| 2230 LOWORD(wParam) <= idLast) { \ |
| 2231 SetMsgHandled(TRUE); \ |
| 2232 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2233 lResult = 0; \ |
| 2234 if (IsMsgHandled()) \ |
| 2235 return TRUE; \ |
| 2236 } |
| 2237 |
| 2238 // void OnReflectedCommandRangeCodeHandlerEX(UINT uNotifyCode, int nID, CWindow |
| 2239 // wndCtl) |
| 2240 #define CR_REFLECTED_COMMAND_RANGE_CODE_HANDLER_EX( \ |
| 2241 idFirst, idLast, code, func) \ |
| 2242 if (uMsg == OCM_COMMAND && code == HIWORD(wParam) && \ |
| 2243 LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) { \ |
| 2244 SetMsgHandled(TRUE); \ |
| 2245 func((UINT)HIWORD(wParam), (int)LOWORD(wParam), (HWND)lParam); \ |
| 2246 lResult = 0; \ |
| 2247 if (IsMsgHandled()) \ |
| 2248 return TRUE; \ |
| 2249 } |
| 2250 |
| 2251 // LRESULT OnReflectedNotifyRangeHandlerEX(LPNMHDR pnmh) |
| 2252 #define CR_REFLECTED_NOTIFY_RANGE_HANDLER_EX(idFirst, idLast, func) \ |
| 2253 if (uMsg == OCM_NOTIFY && ((LPNMHDR)lParam)->idFrom >= idFirst && \ |
| 2254 ((LPNMHDR)lParam)->idFrom <= idLast) { \ |
| 2255 SetMsgHandled(TRUE); \ |
| 2256 lResult = func((LPNMHDR)lParam); \ |
| 2257 if (IsMsgHandled()) \ |
| 2258 return TRUE; \ |
| 2259 } |
| 2260 |
| 2261 // LRESULT OnReflectedNotifyRangeCodeHandlerEX(LPNMHDR pnmh) |
| 2262 #define CR_REFLECTED_NOTIFY_RANGE_CODE_HANDLER_EX(idFirst, idLast, cd, func) \ |
| 2263 if (uMsg == OCM_NOTIFY && cd == ((LPNMHDR)lParam)->code && \ |
| 2264 ((LPNMHDR)lParam)->idFrom >= idFirst && \ |
| 2265 ((LPNMHDR)lParam)->idFrom <= idLast) { \ |
| 2266 SetMsgHandled(TRUE); \ |
| 2267 lResult = func((LPNMHDR)lParam); \ |
| 2268 if (IsMsgHandled()) \ |
| 2269 return TRUE; \ |
| 2270 } |
| 2271 |
| 2272 #define CR_DEFLATE_RECT(rect, by) \ |
| 2273 { \ |
| 2274 (rect)->left += (by)->left; \ |
| 2275 (rect)->top += (by)->top; \ |
| 2276 (rect)->right -= (by)->right; \ |
| 2277 (rect)->bottom -= (by)->bottom; \ |
| 2278 } |
| 2279 |
| 2280 #define CR_POINT_INITIALIZER_FROM_LPARAM(lparam) \ |
| 2281 { LOWORD(lparam), HIWORD(lparam) } |
| 2282 |
| 2283 #endif // UI_GFX_WIN_MSG_UTIL_H_ |
OLD | NEW |