home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / OWLINC.PAK / WINDOWEV.H < prev   
Text File  |  1995-08-29  |  23KB  |  634 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // (C) Copyright 1992, 1994 by Borland International, All Rights Reserved
  4. //
  5. //   Event response table macros for windows messages
  6. //----------------------------------------------------------------------------
  7. #if !defined(OWL_WINDOWEV_H)
  8. #define OWL_WINDOWEV_H
  9.  
  10. #if !defined(OWL_EVENTHAN_H)
  11. # include <owl/eventhan.h>
  12. #endif
  13.  
  14. //
  15. // general purpose WM_* macro
  16. //
  17. // wparam and lparam are passed, i.e: LPARAM method(WPARAM, LPARAM)
  18. //
  19. #define EV_MESSAGE(message, method)\
  20.   {message, 0, (TAnyDispatcher)::I32_WPARAM_LPARAM_Dispatch,\
  21.    (TMyPMF)LRESULT_WPARAM_LPARAM_Sig(&TMyClass::method)}
  22.  
  23. //
  24. // registered messages
  25. //
  26. #define EV_REGISTERED(str, method)\
  27.   EV_MESSAGE(::RegisterWindowMessage(str), method)
  28.  
  29. //
  30. // handler for child ID notifications that are handled at the child's parent
  31. //
  32. // no arguments are passed, i.e: void method()
  33. //
  34. #define EV_CHILD_NOTIFY(id, notifyCode, method)\
  35.   {notifyCode, id, (TAnyDispatcher)::v_Dispatch,\
  36.    (TMyPMF)v_Sig(&TMyClass::method)}
  37.  
  38. //
  39. // handler for child ID notifications that are handled at the child's parent
  40. //
  41. // the notification code is passed in as an argument; this allows multiple
  42. // notifications to be handled by a single response function, i.e:
  43. //   void method(uint notifyCode)
  44. //
  45. #define EV_CHILD_NOTIFY_AND_CODE(id, notifyCode, method)\
  46.   {notifyCode, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  47.    (TMyPMF)v_U_Sig(&TMyClass::method)}
  48.  
  49. //
  50. // generic handler for child ID notification: rather than specify the
  51. // specific notification codes you are interested in ALL notifications
  52. // from the child are passed to the response function
  53. //
  54. // the notification code is passed in as an argument, i.e.:
  55. //   void method(uint notifyCode)
  56. //
  57. #define EV_CHILD_NOTIFY_ALL_CODES(id, method)\
  58.   {UINT_MAX, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  59.    (TMyPMF)v_U_Sig(&TMyClass::method)}
  60.  
  61. //
  62. // handler for child ID notifications that are handled at the child
  63. //
  64. // no arguments are passed, i.e: void method()
  65. //
  66. #define EV_NOTIFY_AT_CHILD(notifyCode, method)\
  67.   {notifyCode, UINT_MAX, (TAnyDispatcher)::v_Dispatch,\
  68.    (TMyPMF)v_Sig(&TMyClass::method)}
  69.  
  70. //
  71. // handler for menu/accelerator/push buttons
  72. //
  73. // no arguments are passed, i.e: void method()
  74. //
  75. #define EV_COMMAND(id, method)\
  76.   {0, id, (TAnyDispatcher)::v_Dispatch,\
  77.    (TMyPMF)v_Sig(&TMyClass::method)}
  78.  
  79. //
  80. // handler for menu/accelerator/push buttons
  81. //
  82. // the menu id is passed in as an argument; this allows multiple
  83. // commands to be handled by a single response function.
  84. //  void method(uint commandId)
  85. //
  86. #define EV_COMMAND_AND_ID(id, method)\
  87.   {0, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  88.    (TMyPMF)v_U_Sig(&TMyClass::method)}
  89.  
  90. //
  91. // handler for command enabling
  92. //  void method(uint commandId)
  93. //
  94. #define EV_COMMAND_ENABLE(id, method)\
  95.   {WM_COMMAND_ENABLE, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
  96.    (TMyPMF)v_COMMANDENABLER_Sig(&TMyClass::method)}
  97.  
  98. //
  99. // handlers for document and view notifications
  100. //
  101. #define EV_OWLDOCUMENT(id, method)\
  102.   {WM_OWLDOCUMENT, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
  103.    (TMyPMF)v_OWLDOCUMENT_Sig(&TMyClass::method)}
  104.  
  105. #define EV_OWLVIEW(id, method)\
  106.   {WM_OWLVIEW, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
  107.    (TMyPMF)v_OWLVIEW_Sig(&TMyClass::method)}
  108.  
  109. #define EV_OWLNOTIFY(id, method)\
  110.   {WM_OWLNOTIFY, id, (TAnyDispatcher)::U_LPARAM_Dispatch,\
  111.    (TMyPMF)B_LPARAM_Sig(&TMyClass::method)}
  112.  
  113. #define EV_VIEWNOTIFY(id, method) \
  114.   {WM_OWLNOTIFY, id, (TAnyDispatcher)::U_LPARAM_Dispatch, \
  115.   (TMyPMF)B_LPARAM_Sig(&TMyClass::method)}
  116.  
  117. //
  118. // macros for specific WM_* messages
  119. //
  120. #define EV_WM_ACTIVATE\
  121.   {WM_ACTIVATE, 0, (TAnyDispatcher)::v_Activate_Dispatch,\
  122.    (TMyPMF)v_U_B_W_Sig(&TMyClass::EvActivate)}
  123.  
  124. #define EV_WM_ACTIVATEAPP\
  125.   {WM_ACTIVATEAPP, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  126.    (TMyPMF)v_B_HTASK_Sig(&TMyClass::EvActivateApp)}
  127.  
  128. #define EV_WM_ASKCBFORMATNAME\
  129.   {WM_ASKCBFORMATNAME, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
  130.    (TMyPMF)v_U_S_Sig(&TMyClass::EvAskCBFormatName)}
  131.  
  132. #define EV_WM_CANCELMODE\
  133.   {WM_CANCELMODE, 0, (TAnyDispatcher)::v_Dispatch,\
  134.    (TMyPMF)v_Sig(&TMyClass::EvCancelMode)}
  135.  
  136. #define EV_WM_CHANGECBCHAIN\
  137.   {WM_CHANGECBCHAIN, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  138.    (TMyPMF)v_W_W_Sig(&TMyClass::EvChangeCBChain)}
  139.  
  140. #define EV_WM_CHAR\
  141.   {WM_CHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  142.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvChar)}
  143.  
  144. #define EV_WM_CHARTOITEM\
  145.   {WM_CHARTOITEM, 0, (TAnyDispatcher)::i_U_W_U_Dispatch,\
  146.    (TMyPMF)i_U_W_U_Sig(&TMyClass::EvCharToItem)}
  147.  
  148. #define EV_WM_CHILDACTIVATE\
  149.   {WM_CHILDACTIVATE, 0, (TAnyDispatcher)::v_Dispatch,\
  150.    (TMyPMF)v_Sig(&TMyClass::EvChildActivate)}
  151.  
  152. #define EV_WM_CHILDINVALID\
  153.   {WM_CHILDINVALID, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  154.    (TMyPMF)v_W_Sig(&TMyClass::EvChildInvalid)}
  155.  
  156. #define EV_WM_CLOSE\
  157.   {WM_CLOSE, 0, (TAnyDispatcher)::v_Dispatch,\
  158.    (TMyPMF)v_Sig(&TMyClass::EvClose)}
  159.  
  160. #define EV_WM_COMMNOTIFY\
  161.   {WM_COMMNOTIFY, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  162.    (TMyPMF)v_U_U_Sig(&TMyClass::EvCommNotify)}
  163.  
  164. #define EV_WM_COMPACTING\
  165.   {WM_COMPACTING, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  166.    (TMyPMF)v_U_Sig(&TMyClass::EvCompacting)}
  167.  
  168. #define EV_WM_COMPAREITEM\
  169.   {WM_COMPAREITEM, 0, (TAnyDispatcher)::LRESULT_WPARAM_LPARAM_Dispatch,\
  170.    (TMyPMF)LRESULT_U_COMPAREITEM_Sig(&TMyClass::EvCompareItem)}
  171.  
  172. #define EV_WM_CREATE\
  173.   {WM_CREATE, 0, (TAnyDispatcher)::i_LPARAM_Dispatch,\
  174.    (TMyPMF)i_CREATE_Sig(&TMyClass::EvCreate)}
  175.  
  176. #define EV_WM_CTLCOLOR\
  177.   {WM_CTLCOLOR, 0, (TAnyDispatcher)::U_U_U_U_Dispatch,\
  178.    (TMyPMF)HBRUSH_HDC_W_U_Sig(&TMyClass::EvCtlColor)}
  179.  
  180. #define EV_WM_DEADCHAR\
  181.   {WM_DEADCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  182.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvDeadChar)}
  183.  
  184. #define EV_WM_DELETEITEM\
  185.   {WM_DELETEITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
  186.    (TMyPMF)v_U_DELETEITEM_Sig(&TMyClass::EvDeleteItem)}
  187.  
  188. #define EV_WM_DESTROY\
  189.   {WM_DESTROY, 0, (TAnyDispatcher)::v_Dispatch,\
  190.    (TMyPMF)v_Sig(&TMyClass::EvDestroy)}
  191.  
  192. #define EV_WM_DESTROYCLIPBOARD\
  193.   {WM_DESTROYCLIPBOARD, 0, (TAnyDispatcher)::v_Dispatch,\
  194.    (TMyPMF)v_Sig(&TMyClass::EvDestroyClipboard)}
  195.  
  196. #define EV_WM_DEVMODECHANGE\
  197.   {WM_DEVMODECHANGE, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  198.    (TMyPMF)v_S_Sig(&TMyClass::EvDevModeChange)}
  199.  
  200. #define EV_WM_DRAWCLIPBOARD\
  201.   {WM_DRAWCLIPBOARD, 0, (TAnyDispatcher)::v_Dispatch,\
  202.    (TMyPMF)v_Sig(&TMyClass::EvDrawClipboard)}
  203.  
  204. #define EV_WM_DRAWITEM\
  205.   {WM_DRAWITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
  206.    (TMyPMF)v_U_DRAWITEM_Sig(&TMyClass::EvDrawItem)}
  207.  
  208. #define EV_WM_DROPFILES\
  209.   {WM_DROPFILES, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  210.    (TMyPMF)v_DROP_Sig(&TMyClass::EvDropFiles)}
  211.  
  212. #define EV_WM_ENABLE\
  213.   {WM_ENABLE, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  214.    (TMyPMF)v_B_Sig(&TMyClass::EvEnable)}
  215.  
  216. #define EV_WM_ENDSESSION\
  217.   {WM_ENDSESSION, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  218.    (TMyPMF)v_B_Sig(&TMyClass::EvEndSession)}
  219.  
  220. #define EV_WM_ENTERIDLE\
  221.   {WM_ENTERIDLE, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  222.    (TMyPMF)v_U_W_Sig(&TMyClass::EvEnterIdle)}
  223.  
  224. #define EV_WM_ERASEBKGND\
  225.   {WM_ERASEBKGND, 0, (TAnyDispatcher)::i_WPARAM_Dispatch,\
  226.    (TMyPMF)B_HDC_Sig(&TMyClass::EvEraseBkgnd)}
  227.  
  228. #define EV_WM_FONTCHANGE\
  229.   {WM_FONTCHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
  230.    (TMyPMF)v_Sig(&TMyClass::EvFontChange)}
  231.  
  232. #define EV_WM_GETDLGCODE\
  233.   {WM_GETDLGCODE, 0, (TAnyDispatcher)::U_LPARAM_Dispatch,\
  234.    (TMyPMF)U_MSG_Sig(&TMyClass::EvGetDlgCode)}
  235.  
  236. #define EV_WM_GETFONT\
  237.   {WM_GETFONT, 0, (TAnyDispatcher)::U_Dispatch,\
  238.    (TMyPMF)HFONT_Sig(&TMyClass::EvGetFont)}
  239.  
  240. #define EV_WM_GETMINMAXINFO\
  241.   {WM_GETMINMAXINFO, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  242.    (TMyPMF)v_MINMAXINFO_Sig(&TMyClass::EvGetMinMaxInfo)}
  243.  
  244. #define EV_WM_GETTEXT\
  245.   {WM_GETTEXT, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
  246.    (TMyPMF)v_U_S_Sig(&TMyClass::EvGetText)}
  247.  
  248. #define EV_WM_GETTEXTLENGTH\
  249.   {WM_GETTEXTLENGTH, 0, (TAnyDispatcher)::U_Dispatch,\
  250.    (TMyPMF)U_Sig(&TMyClass::EvGetTextLength)}
  251.  
  252. // Win32 only
  253. //
  254. #define EV_WM_HOTKEY\
  255.   {WM_HOTKEY, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  256.    (TMyPMF)v_i_Sig(&TMyClass::EvHotKey)}
  257.  
  258. #define EV_WM_HSCROLL\
  259.   {WM_HSCROLL, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
  260.    (TMyPMF)v_U_U_W_Sig(&TMyClass::EvHScroll)}
  261.  
  262. #define EV_WM_HSCROLLCLIPBOARD\
  263.   {WM_HSCROLLCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  264.    (TMyPMF)v_W_U_U_Sig(&TMyClass::EvHScrollClipboard)}
  265.  
  266. #define EV_WM_ICONERASEBKGND\
  267.   {WM_ICONERASEBKGND, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  268.    (TMyPMF)v_HDC_Sig(&TMyClass::EvIconEraseBkgnd)}
  269.  
  270. #define EV_WM_INITMENU\
  271.   {WM_INITMENU, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  272.    (TMyPMF)v_HMENU_Sig(&TMyClass::EvInitMenu)}
  273.  
  274. #define EV_WM_INITMENUPOPUP\
  275.   {WM_INITMENUPOPUP, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  276.    (TMyPMF)v_HMENU_U_B_Sig(&TMyClass::EvInitMenuPopup)}
  277.  
  278. #define EV_WM_KEYDOWN\
  279.   {WM_KEYDOWN, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  280.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvKeyDown)}
  281.  
  282. #define EV_WM_KEYUP\
  283.   {WM_KEYUP, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  284.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvKeyUp)}
  285.  
  286. #define EV_WM_KILLFOCUS\
  287.   {WM_KILLFOCUS, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  288.    (TMyPMF)v_W_Sig(&TMyClass::EvKillFocus)}
  289.  
  290. #define EV_WM_LBUTTONDBLCLK\
  291.   {WM_LBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  292.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonDblClk)}
  293.  
  294. #define EV_WM_LBUTTONDOWN\
  295.   {WM_LBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  296.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonDown)}
  297.  
  298. #define EV_WM_LBUTTONUP\
  299.   {WM_LBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  300.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonUp)}
  301.  
  302. #define EV_WM_MBUTTONDBLCLK\
  303.   {WM_MBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  304.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonDblClk)}
  305.  
  306. #define EV_WM_MBUTTONDOWN\
  307.   {WM_MBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  308.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonDown)}
  309.  
  310. #define EV_WM_MBUTTONUP\
  311.   {WM_MBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  312.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonUp)}
  313.  
  314. #define EV_WM_MDIACTIVATE\
  315.   {WM_MDIACTIVATE, 0, (TAnyDispatcher)::v_MdiActivate_Dispatch,\
  316.    (TMyPMF)v_W_W_Sig(&TMyClass::EvMDIActivate)}
  317.  
  318. #define EV_WM_MDICREATE\
  319.   {WM_MDICREATE, 0, (TAnyDispatcher)::i_LPARAM_Dispatch,\
  320.    (TMyPMF)LRESULT_MDICREATESTRUCT_Sig(&TMyClass::EvMDICreate)}
  321.  
  322. #define EV_WM_MDIDESTROY\
  323.   {WM_MDIDESTROY, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  324.    (TMyPMF)v_W_Sig(&TMyClass::EvMDIDestroy)}
  325.  
  326. #define EV_WM_MENUCHAR\
  327.   {WM_MENUCHAR, 0, (TAnyDispatcher)::I32_MenuChar_Dispatch,\
  328.    (TMyPMF)LRESULT_U_U_HMENU_Sig(&TMyClass::EvMenuChar)}
  329.  
  330. #define EV_WM_MENUSELECT\
  331.   {WM_MENUSELECT, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
  332.    (TMyPMF)v_U_U_HMENU_Sig(&TMyClass::EvMenuSelect)}
  333.  
  334. #define EV_WM_MEASUREITEM\
  335.   {WM_MEASUREITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
  336.    (TMyPMF)v_U_MEASUREITEM_Sig(&TMyClass::EvMeasureItem)}
  337.  
  338. #define EV_WM_MOUSEACTIVATE\
  339.   {WM_MOUSEACTIVATE, 0, (TAnyDispatcher)::U_U_U_U_Dispatch,\
  340.    (TMyPMF)U_W_U_U_Sig(&TMyClass::EvMouseActivate)}
  341.  
  342. #define EV_WM_MOUSEMOVE\
  343.   {WM_MOUSEMOVE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  344.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvMouseMove)}
  345.  
  346. #define EV_WM_MOVE\
  347.   {WM_MOVE, 0, (TAnyDispatcher)::v_POINT_Dispatch,\
  348.    (TMyPMF)v_POINT_Sig(&TMyClass::EvMove)}
  349.  
  350. #define EV_WM_NCACTIVATE\
  351.   {WM_NCACTIVATE, 0, (TAnyDispatcher)::i_WPARAM_Dispatch,\
  352.    (TMyPMF)B_B_Sig(&TMyClass::EvNCActivate)}
  353.  
  354. #define EV_WM_NCCALCSIZE\
  355.   {WM_NCCALCSIZE, 0, (TAnyDispatcher)::U_WPARAM_LPARAM_Dispatch,\
  356.    (TMyPMF)U_B_CALCSIZE_Sig(&TMyClass::EvNCCalcSize)}
  357.  
  358. #define EV_WM_NCCREATE\
  359.   {WM_NCCREATE, 0, (TAnyDispatcher)::i_LPARAM_Dispatch,\
  360.    (TMyPMF)B_CREATE_Sig(&TMyClass::EvNCCreate)}
  361.  
  362. #define EV_WM_NCDESTROY\
  363.   {WM_NCDESTROY, 0, (TAnyDispatcher)::v_Dispatch,\
  364.    (TMyPMF)v_Sig(&TMyClass::EvNCDestroy)}
  365.  
  366. #define EV_WM_NCHITTEST\
  367.   {WM_NCHITTEST, 0, (TAnyDispatcher)::U_POINT_Dispatch,\
  368.    (TMyPMF)U_POINT_Sig(&TMyClass::EvNCHitTest)}
  369.  
  370. #define EV_WM_NCLBUTTONDBLCLK\
  371.   {WM_NCLBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  372.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonDblClk)}
  373.  
  374. #define EV_WM_NCLBUTTONDOWN\
  375.   {WM_NCLBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  376.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonDown)}
  377.  
  378. #define EV_WM_NCLBUTTONUP\
  379.   {WM_NCLBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  380.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonUp)}
  381.  
  382. #define EV_WM_NCMBUTTONDBLCLK\
  383.   {WM_NCMBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  384.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonDblClk)}
  385.  
  386. #define EV_WM_NCMBUTTONDOWN\
  387.   {WM_NCMBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  388.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonDown)}
  389.  
  390. #define EV_WM_NCMBUTTONUP\
  391.   {WM_NCMBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  392.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonUp)}
  393.  
  394. #define EV_WM_NCMOUSEMOVE\
  395.   {WM_NCMOUSEMOVE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  396.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMouseMove)}
  397.  
  398. #define EV_WM_NCPAINT\
  399.   {WM_NCPAINT, 0, (TAnyDispatcher)::v_Dispatch,\
  400.    (TMyPMF)v_Sig(&TMyClass::EvNCPaint)}
  401.  
  402. #define EV_WM_NCRBUTTONDBLCLK\
  403.   {WM_NCRBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  404.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonDblClk)}
  405.  
  406. #define EV_WM_NCRBUTTONDOWN\
  407.   {WM_NCRBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  408.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonDown)}
  409.  
  410. #define EV_WM_NCRBUTTONUP\
  411.   {WM_NCRBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  412.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonUp)}
  413.  
  414. #define EV_WM_NEXTDLGCTL\
  415.   {WM_NEXTDLGCTL, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  416.    (TMyPMF)v_U_U_Sig(&TMyClass::EvNextDlgCtl)}
  417.  
  418. #define EV_WM_PAINT\
  419.   {WM_PAINT, 0, (TAnyDispatcher)::v_Dispatch,\
  420.    (TMyPMF)v_Sig(&TMyClass::EvPaint)}
  421.  
  422. #define EV_WM_PAINTCLIPBOARD\
  423.   {WM_PAINTCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  424.    (TMyPMF)v_W_H_Sig(&TMyClass::EvPaintClipboard)}
  425.  
  426. // Win32 only
  427. //
  428. #define EV_WM_PAINTICON\
  429.   {WM_PAINTICON, 0, (TAnyDispatcher)::v_Dispatch,\
  430.    (TMyPMF)v_Sig(&TMyClass::EvPaintIcon)}
  431.  
  432. #define EV_WM_PALETTECHANGED\
  433.   {WM_PALETTECHANGED, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  434.    (TMyPMF)v_W_Sig(&TMyClass::EvPaletteChanged)}
  435.  
  436. #define EV_WM_PALETTEISCHANGING\
  437.   {WM_PALETTEISCHANGING, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  438.    (TMyPMF)v_W_Sig(&TMyClass::EvPaletteIsChanging)}
  439.  
  440. #define EV_WM_PARENTNOTIFY\
  441.   {WM_PARENTNOTIFY, 0, (TAnyDispatcher)::v_ParentNotify_Dispatch,\
  442.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvParentNotify)}
  443.  
  444. #define EV_WM_POWER\
  445.   {WM_POWER, 0, (TAnyDispatcher)::i_WPARAM_Dispatch,\
  446.    (TMyPMF)i_U_Sig(&TMyClass::EvPower)}
  447.  
  448. #define EV_WM_QUERYDRAGICON\
  449.   {WM_QUERYDRAGICON, 0, (TAnyDispatcher)::U_Dispatch,\
  450.    (TMyPMF)H_Sig(&TMyClass::EvQueryDragIcon)}
  451.  
  452. #define EV_WM_QUERYENDSESSION\
  453.   {WM_QUERYENDSESSION, 0, (TAnyDispatcher)::U_Dispatch,\
  454.    (TMyPMF)B_Sig(&TMyClass::EvQueryEndSession)}
  455.  
  456. #define EV_WM_QUERYNEWPALETTE\
  457.   {WM_QUERYNEWPALETTE, 0, (TAnyDispatcher)::U_Dispatch,\
  458.    (TMyPMF)B_Sig(&TMyClass::EvQueryNewPalette)}
  459.  
  460. #define EV_WM_QUERYOPEN\
  461.   {WM_QUERYOPEN, 0, (TAnyDispatcher)::U_Dispatch,\
  462.    (TMyPMF)B_Sig(&TMyClass::EvQueryOpen)}
  463.  
  464. #define EV_WM_QUEUESYNC\
  465.   {WM_QUEUESYNC, 0, (TAnyDispatcher)::v_Dispatch,\
  466.    (TMyPMF)v_Sig(&TMyClass::EvQueueSync)}
  467.  
  468. #define EV_WM_RBUTTONDBLCLK\
  469.   {WM_RBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  470.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonDblClk)}
  471.  
  472. #define EV_WM_RBUTTONDOWN\
  473.   {WM_RBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  474.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonDown)}
  475.  
  476. #define EV_WM_RBUTTONUP\
  477.   {WM_RBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  478.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonUp)}
  479.  
  480. #define EV_WM_RENDERALLFORMATS\
  481.   {WM_RENDERALLFORMATS, 0, (TAnyDispatcher)::v_Dispatch,\
  482.    (TMyPMF)v_Sig(&TMyClass::EvRenderAllFormats)}
  483.  
  484. #define EV_WM_RENDERFORMAT\
  485.   {WM_RENDERFORMAT, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  486.    (TMyPMF)v_U_Sig(&TMyClass::EvRenderFormat)}
  487.  
  488. #define EV_WM_SETCURSOR\
  489.   {WM_SETCURSOR, 0, (TAnyDispatcher)::U_U_U_U_Dispatch,\
  490.    (TMyPMF)B_W_U_U_Sig(&TMyClass::EvSetCursor)}
  491.  
  492. #define EV_WM_SETFOCUS\
  493.   {WM_SETFOCUS, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  494.    (TMyPMF)v_W_Sig(&TMyClass::EvSetFocus)}
  495.  
  496. #define EV_WM_SETFONT\
  497.   {WM_SETFONT, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  498.    (TMyPMF)v_HFONT_B_Sig(&TMyClass::EvSetFont)}
  499.  
  500. #define EV_WM_SETREDRAW\
  501.   {WM_SETREDRAW, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  502.    (TMyPMF)v_B_Sig(&TMyClass::EvSetRedraw)}
  503.  
  504. #define EV_WM_SETTEXT\
  505.   {WM_SETTEXT, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  506.    (TMyPMF)v_CS_Sig(&TMyClass::EvSetText)}
  507.  
  508. #define EV_WM_SHOWWINDOW\
  509.   {WM_SHOWWINDOW, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  510.    (TMyPMF)v_B_U_Sig(&TMyClass::EvShowWindow)}
  511.  
  512. #define EV_WM_SIZE\
  513.   {WM_SIZE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  514.    (TMyPMF)v_U_SIZE_Sig(&TMyClass::EvSize)}
  515.  
  516. #define EV_WM_SIZECLIPBOARD\
  517.   {WM_SIZECLIPBOARD, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  518.    (TMyPMF)v_W_H_Sig(&TMyClass::EvSizeClipboard)}
  519.  
  520. #define EV_WM_SPOOLERSTATUS\
  521.   {WM_SPOOLERSTATUS, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
  522.    (TMyPMF)v_U_U_Sig(&TMyClass::EvSpoolerStatus)}
  523.  
  524. #define EV_WM_SYSCHAR\
  525.   {WM_SYSCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  526.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysChar)}
  527.  
  528. #define EV_WM_SYSCOLORCHANGE\
  529.   {WM_SYSCOLORCHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
  530.    (TMyPMF)v_Sig(&TMyClass::EvSysColorChange)}
  531.  
  532. #define EV_WM_SYSCOMMAND\
  533.   {WM_SYSCOMMAND, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
  534.    (TMyPMF)v_U_POINT_Sig(&TMyClass::EvSysCommand)}
  535.  
  536. #define EV_WM_SYSDEADCHAR\
  537.   {WM_SYSDEADCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  538.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysDeadChar)}
  539.  
  540. #define EV_WM_SYSKEYDOWN\
  541.   {WM_SYSKEYDOWN, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  542.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysKeyDown)}
  543.  
  544. #define EV_WM_SYSKEYUP\
  545.   {WM_SYSKEYUP, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  546.    (TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysKeyUp)}
  547.  
  548. #define EV_WM_SYSTEMERROR\
  549.   {WM_SYSTEMERROR, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  550.    (TMyPMF)v_U_Sig(&TMyClass::EvSystemError)}
  551.  
  552. #define EV_WM_TIMECHANGE\
  553.   {WM_TIMECHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
  554.    (TMyPMF)v_Sig(&TMyClass::EvTimeChange)}
  555.  
  556. #define EV_WM_TIMER\
  557.   {WM_TIMER, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
  558.    (TMyPMF)v_U_Sig(&TMyClass::EvTimer)}
  559.  
  560. #define EV_WM_VKEYTOITEM\
  561.   {WM_VKEYTOITEM, 0, (TAnyDispatcher)::i_U_W_U_Dispatch,\
  562.    (TMyPMF)i_U_W_U_Sig(&TMyClass::EvVKeyToItem)}
  563.  
  564. #define EV_WM_VSCROLL\
  565.   {WM_VSCROLL, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
  566.    (TMyPMF)v_U_U_W_Sig(&TMyClass::EvVScroll)}
  567.  
  568. #define EV_WM_VSCROLLCLIPBOARD\
  569.   {WM_VSCROLLCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
  570.    (TMyPMF)v_W_U_U_Sig(&TMyClass::EvVScrollClipboard)}
  571.  
  572. #define EV_WM_WINDOWPOSCHANGED\
  573.   {WM_WINDOWPOSCHANGED, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  574.    (TMyPMF)v_WINDOWPOS_Sig(&TMyClass::EvWindowPosChanged)}
  575.  
  576. #define EV_WM_WINDOWPOSCHANGING\
  577.   {WM_WINDOWPOSCHANGING, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  578.    (TMyPMF)v_WINDOWPOS_Sig(&TMyClass::EvWindowPosChanging)}
  579.  
  580. #define EV_WM_WININICHANGE\
  581.   {WM_WININICHANGE, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  582.    (TMyPMF)v_S_Sig(&TMyClass::EvWinIniChange)}
  583.  
  584. //
  585. // Control notification macros
  586. //
  587.  
  588. #define EV_BN_CLICKED(id, method)   EV_CHILD_NOTIFY(id, BN_CLICKED, method)
  589. #define EV_BN_DISABLE(id, method)   EV_CHILD_NOTIFY(id, BN_DISABLE, method)
  590. #define EV_BN_DOUBLECLICKED(id, method)  EV_CHILD_NOTIFY(id, BN_DOUBLECLICKED, method)
  591. #define EV_BN_HILITE(id, method)    EV_CHILD_NOTIFY(id, BN_HILITE, method)
  592. #define EV_BN_PAINT(id, method)     EV_CHILD_NOTIFY(id, BN_PAINT, method)
  593. #define EV_BN_UNHILITE(id, method)  EV_CHILD_NOTIFY(id, BN_UNHILITE, method)
  594.  
  595. #define EV_CBN_CLOSEUP(id, method)    EV_CHILD_NOTIFY(id, CBN_CLOSEUP, method)
  596. #define EV_CBN_DBLCLK(id, method)     EV_CHILD_NOTIFY(id, CBN_DBLCLK, method)
  597. #define EV_CBN_DROPDOWN(id, method)   EV_CHILD_NOTIFY(id, CBN_DROPDOWN, method)
  598. #define EV_CBN_EDITCHANGE(id, method) EV_CHILD_NOTIFY(id, CBN_EDITCHANGE, method)
  599. #define EV_CBN_EDITUPDATE(id, method) EV_CHILD_NOTIFY(id, CBN_EDITUPDATE, method)
  600. #define EV_CBN_ERRSPACE(id, method)   EV_CHILD_NOTIFY(id, CBN_ERRSPACE, method)
  601. #define EV_CBN_KILLFOCUS(id, method)  EV_CHILD_NOTIFY(id, CBN_KILLFOCUS, method)
  602. #define EV_CBN_SELCHANGE(id, method)  EV_CHILD_NOTIFY(id, CBN_SELCHANGE, method)
  603. #define EV_CBN_SELENDCANCEL(id, method) EV_CHILD_NOTIFY(id, CBN_SELENDCANCEL, method)
  604. #define EV_CBN_SELENDOK(id, method)   EV_CHILD_NOTIFY(id, CBN_SELENDOK, method)
  605. #define EV_CBN_SETFOCUS(id, method)   EV_CHILD_NOTIFY(id, CBN_SETFOCUS, method)
  606.  
  607. #define EV_EN_CHANGE(id, method)    EV_CHILD_NOTIFY(id, EN_CHANGE, method)
  608. #define EV_EN_ERRSPACE(id, method)  EV_CHILD_NOTIFY(id, EN_ERRSPACE, method)
  609. #define EV_EN_HSCROLL(id, method)   EV_CHILD_NOTIFY(id, EN_HSCROLL, method)
  610. #define EV_EN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, EN_KILLFOCUS, method)
  611. #define EV_EN_MAXTEXT(id, method)   EV_CHILD_NOTIFY(id, EN_MAXTEXT, method)
  612. #define EV_EN_SETFOCUS(id, method)  EV_CHILD_NOTIFY(id, EN_SETFOCUS, method)
  613. #define EV_EN_UPDATE(id, method)    EV_CHILD_NOTIFY(id, EN_UPDATE, method)
  614. #define EV_EN_VSCROLL(id, method)   EV_CHILD_NOTIFY(id, EN_VSCROLL, method)
  615.  
  616. #define EV_LBN_DBLCLK(id, method)    EV_CHILD_NOTIFY(id, LBN_DBLCLK, method)
  617. #define EV_LBN_ERRSPACE(id, method)  EV_CHILD_NOTIFY(id, LBN_ERRSPACE, method)
  618. #define EV_LBN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, LBN_KILLFOCUS, method)
  619. #define EV_LBN_SELCANCEL(id, method) EV_CHILD_NOTIFY(id, LBN_SELCANCEL, method)
  620. #define EV_LBN_SELCHANGE(id, method) EV_CHILD_NOTIFY(id, LBN_SELCHANGE, method)
  621. #define EV_LBN_SETFOCUS(id, method)  EV_CHILD_NOTIFY(id, LBN_SETFOCUS, method)
  622.  
  623. #define EV_SB_LINEDOWN(id, method)   EV_CHILD_NOTIFY(id, SB_LINEDOWN, method)
  624. #define EV_SB_LINEUP(id, method)     EV_CHILD_NOTIFY(id, SB_LINEUP, method)
  625. #define EV_SB_PAGEDOWN(id, method)   EV_CHILD_NOTIFY(id, SB_PAGEDOWN, method)
  626. #define EV_SB_PAGEUP(id, method)     EV_CHILD_NOTIFY(id, SB_PAGEUP, method)
  627. #define EV_SB_TOP(id, method)        EV_CHILD_NOTIFY(id, SB_TOP, method)
  628. #define EV_SB_BOTTOM(id, method)     EV_CHILD_NOTIFY(id, SB_BOTTOM, method)
  629. #define EV_SB_THUMBPOSITION(id, method) EV_CHILD_NOTIFY(id, SB_THUMBPOSITION, method)
  630. #define EV_SB_ENDSCROLL(id, method)  EV_CHILD_NOTIFY(id, SB_ENDSCROLL, method)
  631. #define EV_SB_BEGINTRACK(id, method) EV_CHILD_NOTIFY(id, 9, method)
  632.  
  633. #endif  // OWL_WINDOWEV_H
  634.