/**INC+**********************************************************************/
/*                                                                          */
/* ddcgctyp.h                                                               */
/*                                                                          */
/* DC-Groupware complex types - Windows 3.1 specific header.                */
/*                                                                          */
/* Copyright(c) Microsoft 1997                                              */
/*                                                                          */
/****************************************************************************/
/* Changes:                                                                 */
/*                                                                          */
/* $Log:   Y:/logs/h/dcl/ddcgctyp.h_v  $                                                                    */
//
//    Rev 1.6   15 Sep 1997 18:28:26   AK
// SFR1416: Move SD_BOTH definition
//
//    Rev 1.5   14 Aug 1997 14:03:00   KH
// SFR1022: Define (Ext)TextOutX macros
//
//    Rev 1.4   24 Jul 1997 16:54:14   KH
// SFR1033: Add GetLastError
//
//    Rev 1.3   08 Jul 1997 08:46:52   KH
// SFR1022: Add message parameter extraction macros
//
//    Rev 1.2   25 Jun 1997 14:38:12   KH
// Win16Port: 16-bit complex types
//
//    Rev 1.1   19 Jun 1997 15:09:56   ENH
// Win16Port: 16 bit specifics
/*                                                                          */
/**INC-**********************************************************************/
#ifndef _H_DDCGCTYP
#define _H_DDCGCTYP

/****************************************************************************/
/*                                                                          */
/* INCLUDES                                                                 */
/*                                                                          */
/****************************************************************************/
#include <toolhelp.h>
#include <string.h>

/****************************************************************************/
/*                                                                          */
/* CONSTANTS                                                                */
/*                                                                          */
/****************************************************************************/
/****************************************************************************/
/* Message box type flag unsupported on Win 3.x                             */
/****************************************************************************/
#define MB_SETFOREGROUND 0

/****************************************************************************/
/* Registry stuff not defined in standard 16-bit headers.                   */
/****************************************************************************/
/* from winreg.h */
#define HKEY_CURRENT_USER           (( HKEY ) 0x80000001 )
#define HKEY_LOCAL_MACHINE          (( HKEY ) 0x80000002 )
/* from ntddk.h */
#define REG_SZ              ( 1 ) /* Unicode nul terminated string          */
#define REG_EXPAND_SZ       ( 2 ) /* Unicode nul terminated string          */
                                  /* (with environment variable references) */
#define REG_BINARY          ( 3 ) /* Free form binary                       */
#define REG_DWORD           ( 4 ) /* 32-bit number                          */

/****************************************************************************/
/* 32-bit scroll bar constants.                                             */
/****************************************************************************/
#define SIF_RANGE           0x0001
#define SIF_PAGE            0x0002
#define SIF_POS             0x0004
#define SIF_DISABLENOSCROLL 0x0008
#define SIF_TRACKPOS        0x0010
#define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)

/****************************************************************************/
/*                                                                          */
/* TYPES                                                                    */
/*                                                                          */
/****************************************************************************/
typedef MINMAXINFO              DCPTR  LPMINMAXINFO;
typedef struct tagDCLARGEINTEGER
{
    DCUINT32 LowPart;
    DCINT32  HighPart;
} DCLARGEINTEGER;

/****************************************************************************/
/* Scroll bar info used by 32-bit API.                                      */
/****************************************************************************/
typedef struct tagSCROLLINFO
{
    DCUINT cbSize;
    DCUINT fMask;
    DCINT  nMin;
    DCINT  nMax;
    DCUINT nPage;
    DCINT  nPos;
    DCINT  nTrackPos;
}   SCROLLINFO, DCPTR LPSCROLLINFO;

/****************************************************************************/
/* Types which should not feature in a 16-bit build. Define to nonsense so  */
/* any 16-bit useage is caught at compile time.                             */
/****************************************************************************/
#define DCSURFACEID             *** ERROR ***
#define PDCSURFACEID            *** ERROR ***

/****************************************************************************/
/* Types used by DC-Groupware tracing                                       */
/****************************************************************************/
typedef DWORD HKEY;
typedef struct tagDCFILETIME
{
    DCUINT32 dwLowDateTime;
    DCUINT32 dwHighDateTime;
} DCFILETIME;

/****************************************************************************/
/*                                                                          */
/* MACROS                                                                   */
/*                                                                          */
/****************************************************************************/

/****************************************************************************/
/* Unicode support for 16-bit client                                        */
/****************************************************************************/
#define ExtTextOutW(a, b, c, d, e, f, g, h) \
    (ExtTextOut(a, b, c, d, e, f, g, h))
#define ExtTextOutA(a, b, c, d, e, f, g, h) \
    (ExtTextOut(a, b, c, d, e, f, g, h))
#define TextOutW(a, b, c, d, e) (TextOut(a, b, c, d, e))
#define TextOutA(a, b, c, d, e) (TextOut(a, b, c, d, e))

/****************************************************************************/
/* String manipulation                                                      */
/****************************************************************************/
#define DC_CHARNEXT(pCurrentChar) (AnsiNext(pCurrentChar))
#define DC_CHARPREV(pStringStart, pCurrentChar) \
                                       (AnsiPrev(pStringStart, pCurrentChar))
#define DC_CHARLOWER(pString) (AnsiLower(pString))

/****************************************************************************/
/* Memory functions                                                         */
/****************************************************************************/
#define ZeroMemory(A,L) (DC_MEMSET(A,0,L))

/****************************************************************************/
/* Construct a 16-bit value fom two 8-bit values                            */
/****************************************************************************/
#define MAKEWORD(a, b)      ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))

/****************************************************************************/
/* No GetLastError support on win31                                         */
/****************************************************************************/
#define GetLastError() (0)

/****************************************************************************/
/* Message parameter extraction macros.                                     */
/****************************************************************************/
/* WM_COMMAND                                                               */
/*                                                                          */
/*               16-bit                         32-bit                      */
/* wParam     command identifier          notification code (HI),           */
/*                                        command identifier (LO)           */
/* lParam     control hwnd (HI),          control hwnd                      */
/*            notification code (LO)                                        */
/****************************************************************************/
#define DC_GET_WM_COMMAND_ID(wParam) (wParam)
#define DC_GET_WM_COMMAND_NOTIFY_CODE(wParam, lParam) (HIWORD(lParam))
#define DC_GET_WM_COMMAND_HWND(lParam) ((HWND)LOWORD(lParam))

/****************************************************************************/
/* WM_ACTIVATE                                                              */
/*                                                                          */
/*               16-bit                         32-bit                      */
/* wParam     activation flag             minimized flag (HI),              */
/*                                        activation flag (LO)              */
/* lParam     minimized flag (HI),        hwnd                              */
/*            hwnd (LO)                                                     */
/****************************************************************************/
#define DC_GET_WM_ACTIVATE_ACTIVATION(wParam) (wParam)
#define DC_GET_WM_ACTIVATE_MINIMIZED(wParam, lParam) (HIWORD(lParam))
#define DC_GET_WM_ACTIVATE_HWND(lParam) ((HWND)LOWORD(lParam))

/****************************************************************************/
/* WM_HSCROLL and WM_VSCROLL                                                */
/*                                                                          */
/*               16-bit                         32-bit                      */
/* wParam     scroll code                 position (HI),                    */
/*                                        scroll code (LO)                  */
/* lParam     hwnd (HI),                  hwnd                              */
/*            position (LO)                                                 */
/****************************************************************************/
#define DC_GET_WM_SCROLL_CODE(wParam) (wParam)
#define DC_GET_WM_SCROLL_POSITION(wParam, lParam) (LOWORD(lParam))
#define DC_GET_WM_SCROLL_HWND(lParam) ((HWND)LOWORD(lParam))

/****************************************************************************/
/*                                                                          */
/* FUNCTION PROTOTYPES                                                      */
/*                                                                          */
/****************************************************************************/
extern DCVOID FAR PASCAL DOS3Call(DCVOID);

#endif /* _H_DDCGCTYP */