/* -------------------------------- pktdef.h -------------------------------- */
/* Combined 16 & 32-bit version. */
/*------------------------------------------------------------------------------
The text and information contained in this file may be freely used ,
copied , or distributed without compensation or licensing restrictions .
This file is copyright 1991 - 1998 by LCS / Telegraphics .
------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------
How to use pktdef . h :
1 . Include wintab . h
2 . if using just one packet format :
a . Define PACKETDATA and PACKETMODE as or ' ed combinations of WTPKT bits
( use the PK_ * identifiers ) .
b . Include pktdef . h .
c . The generated structure typedef will be called PACKET . Use PACKETDATA
and PACKETMODE to fill in the LOGCONTEXT structure .
3 . If using multiple packet formats , for each one :
a . Define PACKETNAME . Its text value will be a prefix for this packet ' s
parameters and names .
b . Define < PACKETNAME > PACKETDATA and < PACKETNAME > PACKETMODE similar to
2 . a . above .
c . Include pktdef . h .
d . The generated structure typedef will be called
< PACKETNAME > PACKET . Compare with 2 . c . above and example # 2 below .
4 . If using extension packet data , do the following additional steps
for each extension :
a . Before including pktdef . h , define < PACKETNAME > PACKET < EXTENSION >
as either PKEXT_ABSOLUTE or PKEXT_RELATIVE .
b . The generated structure typedef will contain a field for the
extension data .
c . Scan the WTI_EXTENSION categories to find the extension ' s
packet mask bit .
d . OR the packet mask bit with < PACKETNAME > PACKETDATA and use the
result in the lcPktData field of the LOGCONTEXT structure .
e . If < PACKETNAME > PACKET < EXTENSION > was PKEXT_RELATIVE , OR the
packet mask bit with < PACKETNAME > PACKETMODE and use the result
in the lcPktMode field of the LOGCONTEXT structure .
Example # 1 . - - single packet format
# include < wintab . h >
# define PACKETDATA PK_X | PK_Y | PK_BUTTONS / @ x , y , buttons @ /
# define PACKETMODE PK_BUTTONS / @ buttons relative mode @ /
# include < pktdef . h >
. . .
lc . lcPktData = PACKETDATA ;
lc . lcPktMode = PACKETMODE ;
Example # 2 . - - multiple formats
# include < wintab . h >
# define PACKETNAME MOE
# define MOEPACKETDATA PK_X | PK_Y | PK_BUTTONS / @ x , y , buttons @ /
# define MOEPACKETMODE PK_BUTTONS / @ buttons relative mode @ /
# include < pktdef . h >
# define PACKETNAME LARRY
# define LARRYPACKETDATA PK_Y | PK_Z | PK_BUTTONS / @ y , z , buttons @ /
# define LARRYPACKETMODE PK_BUTTONS / @ buttons relative mode @ /
# include < pktdef . h >
# define PACKETNAME CURLY
# define CURLYPACKETDATA PK_X | PK_Z | PK_BUTTONS / @ x , z , buttons @ /
# define CURLYPACKETMODE PK_BUTTONS / @ buttons relative mode @ /
# include < pktdef . h >
. . .
lcMOE . lcPktData = MOEPACKETDATA ;
lcMOE . lcPktMode = MOEPACKETMODE ;
. . .
lcLARRY . lcPktData = LARRYPACKETDATA ;
lcLARRY . lcPktMode = LARRYPACKETMODE ;
. . .
lcCURLY . lcPktData = CURLYPACKETDATA ;
lcCURLY . lcPktMode = CURLYPACKETMODE ;
Example # 3 . - - extension packet data " XFOO " .
# include < wintab . h >
# define PACKETDATA PK_X | PK_Y | PK_BUTTONS / @ x , y , buttons @ /
# define PACKETMODE PK_BUTTONS / @ buttons relative mode @ /
# define PACKETXFOO PKEXT_ABSOLUTE / @ XFOO absolute mode @ /
# include < pktdef . h >
. . .
UINT ScanExts ( UINT wTag )
{
UINT i ;
UINT wScanTag ;
/ @ scan for wTag ' s info category . @ /
for ( i = 0 ; WTInfo ( WTI_EXTENSIONS + i , EXT_TAG , & wScanTag ) ; i + + ) {
if ( wTag = = wScanTag ) {
/ @ return category offset from WTI_EXTENSIONS . @ /
return i ;
}
}
/ @ return error code . @ /
return 0 xFFFF ;
}
. . .
lc . lcPktData = PACKETDATA ;
lc . lcPktMode = PACKETMODE ;
# ifdef PACKETXFOO
categoryXFOO = ScanExts ( WTX_XFOO ) ;
WTInfo ( WTI_EXTENSIONS + categoryXFOO , EXT_MASK , & maskXFOO ) ;
lc . lcPktData | = maskXFOO ;
# if PACKETXFOO = = PKEXT_RELATIVE
lc . lcPktMode | = maskXFOO ;
# endif
# endif
WTOpen ( hWnd , & lc , TRUE ) ;
------------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifndef PACKETNAME
/* if no packet name prefix */
#define __PFX(x) x
#define __IFX(x,y) x ## y
#else
/* add prefixes and infixes to packet format names */
#define __PFX(x) __PFX2(PACKETNAME,x)
#define __PFX2(p,x) __PFX3(p,x)
#define __PFX3(p,x) p ## x
#define __IFX(x,y) __IFX2(x,PACKETNAME,y)
#define __IFX2(x,i,y) __IFX3(x,i,y)
#define __IFX3(x,i,y) x ## i ## y
#endif
#define __SFX2(x,s) __SFX3(x,s)
#define __SFX3(x,s) x ## s
#define __TAG __IFX(tag,PACKET)
#define __TYPES __PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), \
FAR * __IFX(LP,PACKET)
#define __DATA (__PFX(PACKETDATA))
#define __MODE (__PFX(PACKETMODE))
#define __EXT(x) __SFX2(__PFX(PACKET),x)
typedef struct __TAG {
#if (__DATA & PK_CONTEXT)
HCTX pkContext;
#endif
#if (__DATA & PK_STATUS)
UINT pkStatus;
#endif
#if (__DATA & PK_TIME)
DWORD pkTime;
#endif
#if (__DATA & PK_CHANGED)
WTPKT pkChanged;
#endif
#if (__DATA & PK_SERIAL_NUMBER)
UINT pkSerialNumber;
#endif
#if (__DATA & PK_CURSOR)
UINT pkCursor;
#endif
#if (__DATA & PK_BUTTONS)
DWORD pkButtons;
#endif
#if (__DATA & PK_X)
LONG pkX;
#endif
#if (__DATA & PK_Y)
LONG pkY;
#endif
#if (__DATA & PK_Z)
LONG pkZ;
#endif
#if (__DATA & PK_NORMAL_PRESSURE)
#if (__MODE & PK_NORMAL_PRESSURE)
/* relative */
int pkNormalPressure;
#else
/* absolute */
UINT pkNormalPressure;
#endif
#endif
#if (__DATA & PK_TANGENT_PRESSURE)
#if (__MODE & PK_TANGENT_PRESSURE)
/* relative */
int pkTangentPressure;
#else
/* absolute */
UINT pkTangentPressure;
#endif
#endif
#if (__DATA & PK_ORIENTATION)
ORIENTATION pkOrientation;
#endif
#if (__DATA & PK_ROTATION)
ROTATION pkRotation; /* 1.1 */
#endif
#ifndef NOWTEXTENSIONS
/* extensions begin here. */
#if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE)
UINT pkFKeys;
#endif
#if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE)
TILT pkTilt;
#endif
#endif
} __TYPES ;
#undef PACKETNAME
#undef __TAG
#undef __TAG2
#undef __TYPES
#undef __TYPES2
#undef __DATA
#undef __MODE
#undef __PFX
#undef __PFX2
#undef __PFX3
#undef __IFX
#undef __IFX2
#undef __IFX3
#undef __SFX2
#undef __SFX3
#ifdef __cplusplus
}
#endif /* __cplusplus */
Messung V0.5 in Prozent C=95 H=100 G=97
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-07-03)
¤
*© Formatika GbR, Deutschland