home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / include / afxmsg_.h < prev    next >
Text File  |  1998-06-16  |  34KB  |  711 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. // Do not include this file directly (included by AFXWIN.H)
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14.  
  15. // Entries in a message map (a 'AFX_MSGMAP_ENTRY') table can be of 9 formats
  16. //
  17. // 1) control notification message (i.e. in response to WM_COMMAND)
  18. //      WM_COMMAND, nNotifyCode, nControlID, nControlID, signature type, parameterless member function
  19. //      (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX, AfxSig_vv, ... )
  20. // 2) control notification message range (i.e. in response to WM_COMMAND)
  21. //      WM_COMMAND, nNotifyCode, nControlIDFirst, nControlIDLast, signature type, parameterless member function
  22. //      (eg: WM_COMMAND, LBN_SELCHANGE, IDC_LISTBOX1, IDC_LISTBOX5, AfxSig_vw, ... )
  23. // 3) WM_NOTIFY notification
  24. //      WM_NOTIFY, nNotifyCode, nControlID, nControlID, signature type, ...)
  25. // 3) Update Command UI
  26. //      -1, 0, nControlID, 0, signature Unknown, parameterless member function
  27. // 4) Update Command UI Range
  28. //      -1, 0, nControlIDFirst, nControlIDLast, signature Unknown, parameterless member function
  29. // 5) menu/accelerator notification message (i.e. special case of first format)
  30. //      WM_COMMAND, 0, nID, 0, signature type, parameterless member function
  31. //      (eg: WM_COMMAND, 0, IDM_FILESAVE, 0, AfxSig_vv, ... )
  32. // 6) menu/accelerator notification message range
  33. //      WM_COMMAND, 0, nIDFirst, nIDLast, signature type, parameterless member function
  34. //      (eg: WM_COMMAND, 0, IDM_FILE_MRU1, IDM_FILE_MRU4, AfxSig_vw, ... )
  35. // 7) constant windows message
  36. //      nMessage, 0, 0, 0, signature type, member function
  37. //      (eg: WM_PAINT, 0, ...)
  38. // 8) variable windows message (using RegisterWindowMessage)
  39. //      0xC000, 0, 0, 0, &nMessage, special member function
  40. //
  41. // The end of the message map is marked with a special value
  42. //      0, 0, AfxSig_end, 0
  43. /////////////////////////////////////////////////////////////////////////////
  44.  
  45. enum AfxSig
  46. {
  47.     AfxSig_end = 0,     // [marks end of message map]
  48.  
  49.     AfxSig_bD,      // BOOL (CDC*)
  50.     AfxSig_bb,      // BOOL (BOOL)
  51.     AfxSig_bWww,    // BOOL (CWnd*, UINT, UINT)
  52.     AfxSig_hDWw,    // HBRUSH (CDC*, CWnd*, UINT)
  53.     AfxSig_hDw,     // HBRUSH (CDC*, UINT)
  54.     AfxSig_iwWw,    // int (UINT, CWnd*, UINT)
  55.     AfxSig_iww,     // int (UINT, UINT)
  56.     AfxSig_iWww,    // int (CWnd*, UINT, UINT)
  57.     AfxSig_is,      // int (LPTSTR)
  58.     AfxSig_lwl,     // LRESULT (WPARAM, LPARAM)
  59.     AfxSig_lwwM,    // LRESULT (UINT, UINT, CMenu*)
  60.     AfxSig_vv,      // void (void)
  61.  
  62.     AfxSig_vw,      // void (UINT)
  63.     AfxSig_vww,     // void (UINT, UINT)
  64.     AfxSig_vvii,    // void (int, int) // wParam is ignored
  65.     AfxSig_vwww,    // void (UINT, UINT, UINT)
  66.     AfxSig_vwii,    // void (UINT, int, int)
  67.     AfxSig_vwl,     // void (UINT, LPARAM)
  68.     AfxSig_vbWW,    // void (BOOL, CWnd*, CWnd*)
  69.     AfxSig_vD,      // void (CDC*)
  70.     AfxSig_vM,      // void (CMenu*)
  71.     AfxSig_vMwb,    // void (CMenu*, UINT, BOOL)
  72.  
  73.     AfxSig_vW,      // void (CWnd*)
  74.     AfxSig_vWww,    // void (CWnd*, UINT, UINT)
  75.     AfxSig_vWp,     // void (CWnd*, CPoint)
  76.     AfxSig_vWh,     // void (CWnd*, HANDLE)
  77.     AfxSig_vwW,     // void (UINT, CWnd*)
  78.     AfxSig_vwWb,    // void (UINT, CWnd*, BOOL)
  79.     AfxSig_vwwW,    // void (UINT, UINT, CWnd*)
  80.     AfxSig_vwwx,    // void (UINT, UINT)
  81.     AfxSig_vs,      // void (LPTSTR)
  82.     AfxSig_vOWNER,  // void (int, LPTSTR), force return TRUE
  83.     AfxSig_iis,     // int (int, LPTSTR)
  84.     AfxSig_wp,      // UINT (CPoint)
  85.     AfxSig_wv,      // UINT (void)
  86.     AfxSig_vPOS,    // void (WINDOWPOS*)
  87.     AfxSig_vCALC,   // void (BOOL, NCCALCSIZE_PARAMS*)
  88.     AfxSig_vNMHDRpl,    // void (NMHDR*, LRESULT*)
  89.     AfxSig_bNMHDRpl,    // BOOL (NMHDR*, LRESULT*)
  90.     AfxSig_vwNMHDRpl,   // void (UINT, NMHDR*, LRESULT*)
  91.     AfxSig_bwNMHDRpl,   // BOOL (UINT, NMHDR*, LRESULT*)
  92.     AfxSig_bHELPINFO,   // BOOL (HELPINFO*)
  93.     AfxSig_vwSIZING,    // void (UINT, LPRECT) -- return TRUE
  94.  
  95.     // signatures specific to CCmdTarget
  96.     AfxSig_cmdui,   // void (CCmdUI*)
  97.     AfxSig_cmduiw,  // void (CCmdUI*, UINT)
  98.     AfxSig_vpv,     // void (void*)
  99.     AfxSig_bpv,     // BOOL (void*)
  100.  
  101.     // Other aliases (based on implementation)
  102.     AfxSig_vwwh,                // void (UINT, UINT, HANDLE)
  103.     AfxSig_vwp,                 // void (UINT, CPoint)
  104.     AfxSig_bw = AfxSig_bb,      // BOOL (UINT)
  105.     AfxSig_bh = AfxSig_bb,      // BOOL (HANDLE)
  106.     AfxSig_iw = AfxSig_bb,      // int (UINT)
  107.     AfxSig_ww = AfxSig_bb,      // UINT (UINT)
  108.     AfxSig_bv = AfxSig_wv,      // BOOL (void)
  109.     AfxSig_hv = AfxSig_wv,      // HANDLE (void)
  110.     AfxSig_vb = AfxSig_vw,      // void (BOOL)
  111.     AfxSig_vbh = AfxSig_vww,    // void (BOOL, HANDLE)
  112.     AfxSig_vbw = AfxSig_vww,    // void (BOOL, UINT)
  113.     AfxSig_vhh = AfxSig_vww,    // void (HANDLE, HANDLE)
  114.     AfxSig_vh = AfxSig_vw,      // void (HANDLE)
  115.     AfxSig_viSS = AfxSig_vwl,   // void (int, STYLESTRUCT*)
  116.     AfxSig_bwl = AfxSig_lwl,
  117.     AfxSig_vwMOVING = AfxSig_vwSIZING,  // void (UINT, LPRECT) -- return TRUE
  118.  
  119.     AfxSig_vW2,                 // void (CWnd*) (CWnd* comes from lParam)
  120.     AfxSig_bWCDS,               // BOOL (CWnd*, COPYDATASTRUCT*)
  121.     AfxSig_bwsp,                // BOOL (UINT, short, CPoint)
  122.     AfxSig_vws,
  123. };
  124.  
  125. /////////////////////////////////////////////////////////////////////////////
  126. // Command notifications for CCmdTarget notifications
  127.  
  128. #define CN_COMMAND              0               // void ()
  129. #define CN_UPDATE_COMMAND_UI    ((UINT)(-1))    // void (CCmdUI*)
  130. #define CN_EVENT                ((UINT)(-2))    // OLE event
  131. #define CN_OLECOMMAND           ((UINT)(-3))    // OLE document command
  132. #define CN_OLE_UNREGISTER       ((UINT)(-4))    // OLE unregister
  133. // > 0 are control notifications
  134. // < 0 are for MFC's use
  135.  
  136. #define ON_COMMAND(id, memberFxn) \
  137.     { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)&memberFxn },
  138.         // ON_COMMAND(id, OnFoo) is the same as
  139.         //   ON_CONTROL(0, id, OnFoo) or ON_BN_CLICKED(0, id, OnFoo)
  140.  
  141. #define ON_COMMAND_RANGE(id, idLast, memberFxn) \
  142.     { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_vw, \
  143.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
  144.         // ON_COMMAND_RANGE(id, idLast, OnFoo) is the same as
  145.         //   ON_CONTROL_RANGE(0, id, idLast, OnFoo)
  146.  
  147. #define ON_COMMAND_EX(id, memberFxn) \
  148.     { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)id, AfxSig_bw, \
  149.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
  150.  
  151. #define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) \
  152.     { WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, \
  153.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
  154.  
  155. // update ui's are listed as WM_COMMAND's so they get routed like commands
  156. #define ON_UPDATE_COMMAND_UI(id, memberFxn) \
  157.     { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)id, AfxSig_cmdui, \
  158.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
  159.  
  160. #define ON_UPDATE_COMMAND_UI_RANGE(id, idLast, memberFxn) \
  161.     { WM_COMMAND, CN_UPDATE_COMMAND_UI, (WORD)id, (WORD)idLast, AfxSig_cmdui, \
  162.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
  163.  
  164. #define ON_NOTIFY(wNotifyCode, id, memberFxn) \
  165.     { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vNMHDRpl, \
  166.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
  167.  
  168. #define ON_NOTIFY_RANGE(wNotifyCode, id, idLast, memberFxn) \
  169.     { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vwNMHDRpl, \
  170.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
  171.  
  172. #define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
  173.     { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
  174.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
  175.  
  176. #define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
  177.     { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
  178.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
  179.  
  180. // for general controls
  181. #define ON_CONTROL(wNotifyCode, id, memberFxn) \
  182.     { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)id, AfxSig_vv, \
  183.         (AFX_PMSG)&memberFxn },
  184.  
  185. #define ON_CONTROL_RANGE(wNotifyCode, id, idLast, memberFxn) \
  186.     { WM_COMMAND, (WORD)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_vw, \
  187.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },
  188.  
  189. #define WM_REFLECT_BASE 0xBC00
  190.  
  191. // for control notification reflection
  192. #define ON_CONTROL_REFLECT(wNotifyCode, memberFxn) \
  193.     { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_vv, \
  194.         (AFX_PMSG)&memberFxn },
  195.  
  196. #define ON_CONTROL_REFLECT_EX(wNotifyCode, memberFxn) \
  197.     { WM_COMMAND+WM_REFLECT_BASE, (WORD)wNotifyCode, 0, 0, AfxSig_bv, \
  198.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)())&memberFxn },
  199.  
  200. #define ON_NOTIFY_REFLECT(wNotifyCode, memberFxn) \
  201.     { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_vNMHDRpl, \
  202.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
  203.  
  204. #define ON_NOTIFY_REFLECT_EX(wNotifyCode, memberFxn) \
  205.     { WM_NOTIFY+WM_REFLECT_BASE, (WORD)(int)wNotifyCode, 0, 0, AfxSig_bNMHDRpl, \
  206.         (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(NMHDR*, LRESULT*))&memberFxn },
  207.  
  208. #define ON_UPDATE_COMMAND_UI_REFLECT(memberFxn) \
  209.     { WM_COMMAND+WM_REFLECT_BASE, (WORD)CN_UPDATE_COMMAND_UI, 0, 0, AfxSig_cmdui, \
  210.         (AFX_PMSG)(void (AFX_MSG_CALL CCmdTarget::*)(CCmdUI*))&memberFxn },
  211.  
  212. /////////////////////////////////////////////////////////////////////////////
  213. // Message map tables for Windows messages
  214.  
  215. #define ON_WM_CREATE() \
  216.     { WM_CREATE, 0, 0, 0, AfxSig_is, \
  217.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnCreate },
  218. #define ON_WM_COPYDATA() \
  219.     { WM_COPYDATA, 0, 0, 0, AfxSig_bWCDS, \
  220.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, COPYDATASTRUCT*))&OnCopyData },
  221. #define ON_WM_DESTROY() \
  222.     { WM_DESTROY, 0, 0, 0, AfxSig_vv, \
  223.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroy },
  224. #define ON_WM_MOVE() \
  225.     { WM_MOVE, 0, 0, 0, AfxSig_vvii, \
  226.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, int))&OnMove },
  227. #define ON_WM_SIZE() \
  228.     { WM_SIZE, 0, 0, 0, AfxSig_vwii, \
  229.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, int, int))&OnSize },
  230. #define ON_WM_ACTIVATE() \
  231.     { WM_ACTIVATE, 0, 0, 0, AfxSig_vwWb, \
  232.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*, BOOL))&OnActivate },
  233. #define ON_WM_SETFOCUS() \
  234.     { WM_SETFOCUS, 0, 0, 0, AfxSig_vW, \
  235.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnSetFocus },
  236. #define ON_WM_KILLFOCUS() \
  237.     { WM_KILLFOCUS, 0, 0, 0, AfxSig_vW, \
  238.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnKillFocus },
  239. #define ON_WM_ENABLE() \
  240.     { WM_ENABLE, 0, 0, 0, AfxSig_vb, \
  241.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnable },
  242. #define ON_WM_HELPINFO() \
  243.     { WM_HELP, 0, 0, 0, AfxSig_bHELPINFO, \
  244.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(HELPINFO*))&OnHelpInfo },
  245. #define ON_WM_PAINT() \
  246.     { WM_PAINT, 0, 0, 0, AfxSig_vv, \
  247.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnPaint },
  248. #define ON_WM_CLOSE() \
  249.     { WM_CLOSE, 0, 0, 0, AfxSig_vv, \
  250.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnClose },
  251. #define ON_WM_QUERYENDSESSION() \
  252.     { WM_QUERYENDSESSION, 0, 0, 0, AfxSig_bv, \
  253.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryEndSession },
  254. #define ON_WM_QUERYOPEN() \
  255.     { WM_QUERYOPEN, 0, 0, 0, AfxSig_bv, \
  256.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryOpen },
  257. #define ON_WM_ERASEBKGND() \
  258.     { WM_ERASEBKGND, 0, 0, 0, AfxSig_bD, \
  259.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CDC*))&OnEraseBkgnd },
  260. #define ON_WM_SYSCOLORCHANGE() \
  261.     { WM_SYSCOLORCHANGE, 0, 0, 0, AfxSig_vv, \
  262.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnSysColorChange },
  263. #define ON_WM_ENDSESSION() \
  264.     { WM_ENDSESSION, 0, 0, 0, AfxSig_vb, \
  265.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEndSession },
  266. #define ON_WM_SHOWWINDOW() \
  267.     { WM_SHOWWINDOW, 0, 0, 0, AfxSig_vbw, \
  268.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, UINT))&OnShowWindow },
  269. #define ON_WM_CTLCOLOR() \
  270.     { WM_CTLCOLOR, 0, 0, 0, AfxSig_hDWw, \
  271.         (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, CWnd*, UINT))&OnCtlColor },
  272. #define ON_WM_CTLCOLOR_REFLECT() \
  273.     { WM_CTLCOLOR+WM_REFLECT_BASE, 0, 0, 0, AfxSig_hDw, \
  274.         (AFX_PMSG)(AFX_PMSGW)(HBRUSH (AFX_MSG_CALL CWnd::*)(CDC*, UINT))CtlColor },
  275. #if (WINVER >= 0x0400)
  276. #define ON_WM_SETTINGCHANGE() \
  277.     { WM_SETTINGCHANGE, 0, 0, 0, AfxSig_vws, \
  278.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPCTSTR))&OnSettingChange },
  279. #endif
  280. #define ON_WM_WININICHANGE() \
  281.     { WM_WININICHANGE, 0, 0, 0, AfxSig_vs, \
  282.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPCTSTR))&OnWinIniChange },
  283. #define ON_WM_DEVMODECHANGE() \
  284.     { WM_DEVMODECHANGE, 0, 0, 0, AfxSig_vs, \
  285.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPTSTR))&OnDevModeChange },
  286. #define ON_WM_ACTIVATEAPP() \
  287.     { WM_ACTIVATEAPP, 0, 0, 0, AfxSig_vbh, \
  288.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, HTASK))&OnActivateApp },
  289. #define ON_WM_FONTCHANGE() \
  290.     { WM_FONTCHANGE, 0, 0, 0, AfxSig_vv, \
  291.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnFontChange },
  292. #define ON_WM_TIMECHANGE() \
  293.     { WM_TIMECHANGE, 0, 0, 0, AfxSig_vv, \
  294.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnTimeChange },
  295. #define ON_WM_CANCELMODE() \
  296.     { WM_CANCELMODE, 0, 0, 0, AfxSig_vv, \
  297.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnCancelMode },
  298. #define ON_WM_SETCURSOR() \
  299.     { WM_SETCURSOR, 0, 0, 0, AfxSig_bWww, \
  300.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnSetCursor },
  301. #define ON_WM_MOUSEACTIVATE() \
  302.     { WM_MOUSEACTIVATE, 0, 0, 0, AfxSig_iWww, \
  303.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnMouseActivate },
  304. #define ON_WM_CHILDACTIVATE() \
  305.     { WM_CHILDACTIVATE, 0, 0, 0, AfxSig_vv, \
  306.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnChildActivate },
  307. #define ON_WM_GETMINMAXINFO() \
  308.     { WM_GETMINMAXINFO, 0, 0, 0, AfxSig_vs, \
  309.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(MINMAXINFO*))&OnGetMinMaxInfo },
  310. #define ON_WM_ICONERASEBKGND() \
  311.     { WM_ICONERASEBKGND, 0, 0, 0, AfxSig_vD, \
  312.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CDC*))&OnIconEraseBkgnd },
  313. #define ON_WM_SPOOLERSTATUS() \
  314.     { WM_SPOOLERSTATUS, 0, 0, 0, AfxSig_vww, \
  315.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))&OnSpoolerStatus },
  316. #define ON_WM_DRAWITEM() \
  317.     { WM_DRAWITEM, 0, 0, 0, AfxSig_vOWNER, \
  318.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDRAWITEMSTRUCT))&OnDrawItem },
  319. #define ON_WM_DRAWITEM_REFLECT() \
  320.     { WM_DRAWITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
  321.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDRAWITEMSTRUCT))DrawItem },
  322. #define ON_WM_MEASUREITEM() \
  323.     { WM_MEASUREITEM, 0, 0, 0, AfxSig_vOWNER, \
  324.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPMEASUREITEMSTRUCT))&OnMeasureItem },
  325. #define ON_WM_MEASUREITEM_REFLECT() \
  326.     { WM_MEASUREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
  327.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPMEASUREITEMSTRUCT))MeasureItem },
  328. #define ON_WM_DELETEITEM() \
  329.     { WM_DELETEITEM, 0, 0, 0, AfxSig_vOWNER, \
  330.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPDELETEITEMSTRUCT))&OnDeleteItem },
  331. #define ON_WM_DELETEITEM_REFLECT() \
  332.     { WM_DELETEITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vs, \
  333.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(LPDELETEITEMSTRUCT))DeleteItem },
  334. #define ON_WM_CHARTOITEM() \
  335.     { WM_CHARTOITEM, 0, 0, 0, AfxSig_iwWw, \
  336.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnCharToItem },
  337. #define ON_WM_CHARTOITEM_REFLECT() \
  338.     { WM_CHARTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
  339.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))CharToItem },
  340. #define ON_WM_VKEYTOITEM() \
  341.     { WM_VKEYTOITEM, 0, 0, 0, AfxSig_iwWw, \
  342.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, CListBox*, UINT))&OnVKeyToItem },
  343. #define ON_WM_VKEYTOITEM_REFLECT() \
  344.     { WM_VKEYTOITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_iww, \
  345.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(UINT, UINT))VKeyToItem },
  346. #define ON_WM_QUERYDRAGICON() \
  347.     { WM_QUERYDRAGICON, 0, 0, 0, AfxSig_hv, \
  348.         (AFX_PMSG)(AFX_PMSGW)(HCURSOR (AFX_MSG_CALL CWnd::*)())&OnQueryDragIcon },
  349. #define ON_WM_COMPAREITEM() \
  350.     { WM_COMPAREITEM, 0, 0, 0, AfxSig_iis, \
  351.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(int, LPCOMPAREITEMSTRUCT))&OnCompareItem },
  352. #define ON_WM_COMPAREITEM_REFLECT() \
  353.     { WM_COMPAREITEM+WM_REFLECT_BASE, 0, 0, 0, AfxSig_is, \
  354.         (AFX_PMSG)(AFX_PMSGW)(int (AFX_MSG_CALL CWnd::*)(LPCOMPAREITEMSTRUCT))CompareItem },
  355. #define ON_WM_COMPACTING() \
  356.     { WM_COMPACTING, 0, 0, 0, AfxSig_vw, \
  357.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnCompacting },
  358. #define ON_WM_NCCREATE() \
  359.     { WM_NCCREATE, 0, 0, 0, AfxSig_is, \
  360.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(LPCREATESTRUCT))&OnNcCreate },
  361. #define ON_WM_NCDESTROY() \
  362.     { WM_NCDESTROY, 0, 0, 0, AfxSig_vv, \
  363.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcDestroy },
  364. #define ON_WM_NCCALCSIZE() \
  365.     { WM_NCCALCSIZE, 0, 0, 0, AfxSig_vCALC, \
  366.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, NCCALCSIZE_PARAMS*))&OnNcCalcSize },
  367. #define ON_WM_NCHITTEST() \
  368.     { WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
  369.         (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))&OnNcHitTest },
  370. #define ON_WM_NCPAINT() \
  371.     { WM_NCPAINT, 0, 0, 0, AfxSig_vv, \
  372.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnNcPaint },
  373. #define ON_WM_NCACTIVATE() \
  374.     { WM_NCACTIVATE, 0, 0, 0, AfxSig_bb, \
  375.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(BOOL))&OnNcActivate },
  376. #define ON_WM_GETDLGCODE() \
  377.     { WM_GETDLGCODE, 0, 0, 0, AfxSig_wv, \
  378.         (AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(void))&OnGetDlgCode },
  379. #define ON_WM_NCMOUSEMOVE() \
  380.     { WM_NCMOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
  381.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMouseMove },
  382. #define ON_WM_NCLBUTTONDOWN() \
  383.     { WM_NCLBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  384.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDown },
  385. #define ON_WM_NCLBUTTONUP() \
  386.     { WM_NCLBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  387.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonUp },
  388. #define ON_WM_NCLBUTTONDBLCLK() \
  389.     { WM_NCLBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  390.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcLButtonDblClk },
  391. #define ON_WM_NCRBUTTONDOWN() \
  392.     { WM_NCRBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  393.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDown },
  394. #define ON_WM_NCRBUTTONUP() \
  395.     { WM_NCRBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  396.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonUp },
  397. #define ON_WM_NCRBUTTONDBLCLK() \
  398.     { WM_NCRBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  399.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcRButtonDblClk },
  400. #define ON_WM_NCMBUTTONDOWN() \
  401.     { WM_NCMBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  402.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDown },
  403. #define ON_WM_NCMBUTTONUP() \
  404.     { WM_NCMBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  405.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonUp },
  406. #define ON_WM_NCMBUTTONDBLCLK() \
  407.     { WM_NCMBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  408.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnNcMButtonDblClk },
  409. #define ON_WM_KEYDOWN() \
  410.     { WM_KEYDOWN, 0, 0, 0, AfxSig_vwww, \
  411.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyDown },
  412. #define ON_WM_KEYUP() \
  413.     { WM_KEYUP, 0, 0, 0, AfxSig_vwww, \
  414.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnKeyUp },
  415. #define ON_WM_CHAR() \
  416.     { WM_CHAR, 0, 0, 0, AfxSig_vwww, \
  417.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnChar },
  418. #define ON_WM_DEADCHAR() \
  419.     { WM_DEADCHAR, 0, 0, 0, AfxSig_vwww, \
  420.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnDeadChar },
  421. #define ON_WM_SYSKEYDOWN() \
  422.     { WM_SYSKEYDOWN, 0, 0, 0, AfxSig_vwww, \
  423.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyDown },
  424. #define ON_WM_SYSKEYUP() \
  425.     { WM_SYSKEYUP, 0, 0, 0, AfxSig_vwww, \
  426.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysKeyUp },
  427. #define ON_WM_SYSCHAR() \
  428.     { WM_SYSCHAR, 0, 0, 0, AfxSig_vwww, \
  429.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysChar },
  430. #define ON_WM_SYSDEADCHAR() \
  431.     { WM_SYSDEADCHAR, 0, 0, 0, AfxSig_vwww, \
  432.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, UINT))&OnSysDeadChar },
  433. #define ON_WM_SYSCOMMAND() \
  434.     { WM_SYSCOMMAND, 0, 0, 0, AfxSig_vwl, \
  435.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnSysCommand },
  436. #define ON_WM_TCARD() \
  437.     { WM_TCARD, 0, 0, 0, AfxSig_vwl, \
  438.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnTCard },
  439. #define ON_WM_TIMER() \
  440.     { WM_TIMER, 0, 0, 0, AfxSig_vw, \
  441.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnTimer },
  442. #define ON_WM_HSCROLL() \
  443.     { WM_HSCROLL, 0, 0, 0, AfxSig_vwwW, \
  444.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnHScroll },
  445. #define ON_WM_HSCROLL_REFLECT() \
  446.     { WM_HSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
  447.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))HScroll },
  448. #define ON_WM_VSCROLL() \
  449.     { WM_VSCROLL, 0, 0, 0, AfxSig_vwwW, \
  450.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, CScrollBar*))&OnVScroll },
  451. #define ON_WM_VSCROLL_REFLECT() \
  452.     { WM_VSCROLL+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwwx, \
  453.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT))VScroll },
  454. #define ON_WM_INITMENU() \
  455.     { WM_INITMENU, 0, 0, 0, AfxSig_vM, \
  456.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*))&OnInitMenu },
  457. #define ON_WM_INITMENUPOPUP() \
  458.     { WM_INITMENUPOPUP, 0, 0, 0, AfxSig_vMwb, \
  459.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CMenu*, UINT, BOOL))&OnInitMenuPopup },
  460. #define ON_WM_MENUSELECT() \
  461.     { WM_MENUSELECT, 0, 0, 0, AfxSig_vwwh, \
  462.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, UINT, HMENU))&OnMenuSelect },
  463. #define ON_WM_MENUCHAR() \
  464.     { WM_MENUCHAR, 0, 0, 0, AfxSig_lwwM, \
  465.         (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(UINT, UINT, CMenu*))&OnMenuChar },
  466. #define ON_WM_ENTERIDLE() \
  467.     { WM_ENTERIDLE, 0, 0, 0, AfxSig_vwW, \
  468.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CWnd*))&OnEnterIdle },
  469. #define ON_WM_MOUSEMOVE() \
  470.     { WM_MOUSEMOVE, 0, 0, 0, AfxSig_vwp, \
  471.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMouseMove },
  472. #define ON_WM_MOUSEWHEEL() \
  473.     { WM_MOUSEWHEEL, 0, 0, 0, AfxSig_bwsp, \
  474.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, short, CPoint))&OnMouseWheel },
  475. #define ON_WM_LBUTTONDOWN() \
  476.     { WM_LBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  477.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDown },
  478. #define ON_WM_LBUTTONUP() \
  479.     { WM_LBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  480.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonUp },
  481. #define ON_WM_LBUTTONDBLCLK() \
  482.     { WM_LBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  483.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnLButtonDblClk },
  484. #define ON_WM_RBUTTONDOWN() \
  485.     { WM_RBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  486.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDown },
  487. #define ON_WM_RBUTTONUP() \
  488.     { WM_RBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  489.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonUp },
  490. #define ON_WM_RBUTTONDBLCLK() \
  491.     { WM_RBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  492.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnRButtonDblClk },
  493. #define ON_WM_MBUTTONDOWN() \
  494.     { WM_MBUTTONDOWN, 0, 0, 0, AfxSig_vwp, \
  495.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDown },
  496. #define ON_WM_MBUTTONUP() \
  497.     { WM_MBUTTONUP, 0, 0, 0, AfxSig_vwp, \
  498.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonUp },
  499. #define ON_WM_MBUTTONDBLCLK() \
  500.     { WM_MBUTTONDBLCLK, 0, 0, 0, AfxSig_vwp, \
  501.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, CPoint))&OnMButtonDblClk },
  502. #define ON_WM_PARENTNOTIFY() \
  503.     { WM_PARENTNOTIFY, 0, 0, 0, AfxSig_vwl, \
  504.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))&OnParentNotify },
  505. #define ON_WM_PARENTNOTIFY_REFLECT() \
  506.     { WM_PARENTNOTIFY+WM_REFLECT_BASE, 0, 0, 0, AfxSig_vwl, \
  507.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPARAM))ParentNotify },
  508. #define ON_WM_MDIACTIVATE() \
  509.     { WM_MDIACTIVATE, 0, 0, 0, AfxSig_vbWW, \
  510.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL, CWnd*, CWnd*))&OnMDIActivate },
  511. #define ON_WM_RENDERFORMAT() \
  512.     { WM_RENDERFORMAT, 0, 0, 0, AfxSig_vw, \
  513.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT))&OnRenderFormat },
  514. #define ON_WM_RENDERALLFORMATS() \
  515.     { WM_RENDERALLFORMATS, 0, 0, 0, AfxSig_vv, \
  516.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnRenderAllFormats },
  517. #define ON_WM_DESTROYCLIPBOARD() \
  518.     { WM_DESTROYCLIPBOARD, 0, 0, 0, AfxSig_vv, \
  519.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDestroyClipboard },
  520. #define ON_WM_DRAWCLIPBOARD() \
  521.     { WM_DRAWCLIPBOARD, 0, 0, 0, AfxSig_vv, \
  522.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnDrawClipboard },
  523. #define ON_WM_PAINTCLIPBOARD() \
  524.     { WM_PAINTCLIPBOARD, 0, 0, 0, AfxSig_vWh, \
  525.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnPaintClipboard },
  526. #define ON_WM_VSCROLLCLIPBOARD() \
  527.     { WM_VSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
  528.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnVScrollClipboard },
  529. #define ON_WM_CONTEXTMENU() \
  530.     { WM_CONTEXTMENU, 0, 0, 0, AfxSig_vWp, \
  531.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, CPoint))&OnContextMenu },
  532. #define ON_WM_SIZECLIPBOARD() \
  533.     { WM_SIZECLIPBOARD, 0, 0, 0, AfxSig_vWh, \
  534.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, HGLOBAL))&OnSizeClipboard },
  535. #define ON_WM_ASKCBFORMATNAME() \
  536.     { WM_ASKCBFORMATNAME, 0, 0, 0, AfxSig_vwl, \
  537.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPTSTR))&OnAskCbFormatName },
  538. #define ON_WM_CHANGECBCHAIN() \
  539.     { WM_CHANGECBCHAIN, 0, 0, 0, AfxSig_vhh, \
  540.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HWND, HWND))&OnChangeCbChain },
  541. #define ON_WM_HSCROLLCLIPBOARD() \
  542.     { WM_HSCROLLCLIPBOARD, 0, 0, 0, AfxSig_vWww, \
  543.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*, UINT, UINT))&OnHScrollClipboard },
  544. #define ON_WM_QUERYNEWPALETTE() \
  545.     { WM_QUERYNEWPALETTE, 0, 0, 0, AfxSig_bv, \
  546.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(void))&OnQueryNewPalette },
  547. #define ON_WM_PALETTECHANGED() \
  548.     { WM_PALETTECHANGED, 0, 0, 0, AfxSig_vW, \
  549.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteChanged },
  550.  
  551. #define ON_WM_PALETTEISCHANGING() \
  552.     { WM_PALETTEISCHANGING, 0, 0, 0, AfxSig_vW, \
  553.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnPaletteIsChanging },
  554. #define ON_WM_DROPFILES() \
  555.     { WM_DROPFILES, 0, 0, 0, AfxSig_vh, \
  556.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(HDROP))&OnDropFiles },
  557. #define ON_WM_WINDOWPOSCHANGING() \
  558.     { WM_WINDOWPOSCHANGING, 0, 0, 0, AfxSig_vPOS, \
  559.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanging },
  560. #define ON_WM_WINDOWPOSCHANGED() \
  561.     { WM_WINDOWPOSCHANGED, 0, 0, 0, AfxSig_vPOS, \
  562.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(WINDOWPOS*))&OnWindowPosChanged },
  563.  
  564. #define ON_WM_EXITMENULOOP() \
  565.     { WM_EXITMENULOOP, 0, 0, 0, AfxSig_vb, \
  566.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnExitMenuLoop },
  567. #define ON_WM_ENTERMENULOOP() \
  568.     { WM_ENTERMENULOOP, 0, 0, 0, AfxSig_vb, \
  569.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(BOOL))&OnEnterMenuLoop },
  570.  
  571. #define ON_WM_STYLECHANGED() \
  572.     { WM_STYLECHANGED, 0, 0, 0, AfxSig_viSS, \
  573.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanged },
  574. #define ON_WM_STYLECHANGING() \
  575.     { WM_STYLECHANGING, 0, 0, 0, AfxSig_viSS, \
  576.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(int, LPSTYLESTRUCT))&OnStyleChanging },
  577. #define ON_WM_SIZING() \
  578.     { WM_SIZING, 0, 0, 0, AfxSig_vwSIZING, \
  579.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnSizing },
  580. #define ON_WM_MOVING() \
  581.     { WM_MOVING, 0, 0, 0, AfxSig_vwMOVING, \
  582.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(UINT, LPRECT))&OnMoving },
  583. #define ON_WM_CAPTURECHANGED() \
  584.     { WM_CAPTURECHANGED, 0, 0, 0, AfxSig_vW2, \
  585.         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(CWnd*))&OnCaptureChanged },
  586. #define ON_WM_DEVICECHANGE() \
  587.     { WM_DEVICECHANGE, 0, 0, 0, AfxSig_bwl, \
  588.         (AFX_PMSG)(AFX_PMSGW)(BOOL (AFX_MSG_CALL CWnd::*)(UINT, DWORD))&OnDeviceChange },
  589.  
  590. /////////////////////////////////////////////////////////////////////////////
  591. // Message map tables for Control Notification messages
  592.  
  593. // Static control notification codes
  594. #define ON_STN_CLICKED(id, memberFxn) \
  595.     ON_CONTROL(STN_CLICKED, id, memberFxn)
  596. #define ON_STN_DBLCLK(id, memberFxn) \
  597.     ON_CONTROL(STN_DBLCLK, id, memberFxn)
  598. #define ON_STN_ENABLE(id, memberFxn) \
  599.     ON_CONTROL(STN_ENABLE, id, memberFxn)
  600. #define ON_STN_DISABLE(id, memberFxn) \
  601.     ON_CONTROL(STN_DISABLE, id, memberFxn)
  602.  
  603.  
  604. // Edit Control Notification Codes
  605. #define ON_EN_SETFOCUS(id, memberFxn) \
  606.     ON_CONTROL(EN_SETFOCUS, id, memberFxn)
  607. #define ON_EN_KILLFOCUS(id, memberFxn) \
  608.     ON_CONTROL(EN_KILLFOCUS, id, memberFxn)
  609. #define ON_EN_CHANGE(id, memberFxn) \
  610.     ON_CONTROL(EN_CHANGE, id, memberFxn)
  611. #define ON_EN_UPDATE(id, memberFxn) \
  612.     ON_CONTROL(EN_UPDATE, id, memberFxn)
  613. #define ON_EN_ERRSPACE(id, memberFxn) \
  614.     ON_CONTROL(EN_ERRSPACE, id, memberFxn)
  615. #define ON_EN_MAXTEXT(id, memberFxn) \
  616.     ON_CONTROL(EN_MAXTEXT, id, memberFxn)
  617. #define ON_EN_HSCROLL(id, memberFxn) \
  618.     ON_CONTROL(EN_HSCROLL, id, memberFxn)
  619. #define ON_EN_VSCROLL(id, memberFxn) \
  620.     ON_CONTROL(EN_VSCROLL, id, memberFxn)
  621.  
  622. // User Button Notification Codes
  623. #define ON_BN_CLICKED(id, memberFxn) \
  624.     ON_CONTROL(BN_CLICKED, id, memberFxn)
  625. #define ON_BN_DOUBLECLICKED(id, memberFxn) \
  626.     ON_CONTROL(BN_DOUBLECLICKED, id, memberFxn)
  627. #define ON_BN_SETFOCUS(id, memberFxn) \
  628.     ON_CONTROL(BN_SETFOCUS, id, memberFxn)
  629. #define ON_BN_KILLFOCUS(id, memberFxn) \
  630.     ON_CONTROL(BN_KILLFOCUS, id, memberFxn)
  631.  
  632. // old BS_USERBUTTON button notifications - obsolete in Win31
  633. #define ON_BN_PAINT(id, memberFxn) \
  634.     ON_CONTROL(BN_PAINT, id, memberFxn)
  635. #define ON_BN_HILITE(id, memberFxn) \
  636.     ON_CONTROL(BN_HILITE, id, memberFxn)
  637. #define ON_BN_UNHILITE(id, memberFxn) \
  638.     ON_CONTROL(BN_UNHILITE, id, memberFxn)
  639. #define ON_BN_DISABLE(id, memberFxn) \
  640.     ON_CONTROL(BN_DISABLE, id, memberFxn)
  641.  
  642. // Listbox Notification Codes
  643. #define ON_LBN_ERRSPACE(id, memberFxn) \
  644.     ON_CONTROL(LBN_ERRSPACE, id, memberFxn)
  645. #define ON_LBN_SELCHANGE(id, memberFxn) \
  646.     ON_CONTROL(LBN_SELCHANGE, id, memberFxn)
  647. #define ON_LBN_DBLCLK(id, memberFxn) \
  648.     ON_CONTROL(LBN_DBLCLK, id, memberFxn)
  649. #define ON_LBN_SELCANCEL(id, memberFxn) \
  650.     ON_CONTROL(LBN_SELCANCEL, id, memberFxn)
  651. #define ON_LBN_SETFOCUS(id, memberFxn) \
  652.     ON_CONTROL(LBN_SETFOCUS, id, memberFxn)
  653. #define ON_LBN_KILLFOCUS(id, memberFxn) \
  654.     ON_CONTROL(LBN_KILLFOCUS, id, memberFxn)
  655.  
  656. // Check Listbox Notification codes
  657. #define CLBN_CHKCHANGE (40)
  658. #define ON_CLBN_CHKCHANGE(id, memberFxn) \
  659.     ON_CONTROL(CLBN_CHKCHANGE, id, memberFxn)
  660.  
  661. // Combo Box Notification Codes
  662. #define ON_CBN_ERRSPACE(id, memberFxn) \
  663.     ON_CONTROL(CBN_ERRSPACE, id, memberFxn)
  664. #define ON_CBN_SELCHANGE(id, memberFxn) \
  665.     ON_CONTROL(CBN_SELCHANGE, id, memberFxn)
  666. #define ON_CBN_DBLCLK(id, memberFxn) \
  667.     ON_CONTROL(CBN_DBLCLK, id, memberFxn)
  668. #define ON_CBN_SETFOCUS(id, memberFxn) \
  669.     ON_CONTROL(CBN_SETFOCUS, id, memberFxn)
  670. #define ON_CBN_KILLFOCUS(id, memberFxn) \
  671.     ON_CONTROL(CBN_KILLFOCUS, id, memberFxn)
  672. #define ON_CBN_EDITCHANGE(id, memberFxn) \
  673.     ON_CONTROL(CBN_EDITCHANGE, id, memberFxn)
  674. #define ON_CBN_EDITUPDATE(id, memberFxn) \
  675.     ON_CONTROL(CBN_EDITUPDATE, id, memberFxn)
  676. #define ON_CBN_DROPDOWN(id, memberFxn) \
  677.     ON_CONTROL(CBN_DROPDOWN, id, memberFxn)
  678. #define ON_CBN_CLOSEUP(id, memberFxn)  \
  679.     ON_CONTROL(CBN_CLOSEUP, id, memberFxn)
  680. #define ON_CBN_SELENDOK(id, memberFxn)  \
  681.     ON_CONTROL(CBN_SELENDOK, id, memberFxn)
  682. #define ON_CBN_SELENDCANCEL(id, memberFxn)  \
  683.     ON_CONTROL(CBN_SELENDCANCEL, id, memberFxn)
  684.  
  685. /////////////////////////////////////////////////////////////////////////////
  686. // User extensions for message map entries
  687.  
  688. // for Windows messages
  689. #define ON_MESSAGE(message, memberFxn) \
  690.     { message, 0, 0, 0, AfxSig_lwl, \
  691.         (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
  692.  
  693. // for Registered Windows messages
  694. #define ON_REGISTERED_MESSAGE(nMessageVariable, memberFxn) \
  695.     { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
  696.         /*implied 'AfxSig_lwl'*/ \
  697.         (AFX_PMSG)(AFX_PMSGW)(LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))&memberFxn },
  698.  
  699. // for Thread messages
  700. #define ON_THREAD_MESSAGE(message, memberFxn) \
  701.     { message, 0, 0, 0, AfxSig_vwl, \
  702.         (AFX_PMSG)(AFX_PMSGT)(void (AFX_MSG_CALL CWinThread::*)(WPARAM, LPARAM))&memberFxn },
  703.  
  704. // for Registered Windows messages
  705. #define ON_REGISTERED_THREAD_MESSAGE(nMessageVariable, memberFxn) \
  706.     { 0xC000, 0, 0, 0, (UINT)(UINT*)(&nMessageVariable), \
  707.         /*implied 'AfxSig_vwl'*/ \
  708.         (AFX_PMSG)(AFX_PMSGT)(void (AFX_MSG_CALL CWinThread::*)(WPARAM, LPARAM))&memberFxn },
  709.  
  710. /////////////////////////////////////////////////////////////////////////////
  711.