------------------------------- readme.txt -------------------------------
Wintab(tm) Programmer's Kit V. 1.26 for 16- and 32-bit Windows APIs.
This file contains programmer's kit installation instructions and
programming notes.
Please direct your programming questions and comments to:
LCS/Telegraphics
150 Rogers St.
Cambridge, MA 02142
voice: (617) 225-7970
fax: (617) 225-7969
email: wintab@pointing.com
web site: http://www.pointing.com
ftp site: ftp://ftp.pointing.com/pointing/Wintab/
Questions or problems regarding specific devices or device drivers
should be directed to the device manufacturer.
--------------------------------------------------------------------------
Legal/Disclaimer
--------------------------------------------------------------------------
The Wintab specification is intended to be an open standard. The
Wintab Programmer's Kit is an aid to understanding the Wintab
standard and implementing Wintab-compliant applications. As such,
the text and information contained herein may be freely used, copied,
or distributed without compensation or licensing restrictions.
The Wintab Programmer's Kit is copyright 1991-1998 by
LCS/Telegraphics.
LCS/Telegraphics does not assume any liability for damages resulting
from the use of the information contained herein.
--------------------------------------------------------------------------
Installation
--------------------------------------------------------------------------
* Getting the latest Wintab driver files
To get the latest Wintab driver files, including WINTAB.DLL and
WINTAB32.DLL, contact your device manufacturer. Follow the
manufacturer's installation directions.
* Installing the development files
The files are in several subdirectories on this disk. To copy the
whole tree to your hard disk, use XCOPY with the /S flag.
Example:
xcopy a:\*.* c:\wintab\ /s
* Installing the sample programs and testing your configuration
To test your Wintab driver configuration, build and run the
sample programs. (Previous versions of this kit included executable
of all the samples, but as Windows platforms proliferate, these have
been dropped to control the size of the kit.) The source code for
the programs is in stored in subdirectories by program name.
* Project settings for WTKIT
All projects require that the LIB and INCLUDE variables point to
the appropriate Windows SDK directories. Also, the WINTAB variable
must point to a tree containing the LIB and INCLUDE subtrees from the
Wintab Programmer's Kit.
For example, in MSVC 5.0, under the Tools menu, Options setting,
the WINTAB\INCLUDE directory must be listed as a directory for
Include files, and the WINTAB\LIB\I386 must be listed as a directory
for library files. Also, please see the note about linker warnings
during the debug build under the WNTAB32X.LIB section of this document.
* Compiler notes
Makefiles compatible with Microsoft NMAKE are in the win16
subdirectories. Project files for Microsoft Visual C versions 4.2
and 5.0 are in the win32 subdirectories.
MSVC 5.0 will be able to compile all the projects.
MSVC 4.2 will not be able to compile MFC_DEMO and WTHOOK
projects.
* Cleaning intermediate files before switching targets
Please cleanup intermediate files between builds to different targets.
If you have built the programs from source for one target environment,
and wish to switch to another target, first run the command NMAKE
CLEANALL in the source subdirectories.
--------------------------------------------------------------------------
Using WINTABX.LIB and WNTAB32X.LIB
--------------------------------------------------------------------------
Two types of import libraries are provided. WINTAB.LIB and
WINTAB32.LIB are regular import libraries created with the SDK
utilities. Any module linked with WINTAB.LIB or WINTAB32.LIB will not
load unless Wintab API support is present. WINTABX.LIB and
WNTAB32X.LIB are more flexible. They link each function as it is
invoked, using the Windows functions LoadLibrary and GetProcAddress.
If the link fails, the user will see a message box saying "cannot
find WINTAB.DLL", and the function will return 0 (the failure code
for all WINTAB functions) to its caller. Thus, WINTABX and WNTAB32X
provide the flexibility of run-time linking, while reducing the code
burden.
WINTABX and WNTAB32X do add one new requirement, though. Since Wintab
was explicitly linked using LoadLibrary, it must be explicitly freed
using FreeLibrary when shutting down. WINTABX and WNTAB32X provide a
new function, _UnlinkWintab, that calls FreeLibrary and resets the
automatic function-linking mechanism. The C declaration is included
in the header file WINTABX.H.
If you want to avoid the "cannot find WINTAB.DLL" message when Wintab
is not present, you can use the Windows function SetErrorMode() to
suppress the error box while issuing a Wintab function call. For
example:
BOOL WintabHere(void)
{
/*-----
Call this function before any Wintab API
function when using WINTABX.LIB.
This function returns TRUE if Wintab is
present and functioning; FALSE otherwise.
No warning message will be displayed if
the WINTAB.DLL file is not found.
-----*/
WORD errmode;
BOOL fResult;
/* suppress error box */
errmode = SetErrorMode(SEM_NOOPENFILEERRORBOX
#ifdef WIN32
| SEM_FAILCRITICALERRORS
#endif
);
/* try wintab */
fResult = WTInfo(0,0,NULL);
/* restore previous error mode */
SetErrorMode(errmode);
/* return wintab result */
return fResult;
}
*Note on MSVC 5.0 projects using WNTAB32X.LIB
Note that the linker warning LNK4098 (to recompile with the
/Nodefaultlib:LIBC option) during the compilation of Debug projects
will not affect the operation of the resulting executable. This bug
will be fixed in the next version of the Wintab Programmer's Kit.
For example, the WTHOOK project will give this linker warning during
debug compilation, but the resulting executable is functional.
--------------------------------------------------------------------------
Determining whether 1.1 features are supported
--------------------------------------------------------------------------
To determine which version of the Wintab specification your device
supports, use the result of the following function call:
WTINFO(WTI_INTERFACE,IFC_SPECVERSION)
Please see MGRTEST for an example.
The specification version number (either 1.0 or 1.1) will be
returned. If you need 1.1 features for your application, and you want to
make sure they are supported in a tablet, please email us at
wintab@pointing.com
--------------------------------------------------------------------------
Using Non-Microsoft C Compilers
--------------------------------------------------------------------------
WINTAB.LIB and WINTAB32.LIB are implicit import libraries created and
tested with Microsoft C tools. Some linkers from other vendors may
not work with these versions of the libraries. This Programmer's Kit
now includes the corresponding WINTAB.DEF and WINTAB32.DEF files used
to create WINTAB.LIB and WINTAB32.LIB. Use the .DEF files with your
vendor's IMPLIB or librarian tools to create compatible import
libraries.
WINTABX.LIB and WNTAB32X.LIB have been tested with Microsoft C, but
not with other C or C++ compilers, or compilers for other languages.
Source code for these libraries are in the directories WINTABX and
WNTAB32X.
--------------------------------------------------------------------------
RULE and RULE2
--------------------------------------------------------------------------
Rule and Rule2 are versions of the same program. Rule demonstrates
the limitations of a polled input approach in Windows; Rule2
demonstrates a more robust, message-based approach, and adds a few
other enhancements.
To see what's bad about Rule, run it, click on it but don't start
measuring. Now turn off your Wintab device. Windows is now hung.
If you try the same experiment with Rule2, you can still use the
keyboard.
--------------------------------------------------------------------------
MGRTEST as a Debugging Aid
--------------------------------------------------------------------------
Besides demonstrating the WTMgr* APIs, MGRTEST is useful in itself.
You can use MGRTEST to see what contexts are active, their modes,
status, and active areas, as well as the current overlap order. It
can be very useful in understanding how various Wintab-aware programs
use contexts.
--------------------------------------------------------------------------
Keeping in Touch
--------------------------------------------------------------------------
Here are three ways to show your support for the Wintab standard, and
allow us to let people know that your product has Wintab support.
1. When you complete Wintab support in your product, let us know. Be
sure to include the product name, a description, and contact
information for your company.
2. If possible, send us an evaluation copy of your product, or the
portions of it that contain Wintab support. LCS/Telegraphics is
building a library of Wintab-compliant applications for ongoing
compatibility testing.
3. Join the Committee for Advanced Pointing Standards (CAPS). CAPS
formed in August of 1993 to promote and support future development of
the specification. The more than 40 corporate members of CAPS
include most major pointing device manufacturers, and many leading
CAD and graphics arts software developers. To join CAPS, contact:
LCS/Telegraphics
150 Rogers St.
Cambridge, MA 02142
voice: (617) 225-7970
fax: (617) 225-7969
email: caps@pointing.com
web site: http://www.pointing.com