home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 19.ddi / OWLINC.PAK / WINDOWEV.H < prev   
Encoding:
C/C++ Source or Header  |  1993-12-02  |  24.0 KB  |  689 lines

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