home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / winnt / perfmon / utils.h < prev    next >
Text File  |  1994-10-13  |  10KB  |  377 lines

  1. //==========================================================================//
  2. //                                  Constants                               //
  3. //==========================================================================//
  4.  
  5.  
  6. #define ThreeDPad          2
  7. #define NOCHANGE           -1
  8.  
  9. #define MENUCLOSING        (0xFFFF0000)
  10.  
  11. #define WM_DLGSETFOCUS     (WM_USER + 0x201)
  12. #define WM_DLGKILLFOCUS    (WM_USER + 0x202)
  13.  
  14.  
  15.  
  16. //==========================================================================//
  17. //                                   Macros                                 //
  18. //==========================================================================//
  19.  
  20.  
  21. #define PinInclusive(x, lo, hi)                       \
  22.    (max (lo, min (x, hi)))
  23.  
  24.  
  25. #define PinExclusive(x, lo, hi)                       \
  26.    (max ((lo) + 1, min (x, (hi) - 1)))
  27.  
  28.  
  29. #define BoolEqual(a, b)                               \
  30.    ((a == 0) == (b == 0))
  31.  
  32.  
  33. //=============================//
  34. // Window Instance Accessors   //
  35. //=============================//
  36.  
  37. #define WindowParent(hWnd)                            \
  38.    ((HWND) GetWindowLong (hWnd, GWL_HWNDPARENT))
  39.  
  40. #define WindowID(hWnd)                                \
  41.    GetWindowLong (hWnd, GWL_ID)
  42.  
  43. #define WindowInstance(hWnd)                          \
  44.    GetWindowWord (hWnd, GWW_HINSTANCE)
  45.  
  46. #define WindowStyle(hWnd)                             \
  47.    GetWindowLong (hWnd, GWL_STYLE)
  48.  
  49. #define WindowSetStyle(hWnd, lStyle)                  \
  50.    SetWindowLong (hWnd, GWL_STYLE, lStyle)
  51.  
  52. #define WindowExStyle(hWnd)                           \
  53.    GetWindowLong (hWnd, GWL_EXSTYLE)
  54.  
  55. #define WindowSetID(hWnd, wID)                        \
  56.    SetWindowLong (hWnd, GWL_ID, wID)
  57.  
  58.  
  59. // All modeless dialogs need to be dispatched separately in the WinMain
  60. // message loop, but only if the dialog exists.
  61.  
  62.  
  63. #define ModelessDispatch(hDlg, lpMsg)                 \
  64.    (hDlg ? IsDialogMessage (hDlg, lpMsg) : FALSE)
  65.  
  66.  
  67. #define strclr(szString)                              \
  68.    (szString [0] = TEXT('\0'))
  69.  
  70.  
  71. #define strempty(lpszString)                          \
  72.    (!(lpszString) || !(lpszString[0]))
  73.  
  74. #define pstrsame(lpsz1, lpsz2)                        \
  75.    ((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsame (lpsz1, lpsz2)))
  76.  
  77. #define pstrsamei(lpsz1, lpsz2)                        \
  78.    ((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsamei (lpsz1, lpsz2)))
  79.  
  80. #define StringLoad(wID, szText)                       \
  81.    (LoadString (hInstance, wID,                       \
  82.     szText, sizeof (szText) - sizeof(TCHAR)))
  83.  
  84.  
  85. #define WindowInvalidate(hWnd)                        \
  86.    (InvalidateRect (hWnd, NULL, TRUE))
  87.  
  88.  
  89. #define WindowShow(hWnd, bShow)                       \
  90.    (ShowWindow (hWnd, (bShow) ? SW_SHOW : SW_HIDE))
  91.  
  92.  
  93. #define MenuCheck(hMenu, wID, bCheck)                 \
  94.    (CheckMenuItem (hMenu, wID, (bCheck) ?             \
  95.      (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)))
  96.  
  97. #define DeleteFont(hFont)                             \
  98.    (DeleteObject (hFont))
  99.  
  100. #define DeleteBitmap(hBitmap)                         \
  101.    (DeleteObject (hBitmap))
  102.  
  103. #define DialogControl(hDlg, wControlID)               \
  104.    GetDlgItem (hDlg, wControlID)
  105.  
  106.  
  107. #define DialogSetInt(hDlg, wControlID, iValue)        \
  108.    (SetDlgItemInt (hDlg, wControlID, iValue, TRUE))
  109.  
  110.  
  111. #define DialogText(hDlg, wControlID, szText)          \
  112.    (GetDlgItemText (hDlg, wControlID, szText, sizeof (szText) / sizeof(TCHAR) - 1))
  113.  
  114. #define DialogInt(hDlg, wControlID)                   \
  115.    (GetDlgItemInt (hDlg, wControlID, NULL, TRUE))
  116.  
  117. #define strsame(szText1, szText2)                     \
  118.    (!lstrcmp (szText1, szText2))
  119.  
  120. #define strsamei(szText1, szText2)                     \
  121.    (!lstrcmpi (szText1, szText2))
  122.  
  123. #define strnsame(szText1, szText2, iLen)              \
  124.    (!lstrncmp (szText1, szText2, iLen))
  125.  
  126.  
  127. #define CreateScreenDC()                              \
  128.    CreateDC (TEXT("DISPLAY"), NULL, NULL, NULL)
  129.  
  130.  
  131.  
  132. #define RectContract(lpRect, xAmt, yAmt)              \
  133.    {                                                  \
  134.    (lpRect)->left += (xAmt) ;                         \
  135.    (lpRect)->top += (yAmt) ;                          \
  136.    (lpRect)->right -= (xAmt) ;                        \
  137.    (lpRect)->bottom -= (yAmt) ;                       \
  138.    }
  139.  
  140. #define IsBW(hDC)                                     \
  141.    (DeviceNumColors (hDC) <= 2)
  142.  
  143. #ifdef KEEP_PRINT
  144. #define IsPrinterDC(hDC)                              \
  145.    (GetDeviceCaps (hDC, TECHNOLOGY) != DT_RASDISPLAY)
  146. #else
  147. #define IsPrinterDC(hDC)                              \
  148.    (FALSE)
  149. #endif
  150.  
  151. #define VertInchPixels(hDC, iNumerator, iDenominator) \
  152.    ((iNumerator * GetDeviceCaps (hDC, LOGPIXELSY)) / iDenominator)
  153.  
  154.  
  155. #define HorzInchPixels(hDC, iNumerator, iDenominator) \
  156.    ((iNumerator * GetDeviceCaps (hDC, LOGPIXELSX)) / iDenominator)
  157.  
  158.  
  159. #define VertPointPixels(hDC, iPoints)                 \
  160.    ((iPoints * GetDeviceCaps (hDC, LOGPIXELSY)) / 72)
  161.  
  162.  
  163.  
  164. #define SimulateButtonPush(hDlg, wControlID)          \
  165.    (PostMessage (hDlg, WM_COMMAND,                    \
  166.                  (WPARAM) MAKELONG (wControlID, BN_CLICKED),  \
  167.                  (LPARAM) DialogControl (hDlg, wControlID)))
  168.  
  169.  
  170. // convert an unicode string to OEM string
  171. #define ConvertUnicodeStr(pOemStr, pUnicodeStr)   \
  172.    CharToOemBuff(pUnicodeStr, pOemStr, lstrlen(pUnicodeStr) + 1)
  173.  
  174. #define CallWinHelp(ContextID)   \
  175.    WinHelp(hWndMain, pszHelpFile, HELP_CONTEXT, ContextID) ;
  176.  
  177. //==========================================================================//
  178. //                             Exported Functions                           //
  179. //==========================================================================//
  180.  
  181. void Fill (HDC hDC,
  182.            DWORD rgbColor,
  183.            LPRECT lpRect) ;
  184.  
  185. void ScreenRectToClient (HWND hWnd,
  186.                          LPRECT lpRect) ;
  187.  
  188. int TextWidth (HDC hDC, LPTSTR lpszText) ;
  189.  
  190.  
  191. void ThreeDConcave (HDC hDC,
  192.                     int x1, int y1, 
  193.                     int x2, int y2,
  194.                     BOOL bFace) ;
  195.  
  196.  
  197. void ThreeDConvex (HDC hDC,
  198.                    int x1, int y1, 
  199.                    int x2, int y2) ;
  200.  
  201.  
  202. void ThreeDConcave1 (HDC hDC,
  203.                      int x1, int y1, 
  204.                      int x2, int y2) ;
  205.  
  206.  
  207. void ThreeDConvex1 (HDC hDC,
  208.                    int x1, int y1, 
  209.                    int x2, int y2) ;
  210.  
  211.  
  212. int _cdecl mike (TCHAR *szFormat, ...) ;
  213.  
  214. int _cdecl DlgErrorBox (HWND hDlg, UINT id, ...) ;
  215.  
  216. int _cdecl mike1 (TCHAR *szFormat, ...) ;
  217. int _cdecl mike2 (TCHAR *szFormat, ...) ;
  218.  
  219. int FontHeight (HDC hDC, 
  220.                  BOOL bIncludeLeading) ;
  221.  
  222.  
  223. int TextAvgWidth (HDC hDC,
  224.                   int iNumChars) ;
  225.  
  226.  
  227.  
  228. void WindowCenter (HWND hWnd) ;
  229.  
  230.  
  231.  
  232. BOOL DialogMove (HDLG hDlg,
  233.                  WORD wControlID,
  234.                  int xPos, 
  235.                  int yPos,
  236.                  int xWidth,
  237.                  int yHeight) ;
  238.  
  239.  
  240. int DialogWidth (HDLG hDlg, 
  241.                  WORD wControlID) ;
  242.  
  243.  
  244. int DialogXPos (HDLG hDlg,
  245.                 WORD wControlID) ;
  246.  
  247. int DialogYPos (HDLG hDlg,
  248.                 WORD wControlID) ;
  249.  
  250.  
  251. void DialogShow (HDLG hDlg,
  252.                  WORD wID,
  253.                  BOOL bShow) ;
  254.  
  255.  
  256. BOOL _cdecl DialogSetText (HDLG hDlg,
  257.                            WORD wControlID,
  258.                            WORD wStringID,
  259.                            ...) ;
  260. #if 0
  261. BOOL _cdecl DialogSetString (HDLG hDlg,
  262.                              WORD wControlID,
  263.                              LPTSTR lpszFormat,
  264.                              ...) ;
  265. #endif
  266. #define DialogSetString(hDlg, wControlID, lpszFormat)  \
  267.    SetDlgItemText (hDlg, wControlID, lpszFormat)
  268.  
  269. LPTSTR LongToCommaString (LONG lNumber,
  270.                          LPTSTR lpszText) ;
  271.  
  272.  
  273. BOOL MenuSetPopup (HWND hWnd,
  274.                    int iPosition,
  275.                    WORD  wControlID,
  276.                    LPTSTR lpszResourceID) ;
  277.  
  278. void DialogEnable (HDLG hDlg,
  279.                    WORD wID,
  280.                    BOOL bEnable) ;
  281.  
  282.  
  283. LPTSTR FileCombine (LPTSTR lpszFileSpec,
  284.                    LPTSTR lpszFileDirectory,
  285.                    LPTSTR lpszFileName) ;
  286.  
  287. LPTSTR ExtractFileName (LPTSTR pFileSpec) ;
  288.  
  289. int CBAddInt (HWND hWndCB,
  290.               int iValue) ;
  291.  
  292. FLOAT DialogFloat (HDLG hDlg, 
  293.                    WORD wControlID,
  294.                    BOOL *pbOK) ;
  295.  
  296.  
  297. LPTSTR StringAllocate (LPTSTR lpszText1) ;
  298.  
  299.  
  300. int DivRound (int iNumerator, int iDenominator) ;
  301.  
  302.  
  303.  
  304. BOOL MenuEnableItem (HMENU hMenu,
  305.                      WORD wID,
  306.                      BOOL bEnable) ;
  307.  
  308.  
  309.  
  310. void DrawBitmap (HDC hDC,
  311.                  HBITMAP hBitmap,
  312.                  int xPos,
  313.                  int yPos,
  314.                  LONG  lROPCode) ;
  315.  
  316. void BitmapDimemsion (HBITMAP hBitmap, int *pHeight, int *pWidth) ;
  317.  
  318.  
  319. void WindowResize (HWND hWnd,
  320.                    int xWidth,
  321.                    int yHeight) ;
  322.  
  323.  
  324. int WindowHeight (HWND hWnd) ;
  325.  
  326.  
  327.  
  328. void WindowSetTopmost (HWND hWnd, BOOL bTopmost) ;
  329.  
  330.  
  331. void WindowEnableTitle (HWND hWnd, BOOL bTitle) ;
  332.  
  333.  
  334. void Line (HDC hDC,
  335.            HPEN hPen,
  336.            int x1, int y1,
  337.            int x2, int y2) ;
  338.  
  339.  
  340.  
  341. #define HLine(hDC, hPen, x1, x2, y)          \
  342.    Line (hDC, hPen, x1, y, x2, y) ;
  343.  
  344.  
  345. #define VLine(hDC, hPen, x, y1, y2)          \
  346.    Line (hDC, hPen, x, y1, x, y2) ;
  347.  
  348.  
  349. int DialogHeight (HDLG hDlg, 
  350.                   WORD wControlID) ;
  351.  
  352.  
  353.  
  354. void DialogSetFloat (HDLG hDlg,
  355.                      WORD wControlID,
  356.                      FLOAT eValue) ;
  357.  
  358. void DialogSetInterval (HDLG hDlg,
  359.                         WORD wControlID,
  360.                         int  IntervalMSec ) ;
  361.  
  362. int MessageBoxResource (HWND hWndParent,
  363.                         WORD wTextID,
  364.                         WORD wTitleID,
  365.                         UINT uiStyle) ;
  366.  
  367. void WindowPlacementToString (PWINDOWPLACEMENT pWP, 
  368.                               LPTSTR lpszText) ;
  369.  
  370. void StringToWindowPlacement (LPTSTR lpszText,
  371.                               PWINDOWPLACEMENT pWP) ;
  372.  
  373. DWORD MenuIDToHelpID (DWORD MenuID) ;
  374.  
  375.  
  376. 
  377.