home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / audio / mciapp / appport.h < prev    next >
Text File  |  1997-10-05  |  8KB  |  216 lines

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  4. //  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
  5. //  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
  6. //  A PARTICULAR PURPOSE.
  7. //
  8. //  Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11. //
  12. //  appport.h -- Win 16/32 Portability Stuff
  13. //
  14. //  Description:
  15. //      This file contains common macros to help with writing code that
  16. //      cross compiles between Win 32 and Win 16. This file should be
  17. //      included _after_ windows.h and windowsx.h.
  18. //
  19. //  History:
  20. //      11/ 8/92    created.
  21. //
  22. //==========================================================================;
  23.  
  24. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  25. //
  26. //  Win 32
  27. //
  28. //
  29. //
  30. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  31.  
  32. #ifdef WIN32
  33.     #ifndef FNLOCAL
  34.         #define FNLOCAL     _stdcall
  35.         #define FNCLOCAL    _stdcall
  36.         #define FNGLOBAL    _stdcall
  37.         #define FNCGLOBAL   _stdcall
  38.         #define FNCALLBACK  CALLBACK
  39.         #define FNEXPORT    CALLBACK
  40.     #endif
  41.  
  42.     #ifndef PCTSTR
  43.         typedef const PTSTR     PCTSTR;
  44.     #endif
  45.  
  46.     //
  47.     //
  48.     //
  49.     #define Edit_GetSelEx(hwndCtl, pnS, pnE)    \
  50.         ((DWORD)SendMessage((hwndCtl), EM_GETSEL, (WPARAM)pnS, (LPARAM)pnE))
  51.  
  52.     //
  53.     //  for compiling Unicode
  54.     //
  55.     #ifdef UNICODE
  56.         #define SIZEOF(x)   (sizeof(x)/sizeof(WCHAR))
  57.     #else
  58.         #define SIZEOF(x)   sizeof(x)
  59.     #endif
  60.  
  61.     //
  62.     //  win32 apps [usually] don't have to worry about 'huge' data
  63.     //
  64.     #if !defined hmemcpy
  65.     #define hmemcpy    memcpy
  66.     #endif
  67. #endif // #ifdef WIN32
  68.  
  69.  
  70. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  71. //
  72. //  Win 16
  73. //
  74. //
  75. //
  76. //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;
  77.  
  78. #ifndef WIN32
  79.     #ifndef FNLOCAL
  80.         #define FNLOCAL     NEAR PASCAL
  81.         #define FNCLOCAL    NEAR _cdecl
  82.         #define FNGLOBAL    FAR PASCAL
  83.         #define FNCGLOBAL   FAR _cdecl
  84.         #define FNCALLBACK  CALLBACK
  85.         #define FNEXPORT    CALLBACK _export
  86.     #endif
  87.  
  88.     //
  89.     //  stuff for Unicode in Win 32--make it a noop in Win 16
  90.     //
  91.     #ifndef _TCHAR_DEFINED
  92.         #define _TCHAR_DEFINED
  93.         typedef char            TCHAR, *PTCHAR;
  94.         typedef unsigned char   TBYTE, *PTUCHAR;
  95.  
  96.         typedef PSTR            PTSTR, PTCH;
  97.         typedef const PTSTR     PCTSTR;
  98.         typedef LPSTR           LPTSTR, LPTCH;
  99.         typedef LPCSTR          LPCTSTR;
  100.     #endif
  101.  
  102.     #define TEXT(a)         a
  103.     #define SIZEOF(x)       sizeof(x)
  104.  
  105.     //
  106.     //
  107.     //
  108.     #define CharNext        AnsiNext
  109.     #define CharPrev        AnsiPrev
  110.  
  111.     //
  112.     //
  113.     //
  114.     #define Edit_GetSelEx(hwndCtl, pnS, pnE)                        \
  115.     {                                                               \
  116.         DWORD   dw;                                                 \
  117.         dw = (DWORD)SendMessage((hwndCtl), EM_GETSEL, 0, 0L);       \
  118.         *pnE = (int)HIWORD(dw);                                     \
  119.         *pnS = (int)LOWORD(dw);                                     \
  120.     }
  121.  
  122.     //
  123.     //  common message cracker macros available in windowx.h on NT--these
  124.     //  should be added to the Win 16 windowsx.h and probably will be
  125.     //  in the future.
  126.     //
  127.     //  there is a windowsx.h16 that ships with the NT PDK that defines
  128.     //  these macros. so if that version is being used, don't redefine
  129.     //  message crackers.
  130.     //
  131.  
  132. #ifndef WM_CTLCOLORMSGBOX
  133.     #define WM_CTLCOLORMSGBOX           0x0132
  134.     #define WM_CTLCOLOREDIT             0x0133
  135.     #define WM_CTLCOLORLISTBOX          0x0134
  136.     #define WM_CTLCOLORBTN              0x0135
  137.     #define WM_CTLCOLORDLG              0x0136
  138.     #define WM_CTLCOLORSCROLLBAR        0x0137
  139.     #define WM_CTLCOLORSTATIC           0x0138
  140. #endif
  141.  
  142. #ifndef GET_WM_ACTIVATE_STATE
  143.     #define GET_WM_ACTIVATE_STATE(wp, lp)           (wp)
  144.     #define GET_WM_ACTIVATE_FMINIMIZED(wp, lp)      (BOOL)HIWORD(lp)
  145.     #define GET_WM_ACTIVATE_HWND(wp, lp)            (HWND)LOWORD(lp)
  146.     #define GET_WM_ACTIVATE_MPS(s, fmin, hwnd)      (WPARAM)(s), MAKELONG(hwnd, fmin)
  147.  
  148.     #define GET_WM_CHARTOITEM_CHAR(wp, lp)          (CHAR)(wp)
  149.     #define GET_WM_CHARTOITEM_POS(wp, lp)           HIWORD(lp)
  150.     #define GET_WM_CHARTOITEM_HWND(wp, lp)          (HWND)LOWORD(lp)
  151.     #define GET_WM_CHARTOITEM_MPS(ch, pos, hwnd)    (WPARAM)(ch), MAKELONG(hwnd, pos)
  152.  
  153.     #define GET_WM_COMMAND_ID(wp, lp)               (wp)
  154.     #define GET_WM_COMMAND_HWND(wp, lp)             (HWND)LOWORD(lp)
  155.     #define GET_WM_COMMAND_CMD(wp, lp)              HIWORD(lp)
  156.     #define GET_WM_COMMAND_MPS(id, hwnd, cmd)       (WPARAM)(id), MAKELONG(hwnd, cmd)
  157.  
  158.     #define GET_WM_CTLCOLOR_HDC(wp, lp, msg)        (HDC)(wp)
  159.     #define GET_WM_CTLCOLOR_HWND(wp, lp, msg)       (HWND)LOWORD(lp)
  160.     #define GET_WM_CTLCOLOR_TYPE(wp, lp, msg)       HIWORD(lp)
  161.     #define GET_WM_CTLCOLOR_MPS(hdc, hwnd, type)    (WPARAM)(hdc), MAKELONG(hwnd, type)
  162.  
  163.     #define GET_WM_MENUSELECT_CMD(wp, lp)           (wp)
  164.     #define GET_WM_MENUSELECT_FLAGS(wp, lp)         LOWORD(lp)
  165.     #define GET_WM_MENUSELECT_HMENU(wp, lp)         (HMENU)HIWORD(lp)
  166.     #define GET_WM_MENUSELECT_MPS(cmd, f, hmenu)    (WPARAM)(cmd), MAKELONG(f, hmenu)
  167.  
  168.     // Note: the following are for interpreting MDIclient to MDI child messages.
  169.     #define GET_WM_MDIACTIVATE_FACTIVATE(hwnd, wp, lp)  (BOOL)(wp)
  170.     #define GET_WM_MDIACTIVATE_HWNDDEACT(wp, lp)        (HWND)HIWORD(lp)
  171.     #define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp, lp)     (HWND)LOWORD(lp)
  172.  
  173.     // Note: the following is for sending to the MDI client window.
  174.     #define GET_WM_MDIACTIVATE_MPS(f, hwndD, hwndA) (WPARAM)(hwndA), 0
  175.  
  176.     #define GET_WM_MDISETMENU_MPS(hmenuF, hmenuW)   0, MAKELONG(hmenuF, hmenuW)
  177.  
  178.     #define GET_WM_MENUCHAR_CHAR(wp, lp)            (CHAR)(wp)
  179.     #define GET_WM_MENUCHAR_HMENU(wp, lp)           (HMENU)LOWORD(lp)
  180.     #define GET_WM_MENUCHAR_FMENU(wp, lp)           (BOOL)HIWORD(lp)
  181.     #define GET_WM_MENUCHAR_MPS(ch, hmenu, f)       (WPARAM)(ch), MAKELONG(hmenu, f)
  182.  
  183.     #define GET_WM_PARENTNOTIFY_MSG(wp, lp)         (wp)
  184.     #define GET_WM_PARENTNOTIFY_ID(wp, lp)          HIWORD(lp)
  185.     #define GET_WM_PARENTNOTIFY_HWNDCHILD(wp, lp)   (HWND)LOWORD(lp)
  186.     #define GET_WM_PARENTNOTIFY_X(wp, lp)           (INT)LOWORD(lp)
  187.     #define GET_WM_PARENTNOTIFY_Y(wp, lp)           (INT)HIWORD(lp)
  188.     #define GET_WM_PARENTNOTIFY_MPS(msg, id, hwnd)  (WPARAM)(msg), MAKELONG(hwnd, id)
  189.     #define GET_WM_PARENTNOTIFY2_MPS(msg, x, y)     (WPARAM)(msg), MAKELONG(x, y)
  190.  
  191.     #define GET_WM_VKEYTOITEM_CODE(wp, lp)          (wp)
  192.     #define GET_WM_VKEYTOITEM_ITEM(wp, lp)          (INT)HIWORD(lp)
  193.     #define GET_WM_VKEYTOITEM_HWND(wp, lp)          (HWND)LOWORD(lp)
  194.     #define GET_WM_VKEYTOITEM_MPS(code, item, hwnd) (WPARAM)(code), MAKELONG(hwnd, item)
  195.  
  196.     #define GET_EM_SETSEL_START(wp, lp)             LOWORD(lp)
  197.     #define GET_EM_SETSEL_END(wp, lp)               HIWORD(lp)
  198.     #define GET_EM_SETSEL_MPS(iStart, iEnd)         0, MAKELONG(iStart, iEnd)
  199.  
  200.     #define GET_EM_LINESCROLL_MPS(vert, horz)       0, MAKELONG(vert, horz)
  201.  
  202.     #define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp, lp)   (HWND)LOWORD(lp)
  203.  
  204.     #define GET_WM_HSCROLL_CODE(wp, lp)             (wp)
  205.     #define GET_WM_HSCROLL_POS(wp, lp)              LOWORD(lp)
  206.     #define GET_WM_HSCROLL_HWND(wp, lp)             (HWND)HIWORD(lp)
  207.     #define GET_WM_HSCROLL_MPS(code, pos, hwnd)     (WPARAM)(code), MAKELONG(pos, hwnd)
  208.  
  209.     #define GET_WM_VSCROLL_CODE(wp, lp)             (wp)
  210.     #define GET_WM_VSCROLL_POS(wp, lp)              LOWORD(lp)
  211.     #define GET_WM_VSCROLL_HWND(wp, lp)             (HWND)HIWORD(lp)
  212.     #define GET_WM_VSCROLL_MPS(code, pos, hwnd)     (WPARAM)(code), MAKELONG(pos, hwnd)
  213. #endif
  214.  
  215. #endif // #ifndef WIN32
  216.