home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / owlsrc.pak / DISPATCH.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-24  |  8.5 KB  |  345 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows
  3. // (C) Copyright 1992, 1994 by Borland International, All Rights Reserved
  4. //
  5. //   Implementation of dispatcher functions
  6. //----------------------------------------------------------------------------
  7. #include <owl/owlpch.h>
  8. #include <owl/point.h>
  9. #include <owl/dispatch.h>
  10.  
  11. //----------------------------------------------------------------------------
  12.  
  13. int32 _OWLFUNC
  14. i_LPARAM_Dispatch(GENERIC& generic,
  15.                   int     (GENERIC::*pmf)(int32),
  16.                   uint,
  17.                   int32    lParam)
  18. {
  19.   return (generic.*pmf)(lParam);
  20. }
  21.  
  22. int32 _OWLFUNC
  23. i_WPARAM_Dispatch(GENERIC& generic,
  24.                   int     (GENERIC::*pmf)(uint),
  25.                   uint     wParam,
  26.                   int32)
  27. {
  28.   return (generic.*pmf)(wParam);
  29. }
  30.  
  31. //----------------------------------------------------------------------------
  32.  
  33. int32 _OWLFUNC
  34. I32_Dispatch(GENERIC& generic,
  35.              uint32  (GENERIC::*pmf)(),
  36.              uint,
  37.              int32)
  38. {
  39.   return (generic.*pmf)();
  40. }
  41.  
  42. int32 _OWLFUNC
  43. I32_LPARAM_Dispatch(GENERIC& generic,
  44.                     int32  (GENERIC::*pmf)(int32),
  45.                     uint,
  46.                     int32    lParam)
  47. {
  48.   return (generic.*pmf)(lParam);
  49. }
  50.  
  51. //
  52. // passes lParam as a uint and returns an int32 result
  53. //
  54. int32 _OWLFUNC
  55. I32_U_Dispatch(GENERIC& generic,
  56.                int32   (GENERIC::*pmf)(uint),
  57.                uint,
  58.                int32    lParam)
  59. {
  60.   return (generic.*pmf)((uint)lParam);
  61. }
  62.  
  63.  
  64. int32 _OWLFUNC
  65. I32_WPARAM_LPARAM_Dispatch(GENERIC& generic,
  66.                            int32   (GENERIC::*pmf)(uint, int32),
  67.                            uint     wParam,
  68.                            int32    lParam)
  69. {
  70.   return (generic.*pmf)(wParam, lParam);
  71. }
  72.  
  73. //----------------------------------------------------------------------------
  74.  
  75. int32 _OWLFUNC
  76. U_Dispatch(GENERIC& generic,
  77.            uint(GENERIC::*pmf)(),
  78.            uint,
  79.            int32)
  80. {
  81.   return (generic.*pmf)();
  82. }
  83.  
  84. int32 _OWLFUNC
  85. U_LPARAM_Dispatch(GENERIC& generic,
  86.                   uint    (GENERIC::*pmf)(int32),
  87.                   uint,
  88.                   int32    lParam)
  89. {
  90.   return (generic.*pmf)(lParam);
  91. }
  92.  
  93. int32 _OWLFUNC
  94. U_POINT_Dispatch(GENERIC& generic,
  95.                  uint    (GENERIC::*pmf)(TPoint&),
  96.                  uint,
  97.                  int32    lParam)
  98. {
  99. #if defined(BI_PLAT_WIN32)
  100.   return (generic.*pmf)(TPoint(lParam));
  101. #else
  102.   return (generic.*pmf)(*(TPoint*)&lParam);  // 16-bit cast trick
  103. #endif
  104. }
  105.  
  106. int32 _OWLFUNC
  107. U_POINTER_Dispatch(GENERIC& generic,
  108.                    uint    (GENERIC::*pmf)(void*),
  109.                    uint,
  110.                    int32    lParam)
  111. {
  112.   return (generic.*pmf)((void*)lParam);
  113. }
  114.  
  115. int32 _OWLFUNC
  116. U_U_Dispatch(GENERIC& generic,
  117.              uint    (GENERIC::*pmf)(uint),
  118.              uint,
  119.              int32    lParam)
  120. {
  121.   return (generic.*pmf)((uint)lParam);
  122. }
  123.  
  124. int32 _OWLFUNC
  125. U_U_U_U_Dispatch(GENERIC& generic,
  126.                  uint    (GENERIC::*pmf)(uint, uint, uint),
  127.                  uint     wParam,
  128.                  int32    lParam)
  129. {
  130.   return (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  131. }
  132.  
  133. int32 _OWLFUNC
  134. U_WPARAM_LPARAM_Dispatch(GENERIC& generic,
  135.                          uint    (GENERIC::*pmf)(uint, int32),
  136.                          uint     wParam,
  137.                          int32    lParam)
  138. {
  139.   return (generic.*pmf)(wParam, lParam);
  140. }
  141.  
  142. //----------------------------------------------------------------------------
  143.  
  144. int32 _OWLFUNC
  145. v_Dispatch(GENERIC& generic,
  146.            void    (GENERIC::*pmf)(),
  147.            uint,
  148.            int32)
  149. {
  150.   (generic.*pmf)();
  151.   return 0;
  152. }
  153.  
  154. int32 _OWLFUNC
  155. v_LPARAM_Dispatch(GENERIC& generic,
  156.                   void    (GENERIC::*pmf)(int32),
  157.                   uint,
  158.                   int32    lParam)
  159. {
  160.   (generic.*pmf)(lParam);
  161.   return 0;
  162. }
  163.  
  164. int32 _OWLFUNC
  165. v_POINT_Dispatch(GENERIC& generic,
  166.                  void    (GENERIC::*pmf)(TPoint&),
  167.                  uint,
  168.                  int32    lParam)
  169. {
  170. #if defined(BI_PLAT_WIN32)
  171.   (generic.*pmf)(TPoint(lParam));
  172. #else
  173.   (generic.*pmf)(*(TPoint*)&lParam);  // 16-bit cast trick
  174. #endif
  175.   return 0;
  176. }
  177.  
  178. int32 _OWLFUNC
  179. v_POINTER_Dispatch(GENERIC& generic,
  180.                    void    (GENERIC::*pmf)(void*),
  181.                    uint,
  182.                    int32    lParam)
  183. {
  184.   (generic.*pmf)((void*)lParam);
  185.   return 0;
  186. }
  187.  
  188. int32 _OWLFUNC
  189. v_U_Dispatch(GENERIC& generic,
  190.              void    (GENERIC::*pmf)(uint),
  191.              uint,
  192.              int32    lParam)
  193. {
  194.   (generic.*pmf)((uint)lParam);
  195.   return 0;
  196. }
  197.  
  198. int32 _OWLFUNC
  199. v_U_POINT_Dispatch(GENERIC& generic,
  200.                    void    (GENERIC::*pmf)(uint, TPoint&),
  201.                    uint     wParam,
  202.                    int32    lParam)
  203. {
  204. #if defined(BI_PLAT_WIN32)
  205.   (generic.*pmf)(wParam, TPoint(lParam));
  206. #else
  207.   (generic.*pmf)(wParam, *(TPoint*)&lParam);  // 16-bit cast trick
  208. #endif
  209.   return 0;
  210. }
  211.  
  212. int32 _OWLFUNC
  213. v_U_U_Dispatch(GENERIC& generic,
  214.                void    (GENERIC::*pmf)(uint, uint),
  215.                uint     wParam,
  216.                int32    lParam)
  217. {
  218.   (generic.*pmf)(wParam, (uint)lParam);
  219.   return 0;
  220. }
  221.  
  222. int32 _OWLFUNC
  223. v_U_U_U_Dispatch(GENERIC& generic,
  224.                  void    (GENERIC::*pmf)(uint, uint, uint),
  225.                  uint     wParam,
  226.                  int32    lParam)
  227. {
  228.   (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  229.   return 0;
  230. }
  231.  
  232. int32 _OWLFUNC
  233. v_WPARAM_Dispatch(GENERIC& generic,
  234.                   void    (GENERIC::*pmf)(uint),
  235.                   uint     wParam,
  236.                   int32)
  237. {
  238.   (generic.*pmf)(wParam);
  239.   return 0;
  240. }
  241.  
  242. int32 _OWLFUNC
  243. v_WPARAM_LPARAM_Dispatch(GENERIC& generic,
  244.                          void    (GENERIC::*pmf)(uint, int32),
  245.                          uint     wParam,
  246.                          int32    lParam)
  247. {
  248.   (generic.*pmf)(wParam, lParam);
  249.   return 0;
  250. }
  251.  
  252. //----------------------------------------------------------------------------
  253. //
  254. // Semi-custom message crackers
  255. //
  256. int32 _OWLFUNC
  257. i_U_W_U_Dispatch(GENERIC& generic,
  258.                  int     (GENERIC::*pmf)(uint, uint, uint),
  259.                  uint     wParam,
  260.                  int32    lParam)
  261. {
  262. #if defined(BI_PLAT_WIN32)
  263.   return (generic.*pmf)(LOWORD(wParam), lParam, HIWORD(wParam));
  264. #else
  265.   return (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  266. #endif
  267. }
  268.  
  269. int32 _OWLFUNC
  270. v_U_U_W_Dispatch(GENERIC& generic,
  271.                  void    (GENERIC::*pmf)(uint, uint, uint),
  272.                  uint     wParam,
  273.                  int32    lParam)
  274. {
  275. #if defined(BI_PLAT_WIN32)
  276.   (generic.*pmf)(LOWORD(wParam), HIWORD(wParam), lParam);
  277. #else
  278.   (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  279. #endif
  280.   return 0;
  281. }
  282.  
  283. //----------------------------------------------------------------------------
  284. //
  285. // Custom message crackers
  286. //
  287.  
  288. int32 _OWLFUNC
  289. v_Activate_Dispatch(GENERIC& generic,
  290.                     void    (GENERIC::*pmf)(uint, uint, uint),
  291.                     uint     wParam,
  292.                     int32    lParam)
  293. {
  294. #if defined(BI_PLAT_WIN32)
  295.   (generic.*pmf)(LOWORD(wParam), HIWORD(wParam), lParam);
  296. #else
  297.   (generic.*pmf)(wParam, HIWORD(lParam), LOWORD(lParam));
  298. #endif
  299.   return 0;
  300. }
  301.  
  302. int32 _OWLFUNC
  303. v_MdiActivate_Dispatch(GENERIC& generic,
  304.                        void    (GENERIC::*pmf)(uint, uint),
  305.                        uint     wParam,
  306.                        int32    lParam)
  307. {
  308. #if defined(BI_PLAT_WIN32)
  309.   (generic.*pmf)(lParam, wParam);
  310. #else
  311.   (generic.*pmf)(LOWORD(lParam), lParam ? HIWORD(lParam) : wParam);
  312. #endif
  313.   return 0;
  314. }
  315.  
  316. int32 _OWLFUNC
  317. I32_MenuChar_Dispatch(GENERIC& generic,
  318.                       int32   (GENERIC::*pmf)(uint, uint, uint),
  319.                       uint     wParam,
  320.                       int32    lParam)
  321. {
  322. #if defined(BI_PLAT_WIN32)
  323.   return (generic.*pmf)(LOWORD(wParam), HIWORD(wParam), lParam);
  324. #else
  325.   return (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  326. #endif
  327. }
  328.  
  329. int32 _OWLFUNC
  330. v_ParentNotify_Dispatch(GENERIC& generic,
  331.                         void    (GENERIC::*pmf)(uint, uint, uint),
  332.                         uint     wParam,
  333.                         int32    lParam)
  334. {
  335. #if defined(BI_PLAT_WIN32)
  336.   if (LOWORD(wParam) >= WM_MOUSEFIRST && LOWORD(wParam) <= WM_MOUSELAST)
  337.     (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  338.   else
  339.     (generic.*pmf)(LOWORD(wParam), lParam, HIWORD(wParam));
  340. #else
  341.   (generic.*pmf)(wParam, LOWORD(lParam), HIWORD(lParam));
  342. #endif
  343.   return 0;
  344. }
  345.