What is WFC (Win32 Foundation Classes)? It is a set of C++ classes built upon
MFC that let you develop Win32 applications. It encapsulates different 
groups of API's (like the Registry) into C++ classes to reduce the learning
curve. For the most part I don't want to overlap MFC in functionality. 
However, I have a TCP/IP socket class and so does MFC (but mine works in
Console applications). I am not the author of all of the code. If I've seen
code that I can use I've rolled it into WFC. There's a lot of classes that
encapsulate data structures. The reason for this is my programmers are 
constantly having problems initializing structures that have a data member
holding the size of the structure (i.e. cbSize or dwLength members). 
Microsoft doesn't do a real good job of pointing out that you need to set
the size of data structures *before* calling API's. This leads to a lot of
heartache for first-time NT programmers (in my experience). Also, all
members of the structures are zeroed out before use. WFC will be extended
as it is used in more and more applications.

WFC contains no exception handling. Why? I hate exception handling. It is a
religious issue with me. I prefer to check for failure all over the place.

How much does WFC cost? Nothing. Use it any way you like. Please let me know
of bugs or extensions so I can roll them into the next release. Feel free
to tell me some good news too!

Here's a list of the classes in WFC004.

CAccessTimeout                 - Encapsulates the ACCESSTIMEOUT structure.
CCircle                        - Draws a circle on the screen.
CCompVars                      - Encapsulates the COMPVARS structure.
CDeviceControlBlock            - Encapsulates DCB structure.
CDocInfo                       - Encapsulates the DOCINFO structure.
CDrawingObjectGrid             - A grid of drawing objects like CCircle, etc.
CDummyFile                     - A class that traps all calls to CFile that
                                 would blow up if you weren't a disk file.
CEllipse                       - Draws an ellipse on the screen.
CEventLog                      - The event logger. Makes logging easier.
CFilterKeys                    - Encapsulates the FILTERKEYS structure.
CLabeledGrid                   - A subclass of CDrawingObjectGrid that adds
                                 text labels to the objects.
CListeningSocket               - Establishes a socket that people can connect
                                 to (ie, makes a server socket)
CLZFile                        - Unfinished class. Will be derived from CFile
                                 to handle LZFiles (compressed files).
CMemoryStatus                  - Encapsulates the MEMORYSTATUS structure.
CMouseKeys                     - Encapsulates the MOUSEKEYS structure.
CNamedPipe                     - Unfinished class. Will be derived from CFile
COverlapped                    - Plays with OVERLAPPED structure.
CPerfCounterDefinition         - Encapsulates the PERF_COUNTER_DEFINITION
                                 structure.
CPerfInstanceDefinition        - Encapsulates the PERF_INSTANCE_DEFINITION
                                 structure.
CRAS                           - Remote Access Services. Partially tested, it 
                                 does dials phone book entries...
CRASAuthenticationMessageBlock - Encapsulates the RASAMB structure.
CRASInternetProtocol           - Encapsulates the RASPPPIP structure.
CRASInternetworkPacketExchange - Encapsulates the RASPPPIPX structure.
CRASNetBEUIFramer              - Encapsulates the RASPPPNBF structure.
CRectangle                     - Draws a rectangle on the screen
CRegistry                      - Encapsulates the Registration Database 
                                 (Registry API)
CRoundedRectangle              - Draw a rectangle with rounded corners
CSecurityAttributes            - Encapsulates the SECURITY_ATTRIBUTES
                                 structure.
CSecurityQualityOfService      - Encapsulates the SECURITY_QUALITY_OF_SERVICE
                                 structure.
CSerialFile                    - Treats the serial port like it was a CFile
CSerialPort                    - Under developement. Will handle serial ports (multi-threaded).
CService                       - NT Services class. I haven't finished 
                                 debugging this class yet...
CSimpleSocket                  - Base class for TCP/IP sockets. Derived from
                                 CDummyFile.
CSimpleSocketFile              - Turns an existing CSimpleSocket into a CFile.
                                 Generally, this is called from 
                                 CListeningSocket::OnNewConnection()
CSoundSentry                   - Encapsulates the SOUNDSENTRY structure.
CSquare                        - Draws a square on the screen
CStickyKeys                    - Encapsulates the STICKYKEYS structure.
CTalkingSocket                 - A socket you can use to connect to existing
                                 sockets (you connect to a server).
CTape                          - Under development. Will encapsulate the Tape
                                 API. Derived from CFile...
CToggleKeys                    - Encapsulates the TOGGLEKEYS structure.
CUniformResourceLocator        - Plays with URL's 
                                 Example: http://www.microsoft.com/hello.html
CUniversalNamingConvention     - Plays with UNC's 
                                 Example: \\buckaroo\public\neato\readme.txt
CWaitCursor                    - Ye Olde Wait Cursor class
CWindowPlacement               - Encapsulates the WINDOWPLACEMENT structure.

What's new in 005?

The RAS data structures have been reworked so they no longer contain member 
data structures. This is the more C++ correct way to encapsulate a data 
structure.

CAccessAllowedEntry            - Encapsulates the ACCESS_ALLOWED_ACE structure.
CAccessControlEntryHeader      - Encapsulates the ACE_HEADER structure.
CAccessControlList             - Encapsulates the ACL structure.
CAccessDeniedEntry             - Encapsulates the ACCESS_DENIED_ACE structure.
CBitmapCoreHeader              - Encapsulates the BITMAPCOREHEADER structure.
CBitmapFileHeader              - Encapsulates the BITMAPFILEHEADER structure.
CBitmapInfoHeader              - Encapsulates the BITMAPINFOHEADER structure.
CColorAdjustment               - Encapsulates the COLORADJUSTMENT structure.
COutlineTextMetric             - Encapsulates the OUTLINETEXTMETRIC structure.
CPixelFormatDescriptor         - Encapsulates the PIXELFORMATDESCRIPTOR structure.
CRasterizerStatus              - Encapsulates the RASTERIZER_STATUS structure.
CServiceControlManager         - Plays with the Service Control Manager.
CServiceStatus                 - Encapsulates the ENUM_SERVICE_STATUS structure.
CSystemAuditEntry              - Encapsulates the SYSTEM_AUDIT_ACE structure.
CTextMetric                    - Encapsulates the TEXTMETRIC structure.

Sam Blackburn
CI$: 76300,326
Internet: sammy@sed.csc.com
