                        PowerBASIC Win32API File Set

                  Copyright (c) 2002-2005 PowerBASIC, Inc.
                            All Rights Reserved.




                                  Overview
                                  ========

The Win32API file set is a translation of the Microsoft Windows SDK headers.
You may use and distribute these files freely, provided that you agree that
PowerBASIC and Microsoft have no warranty, obligation or liability for their
contents.

The Win32API files provide definitions that let you access the Windows API, or
Applications Programming Interfaces. The files contain types, declares,
equates, macros and/or subs and functions that help your programs to interface
with the vast collection of DLL calls provided by Windows.

The DLL functionality provided by Windows is not documented here. You can find
an older version of the basic Windows API reference as a help file, available
from our web site. The Win32.zip archive is about 8 Mb, here:

   http://www.powerbasic.com/files/pub/mstools/

More recent documentation is available from Microsoft in the form of the MSDN
(MicroSoft Developer Network) CDs. You can also find a list of recommended
books on our web site, in the Frequently Asked Questions forum, here:

   http://www.powerbasic.com/support/forums/Ultimate.cgi

Example code that makes use of the Windows APIs may be found in your Samples
folder, as well as on the PowerBASIC web site in the Source Code Forum and in
the Download area.

As large as it is, the Win32API file set encompasses only a fraction of the
total functionality exported by Windows. If you find that you need access to
Windows APIs that have not been translated to the Win32API set, let us know,
and we will add them as time allows. Please send email to:

   win32api@powerbasic.com

The Win32API file set is updated regularly with corrections and new
translations. You can download the latest version, here:

   http://www.powerbasic.com/files/pub/pbwin/




                                   Remarks
                                   =======

There are many equates that you can set to avoid including specific subsets
of the Win32API functionality in your programs. This can speed compilation and
sometimes reduce program size, if you don't need all the definitions provided
by a specific include file. See the remarks in the include file(s) in question
for details. This is particularly useful if you use CommCtrl.inc.

If you are using the PowerBASIC Console Compiler, GDI definitions are normally
ignored, by default. The GDI, or Graphics Device Interface functionality, is
not generally employed by console programs. However, you can gain access to
these definitions if your PB/CC program needs them, by setting the following
equate before you #include any of the Win32API files:

   %CCWIN = 1   ' set this equate to anything to enable GDI for PB/CC

Previous versions of the Win32API files have ignored SDK macros or implemented
them as FUNCTIONs or SUBs. We are taking advantage of the advanced macro
support provided by PB/CC 3.0 and PB/Win 7.0 to provide more effective
translations of the SDK. To avoid causing problems with existing code (and
older compilers), this macro functionality will only be enabled if you set
%USEMACROS to some value before you #INCLUDE any Win32API files.

Note that turning on %USEMACROS will disable existing Win32API functions and
subs in favor of the macro versions of same. Exceptions may be made in case of
longer routines or routines taking string parameters, which do not translate
well to macros.

   %USEMACROS = 1   ' set this equate to anything to enable macro definitions

If you are compiling with PB/CC 3 or PB/Win 7, the Win32API.inc file will
define %BYVAL_UDTS_OK. This value is used to determine whether it's safe to
pass a value of user-defined type BYVAL. If so, Windows declares that require
this will be declared accordingly, rather than employing work-arounds.

If you are compiling with PB/CC 2.00 or PB/DLL 6.00, the Win32API.inc file will
define %NOBYVALPTR. This value is used to determine whether an explicit BYVAL
should be used with pointer parameters, and whether optional parameters are put
in [brackets] or take the OPTIONAL keyword.

You can find more useful information on equates and other subjects in the
remarks in the relevant Win32API files.




                                  File List
                                  =========

 History.txt    history of Win32API file changes, additions, etc.

 ReadMe.txt     overview of Win32API files.

-------------

 Resource.h     resource definitions (used by .RC resource files)

-------------

 AccCtrl.inc    Access Control (ACL) definitions for Windows 2000 and XP.

 ACLAPI.inc     Access Control (ACL) definitions for NT4, Windows 2000 and XP.

 ComDlg32.inc   Common Dialog definitions.
                Choose Color, Find/Replace, Printer, Open File, Save File, etc.

 CommCtrl.inc   Common Control definitions. See also InitCtrl.inc.
                Calendar, Combo Box, List View, Tree View, Tool Bar, etc.

 CPL.inc        Control Panel extension DLL support.

 DDT.inc        General Windows equates with no API declares.
                This is a reduced Win32API.inc for use with DDT-style apps.

 DigitalV.inc   MCI Digital Video Command Set support.

 HtmlHelp.inc   HTML Help support.

 IME.inc        Input Method Editor (IME) support. An IME allows computer users
                to enter complex characters and symbols, such as Japanese Kanji
                characters, from a standard keyboard.

 IMM.inc        Input Method Manager (IMM) support.

 InitCtrl.inc   Common Control initialization code designed to support all
                Windows platforms. See also CommCtrl.inc. NOTE: requires
                at least PB/CC 2.11, PB/DLL 6.11, or PB/Win 7.0.

 IPHlpAPI.inc   Internet Protocol Helper API.

 LmAccess.inc   NetUser, NetUserModals, NetGroup, NetAccess, and NetLogon APIs.
                Most functions require NT, Win2k, or XP.

 LmErr.inc      Network error equates.

 LmWksta.inc    NetWorkstation and NetWkstaTransport API functions.
                Not for Win9x-based OSes. Requires NT, Win2k, or XP.

 MCIAVI.inc     MCI AVI services for supporting AVI video.

 MDI32.inc      Multiple Document Interface (MDI) encapsulation.

 NTSecAPI.inc   Support for Local Security Authority APIs.
                Not for Win9x-based OSes. Requires NT, Win2k, or XP.

 PBForms.inc    Support macros for PowerBASIC Forms programs. Do not modify.

 PowrProf.inc   Power Policy API support (energy saving features, etc).

 PrSht.inc      Property Sheet Pages support.

 RAS32.inc      Remote Access Service (RAS) support.

 Reason.inc     Windows shutdown reason codes for WinXP and later.

 RichEdit.inc   RichEdit control definitions.

 SecExt.inc     Security functions not part of the SSPI interface.
                Not for Win9x-based OSes. Requires Windows 2000 or XP.

 ShlWAPI.inc    Windows light-weight utility APIs.
                Misc little string, path, registry, and GDI helpers.

 SubAuth.inc    Subauthentication Packages.
                Build your own logon validation routines.

 TlHelp32.inc   Tool help functions, types, and definitions.

 VBAPI32.inc    Visual Basic API.
                Functions for working with VB native strings and arrays.

 VCR.inc        MCI VCR services for controlling video cassette recorders.

 WebPub.inc     Microsoft Web Publishing API.

 WFExt.inc      Windows File Manager Extensions definitions.

 Win32API.inc   General-purpose Windows API definitions.
                Provides access to a wide variety of Windows functionals.

 WinHTTP.inc    Windows HTTP Services support.
                Requires a minimum of NT4 plus MSIE 5.01 or later. Additional
                support files may be needed from the MSDN download center.

 WinINet.inc    Windows Internet definitions.
                Medium-level Internet connection and Gopher support.

 WinIOCtl.inc   Windows Device I/O control codes and related definitions.

 WinWlx.inc     Windows Logon eXtension (WLX) definitions.

 WS2_32.inc     Windows Sockets 2 API definitions.
                Low-level sockets support for TCP and UDP.

 WSock32.inc    Windows Sockets 1.1 API definitions.
                Low-level sockets support for TCP and UDP.
