|
|
//==========================================================================//
// Constants //
//==========================================================================//
#define ThreeDPad 2
#define NOCHANGE -1
#define MENUCLOSING (0xFFFF0000)
#define WM_DLGSETFOCUS (WM_USER + 0x201)
#define WM_DLGKILLFOCUS (WM_USER + 0x202)
//==========================================================================//
// Macros //
//==========================================================================//
#define PinInclusive(x, lo, hi) \
(max (lo, min (x, hi)))
#define PinExclusive(x, lo, hi) \
(max ((lo) + 1, min (x, (hi) - 1)))
#define BoolEqual(a, b) \
((a == 0) == (b == 0))
//=============================//
// Window Instance Accessors //
//=============================//
#define WindowParent(hWnd) \
((HWND) GetWindowLongPtr (hWnd, GWLP_HWNDPARENT))
#define WindowID(hWnd) \
GetWindowLong (hWnd, GWL_ID)
#define WindowInstance(hWnd) \
GetWindowWord (hWnd, GWW_HINSTANCE)
#define WindowStyle(hWnd) \
GetWindowLong (hWnd, GWL_STYLE)
#define WindowSetStyle(hWnd, lStyle) \
SetWindowLong (hWnd, GWL_STYLE, lStyle)
#define WindowExStyle(hWnd) \
GetWindowLong (hWnd, GWL_EXSTYLE)
#define WindowSetID(hWnd, wID) \
SetWindowLong (hWnd, GWL_ID, wID)
// All modeless dialogs need to be dispatched separately in the WinMain
// message loop, but only if the dialog exists.
#define ModelessDispatch(hDlg, lpMsg) \
(hDlg ? IsDialogMessage (hDlg, lpMsg) : FALSE)
#define strclr(szString) \
(szString [0] = TEXT('\0'))
#define strempty(lpszString) \
(!(lpszString) || !(lpszString[0]))
#define pstrsame(lpsz1, lpsz2) \
((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsame (lpsz1, lpsz2)))
#define pstrsamei(lpsz1, lpsz2) \
((!lpsz1 && !lpsz2) || (lpsz1 && lpsz2 && strsamei (lpsz1, lpsz2)))
#define StringLoad(wID, szText) \
(LoadString (hInstance, wID, \ szText, (sizeof (szText) / sizeof(TCHAR)) - 1))
#define WindowInvalidate(hWnd) \
(InvalidateRect (hWnd, NULL, TRUE))
#define WindowShow(hWnd, bShow) \
(ShowWindow (hWnd, (bShow) ? SW_SHOW : SW_HIDE))
#define MenuCheck(hMenu, wID, bCheck) \
(CheckMenuItem (hMenu, wID, (bCheck) ? \ (MF_BYCOMMAND | MF_CHECKED) : (MF_BYCOMMAND | MF_UNCHECKED)))
#define DeleteFont(hFont) \
(DeleteObject (hFont))
#define DeleteBitmap(hBitmap) \
(DeleteObject (hBitmap))
#define DialogControl(hDlg, wControlID) \
GetDlgItem (hDlg, wControlID)
#define DialogSetInt(hDlg, wControlID, iValue) \
(SetDlgItemInt (hDlg, wControlID, iValue, TRUE))
#define DialogText(hDlg, wControlID, szText) \
(GetDlgItemText (hDlg, wControlID, szText, sizeof (szText) / sizeof(TCHAR) - 1))
#define DialogInt(hDlg, wControlID) \
(GetDlgItemInt (hDlg, wControlID, NULL, TRUE))
#define strsame(szText1, szText2) \
(!lstrcmp (szText1, szText2))
#define strsamei(szText1, szText2) \
(!lstrcmpi (szText1, szText2))
#define strnsame(szText1, szText2, iLen) \
(!lstrncmp (szText1, szText2, iLen))
#define CreateScreenDC() \
CreateDC (TEXT("DISPLAY"), NULL, NULL, NULL)
#define RectContract(lpRect, xAmt, yAmt) \
{ \ (lpRect)->left += (xAmt) ; \ (lpRect)->top += (yAmt) ; \ (lpRect)->right -= (xAmt) ; \ (lpRect)->bottom -= (yAmt) ; \ }
#define IsBW(hDC) \
(DeviceNumColors (hDC) <= 2)
#ifdef KEEP_PRINT
#define IsPrinterDC(hDC) \
(GetDeviceCaps (hDC, TECHNOLOGY) != DT_RASDISPLAY) #else
#define IsPrinterDC(hDC) \
(FALSE) #endif
#define VertInchPixels(hDC, iNumerator, iDenominator) \
((iNumerator * GetDeviceCaps (hDC, LOGPIXELSY)) / iDenominator)
#define HorzInchPixels(hDC, iNumerator, iDenominator) \
((iNumerator * GetDeviceCaps (hDC, LOGPIXELSX)) / iDenominator)
#define VertPointPixels(hDC, iPoints) \
((iPoints * GetDeviceCaps (hDC, LOGPIXELSY)) / 72)
#define SimulateButtonPush(hDlg, wControlID) \
(PostMessage (hDlg, WM_COMMAND, \ (WPARAM) MAKELONG (wControlID, BN_CLICKED), \ (LPARAM) DialogControl (hDlg, wControlID)))
// convert an unicode string to OEM string
#define ConvertUnicodeStr(pOemStr, pUnicodeStr) \
CharToOemBuff(pUnicodeStr, pOemStr, lstrlen(pUnicodeStr) + 1)
#define CallWinHelp(ContextID, WND) \
if (*pszHelpFile != 0) { \ WinHelp(hWndMain, pszHelpFile, HELP_CONTEXT, ContextID); \ } else { \ DlgErrorBox (WND, ERR_HELP_NOT_AVAILABLE); \ }
//==========================================================================//
// Exported Functions //
//==========================================================================//
void Fill (HDC hDC, DWORD rgbColor, LPRECT lpRect) ;
void ScreenRectToClient (HWND hWnd, LPRECT lpRect) ;
int TextWidth (HDC hDC, LPTSTR lpszText) ;
void ThreeDConcave (HDC hDC, int x1, int y1, int x2, int y2, BOOL bFace) ;
void ThreeDConvex (HDC hDC, int x1, int y1, int x2, int y2) ;
void ThreeDConcave1 (HDC hDC, int x1, int y1, int x2, int y2) ;
void ThreeDConvex1 (HDC hDC, int x1, int y1, int x2, int y2) ;
int _cdecl mike (TCHAR *szFormat, ...) ;
int _cdecl DlgErrorBox (HWND hDlg, UINT id, ...) ;
int _cdecl mike1 (TCHAR *szFormat, ...) ; int _cdecl mike2 (TCHAR *szFormat, ...) ;
int FontHeight (HDC hDC, BOOL bIncludeLeading) ;
int TextAvgWidth (HDC hDC, int iNumChars) ;
void WindowCenter (HWND hWnd) ;
BOOL DialogMove (HDLG hDlg, WORD wControlID, int xPos, int yPos, int xWidth, int yHeight) ;
int DialogWidth (HDLG hDlg, WORD wControlID) ;
int DialogXPos (HDLG hDlg, WORD wControlID) ;
int DialogYPos (HDLG hDlg, WORD wControlID) ;
void DialogShow (HDLG hDlg, WORD wID, BOOL bShow) ;
BOOL _cdecl DialogSetText (HDLG hDlg, WORD wControlID, WORD wStringID, ...) ; #if 0
BOOL _cdecl DialogSetString (HDLG hDlg, WORD wControlID, LPTSTR lpszFormat, ...) ; #endif
#define DialogSetString(hDlg, wControlID, lpszFormat) \
SetDlgItemText (hDlg, wControlID, lpszFormat)
LPTSTR LongToCommaString (LONG lNumber, LPTSTR lpszText) ;
BOOL MenuSetPopup (HWND hWnd, int iPosition, WORD wControlID, LPTSTR lpszResourceID) ;
void DialogEnable (HDLG hDlg, WORD wID, BOOL bEnable) ;
LPTSTR FileCombine (LPTSTR lpszFileSpec, LPTSTR lpszFileDirectory, LPTSTR lpszFileName) ;
LPTSTR ExtractFileName (LPTSTR pFileSpec) ;
int CBAddInt (HWND hWndCB, int iValue) ;
FLOAT DialogFloat (HDLG hDlg, WORD wControlID, BOOL *pbOK) ;
LPTSTR StringAllocate (LPTSTR lpszText1) ;
int DivRound (int iNumerator, int iDenominator) ;
BOOL MenuEnableItem (HMENU hMenu, WORD wID, BOOL bEnable) ;
void DrawBitmap (HDC hDC, HBITMAP hBitmap, int xPos, int yPos, LONG lROPCode) ;
void BitmapDimemsion (HBITMAP hBitmap, int *pHeight, int *pWidth) ;
void WindowResize (HWND hWnd, int xWidth, int yHeight) ;
int WindowHeight (HWND hWnd) ;
void WindowSetTopmost (HWND hWnd, BOOL bTopmost) ;
void WindowEnableTitle (HWND hWnd, BOOL bTitle) ;
void Line (HDC hDC, HPEN hPen, int x1, int y1, int x2, int y2) ;
#define HLine(hDC, hPen, x1, x2, y) \
Line (hDC, hPen, x1, y, x2, y) ;
#define VLine(hDC, hPen, x, y1, y2) \
Line (hDC, hPen, x, y1, x, y2) ;
int DialogHeight (HDLG hDlg, WORD wControlID) ;
void DialogSetFloat (HDLG hDlg, WORD wControlID, FLOAT eValue) ;
void DialogSetInterval (HDLG hDlg, WORD wControlID, int IntervalMSec ) ;
int MessageBoxResource (HWND hWndParent, WORD wTextID, WORD wTitleID, UINT uiStyle) ;
void WindowPlacementToString (PWINDOWPLACEMENT pWP, LPTSTR lpszText) ;
void StringToWindowPlacement (LPTSTR lpszText, PWINDOWPLACEMENT pWP) ;
DWORD MenuIDToHelpID (DWORD MenuID) ;
|