From: tomh@wes.on.ca (Tom Haapanen)
Newsgroups: comp.os.ms-windows.announce
Subject: Windows Programmer FAQ: ASCII format, 04/04
Date: 27 Jan 93 16:59:15 GMT
Followup-To: comp.os.ms-windows.misc
Organization: Waterloo Engineering Software

The following is part 04 of 04 of the ASCII text version of the
Microsoft Windows Programmer FAQ.  While some of you may find this the best
format, the more popular format is the WinHelp file.  These are posted
simultaneously with the ASCII version to comp.binaries.ms-windows.

You can obtain a copy of the WinHelp version as "faqprg01.zip" by ftp
from sonygate.sony.com [192.63.138.2], in /pub/comp.binaries.ms-windows.
It will also be placed on ftp.cica.indiana.edu once disk space permits.



BEGIN--------------cut here--------cut here------------cut here----------
  whether you're actually
  exhausting USER (probably) or GDI (less likely, unless you have a lot of
  bitmaps).
  
  Thanks for the explanation to Joe Robison (joero@microsoft.com).
  
...........................................................................

8.3.6.  Tracking down unfreed resources
---------------------------------------
  There are several utilities available on ftp.cica.indiana.edu which will
  monitor the heap and memory usage. Look for files ma.zip and ha.zip in
  /pub/pc/win3/utils.  The Windows 3.1 debug kernel (included with the SDK)
  also checks for unfreed resources when an application exits.  Finally the
  Heap Walker utility can be used to identify resources in the global heaps.
  
---------------------------------------------------------------------------

8.4.  Documentation and help
============================
  
...........................................................................

8.4.1.  Adding bitmaps to helpfiles
-----------------------------------
  When you add a bitmap to a help source document using the [bml ...]
  command, it freqently does not appear in the compiled helpfile.  The
  problem is that the text [bml printer.bmp] is an RTF bitmap inclusion
  command (which is why you want it there), but Word assumes you really want
  the literal text "[bml printer.bmp]", and escapes the whole sequence when
  saving the files as RTF.  Note that the previous description substitutes
  square brackets for curly brackets to prevent hc from actually including
  those bitmaps.  Use curly brackets in your own helpfile source!
  
  You'll get the actual RTF bitmap inclusion command in the RTF file (and
  thus a bitmap in the compiled helpfile) by inserting a bitmap using the
  Word for Windows menu commands and clicking on the "Link to file" checkbox
  when it asks you which bitmap to insert.
  
...........................................................................

8.4.2.  Screen Snapshots
------------------------
  To take a snapshot of your screen, just press PrtScr, and Windows will copy
  the image to the clipboard, from where you can paste it into your favourite
  application. You can also use Alt+PrtScr to take a snapshot of only your
  active pop-up window (child windows such as dialog controls are not counted
  as "active").
  
  You may wish to select the Monochrome VGA driver prior to doing the screen
  print to produce 1-bit (2-color) bitmaps for easier printing.
  
  As an alternative, you may wish to use a screen grabber/graphics conversion
  utility such as HiJaak or PaintShop Pro (see the Microsoft Windows FAQ) if
  you wish to produce good-quality grayscale bitmaps..
  
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


9.  A PROGRAMMER'S BIBLIOGRAPHY
===============================
  
---------------------------------------------------------------------------

9.1.  Windows 3.1 SDK
=====================
  * Windows Programmer's Reference, Volume 1: Overview.  Microsoft Press,
     1992
  * Windows Programmer's Reference, Volume 2: Functions.  Microsoft Press,
     1992
  * Windows Programmer's Reference, Volume 3: Messages and structures.
     Microsoft Press, 1992
  * Windows Programmer's Reference, Volume 4: Resources.  Microsoft Press,
     1992
  * Windows Guide to Programming. Microsoft Press, 1992
  * Windows Programming Tools. Microsoft Press, 1992
  * Windows User Interface Guidelines. Microsoft Press, 1992
  * Windows Multimedia Programmer's. Guide Microsoft Press, 1992
  * Windows Multimedia Programmer's Reference. Microsoft Press, 1992
  * Windows for Pen Computing Programmer's Reference. Microsoft Press, 1992
  * Windows Setup Toolkit. Microsoft Press, 1992
  
---------------------------------------------------------------------------

9.2.  Windows 3.0 SDK
=====================
  * SDK Reference, Volume 1: Functions and messages. Microsoft Press, 1990,
     part no. 06856
  * SDK Reference, Volume 2: Resource scripts and file formats. Microsoft
     Press, 1990, part no. 06857
  * SDK Guide to Programming.  Microsoft Press. 1990, part no. 06854
  * SDK Tools. Microsoft Press, 1990, part no. 06854
  * SAA CUA Advanced Interface Design Guide. IBM, 1989, part no. SC26-4582-0
  
  
---------------------------------------------------------------------------

9.3.  Win32 (Windows NT) API
============================
  * Win32 API: An Overview. Microsoft Press, 1992
  * Win32 Programmer's Reference, Volume 1: Overview, functions (A-O).
     Microsoft Press, 1992
  * Win32 Programmer's Reference, Volume 2: Functions (P-Z). Microsoft Press,
     1992
  
---------------------------------------------------------------------------

9.4.  User interface guidelines
===============================
  * Windows User Interface Guidelines.  [for Windows 3.1, Pen Windows and
     Windows NT] Microsoft Press, 1992
  * SAA CUA Advanced Interface Design Guide. [for Windows 3.0 and OS/2 1.x]
     IBM, 1989, part no. SC26-4582-0
  * SAA CUA'91 Design Guide. [for OS/2 2.0] IBM, 1991, part no. SC34-4289,
     $10.00
  * SAA CUA'91 Reference. [for OS/2 2.0] IBM, 1991, part no. SC34-4290,
     $18.25
  
---------------------------------------------------------------------------

9.5.  Microsoft Technical Notes
===============================
  Microsoft's Technical Notes are available by ftp at ftp.uu.net, directory
  /vendor/microsoft, or from the WINSDK forum on CompuServe.  The following
  is a quick index to the numbered files available at uunet.
  
   FileName     Description
   3-1 Back     Building a DLL using large model
   3-2 CallB    C++ class member functions as callbacks
   3-3 ClsExp   C++ class export syntax
   3-4 NewOpr   C++ new operator in large model
   3-5 Owner    C++ new operator in DLLs
   3-6 Smart    Using _fmalloc with Windows
   3-7 Zusammen Using C/C++ compiler options
   3-8 AppExec  Launching and waiting for Windows applications
   3-9 DDEExec  Creating a DDE Execute server
   3-10DDERecon Creating a DDE hot link client
   3-11DDEServer Creating a DDE server
   3-12PmgrAPI  DDE command string interface to Program Manager
   3-13StockSrv DDE hot links
   3-14Glyph    TrueType font engine and GetGlyphOutline()
   3-15Lava     Palette animation and pop-up menus
   3-16MergeDIB Merging DIBs
   3-17MultiPal Multiple palette management
   3-18TransBlt Transparent bitmaps
   3-19Tri      Drawing to screen or memory DIB
   3-20TriQ     Drawing to screen or memory DIB
   3-21CountDOS Combining a Windows application and a DOS TSR
   3-22WinFloat Advanced floating-point functionality in Windows
   3-23Detect   Detecting presence of multimedia extensions
   3-24JoyToy   Using joystick services
   3-25MMPF     Reads and analyzes .MMP files
   3-26MMPlay   Plays .MMP files
   3-27MMSys    Using multimedia without drivers
   3-28WaveConv Converting .WAV and .RIF files
   3-29Patron   OLE client
   3-30Schmoo   OLE server
   3-31Ctl3D    Implementing 3D dialogs and controls, a la Excel 4.0
   3-32Dialogs  Using common dialogs
   3-33EdAlign  Changing edit control alignment
   3-34MinMax   Controlling window minimum and maximum size
   3-35StatBar  Creating a status bar
   3-36Styles   Using user-selected styles for a window
   3-37VList    Using virtual listboxes
   
   FileName     Description
   4-1 Blocks   Dragging and stretching with MFC
   4-2 MFCDIB   DIBs with MFC
   4-3 Modeless Modeless dialogs with MFC
   4-4 Subclass Subclassing edit controls with MFC
   4-5 BallCli  DDE client using DDEML
   4-6 BallSrv  DDE server using DDEML
   4-7 DMLClt   Basic DDEML client
   4-8 DMLSrv   Basic DDEML server
   4-9 BMUtil   Bitmap techniques and utilities for MFC
   4-10DragBMP  Dragging bitmaps smoothly with MFC
   4-11FADE     Fading bitmaps using palette animation
   4-12GDIRsrcs Extracting resources from resource files
   4-13GDIWatch Useing TOOLHELP.DLL to walk heap
   4-14RLEApp   Animating with DIB RLE format
   4-16WinCap   Capturing screens using DIB API
   4-17AsmClock Windows programming with MASM 6.0
   4-18Backgrnd Background processing
   4-19MakeApp  Generating a Windows application
   4-20ShowGrp  Reading group files
   4-21VerStamp Uses VER.DLL to get version information for a file
   4-22WinQuery Querying the SQL Server
   4-23Xtension Extension DLL for File Manager
   4-24BadApp   "Bad Application" handling
   4-25DLLFloat Converting floating point to character strings
   4-26DLLSkel  Medium-model DLLs
   4-27Fault    Exception and Fault Trapping
   4-28Handle   Validating global and local handles
   4-29MultApp  Multiple instance DLL with separate data blocks
   4-30TermWait Launching a task and waiting for completion
   4-31MIDIKeyb Using the midiKeyB control
   4-32ZYZGauge Implementing a progress bar
   4-33ALCKey   Uses ALC values to filter input
   4-34AnnoPrnt Annotating and printing text and ink
   4-35Annotate Adding handwriting annotation to a text file
   4-36DynBedit Changing an edit control to bedit dynamically
   4-37Grid     Using pen gestures
   4-38Hotspots Reconizing gesture hotspots
   4-39Parser   Mapping raw data into characters
   4-40Pressure Capturing pen pressure information
   4-41RCDump   Accessing the RCRESULT Structure
   4-42View     Displaying ink slowly
   4-43Health   Visual Basic Pen Windows healthcare application
   4-44Insure2  Visual Basic Pen Windows Insurance application
   4-45LoanApp  Visual Basic Pen Windows loan application
   4-46Receipt  Visual Basic Pen Windows order application
   4-47SaleAnal Visual Basic Pen Windows forecast tracking
   4-48CollColr Changing System Colors
   4-49DynDlg   Implementing a dynamic options dialog
   4-50EXEView  Extracting and decoding information from an .EXE
   4-51HitTest  Testing for click on an icon
   4-52HotKey   Installing hotkeys
   4-53MDIDlg   Using dialogs as MDI windows
   4-54SignOn   Creating a sign-on screen
   4-55SysParam Using the SystemParametersInfo() function
   
   FileName     Description
   10-1AppExec  Launching other Windows-based applications
   10-2BigBit   Using TrueColor devices
   10-3Client   OLE Client Implementation Guide 1.02
   10-4Ctl3D    Adding 3-D effects to controls
   10-5CtlDlgEd Developing custom controls for the dialog editor
   10-6DDEDLL   Performing DDE from a DLL
   10-7DDEHotLk Using DDE hot links
   10-8DDEOLE   Supporting clipboard, DDE, and OLE
   10-9DDESysTp Supporting the DDE system topic
   10-10        DevEnvEstablishing a flexible development environment
   10-11        DIBPalUsing DIBs with Palettes
   10-12        DIBs2 Using DIBs
   10-13        DLLIntro   Introduction to DLLs
   10-14        EditCtls   Edit control reference
   10-15        FaultsBulletproofing functions with TOOLHELP.DLL
   10-16        FontMap    Windows font mapping
   10-17        GDIOver2   Windows GDI overview
   10-18        GetGlyph   Advanced TrueType: GetGlyphOutline()
        documentation
   10-19        Hooks Using Windows' hook functions
   10-20        JSConcpt   OLE: A short overview
   10-21        LargeM4    Using large model
   10-22        Listbox    Listbox control reference
   10-23        Listhrz2   Using horizontal scroll bars in listboxes
   10-24        Mapping    Coordinate mapping in Windows
   10-25        Metafile   An overview of metafiles
   10-26        MinMaxUsign WM_GETMINMAXINFO
   10-27        MTI   An overview of modules, tasks and instances
   10-28        Objects    Using GDI objects
   10-29        PalAware   Creating a palette awareness
   10-30        Palette    An introduction to the palette manager
   10-31        Porting    Porting 16-Bit Windows Applications to Win32
   10-32        Primitiv   Device-independent graphics primitives
   10-33        Print An introduction to printing
   10-34        RawDDEDDE transaction definition tables
   10-35        ServerOLE server implentation guide
   10-36        StatBar    Implementing a Status Bar
   10-37        StatiCtl   Static control reference
   10-38        Streams    OLE Streams introduction
   10-39        StylesWindow hierarchies and styles
   10-40        Subclass   Safe subclassing
   10-41        T2API Using TrueType
   10-42        Timer2Timers and timing in Windows
   10-43        TransBlt   Transparent BitBlits
   10-44        TrueType   An introduction to TrueType
   10-45        TSR-Supp   TSR support in Windows 3.1
   10-46        TT    An introduction to TrueType
   10-47        TTFonts    Linear and nonlinear scaling
   10-48        Use-Cust   Using and customizing common dialogs
   10-49        VLB   Virtual listboxes
   10-50        VxDLite    A miniature DDK for creating VxDs
   10-51        WEP   Loading, initializing, and terminating a DLL
   10-52        Win32DLL   DLLs in Win32
   10-53        WinFloat   Floating point in Windows
   10-54        PenUI Pen Windows user interface guidelines
   10-55        SymbolGr   Using the symbol graph
   10-56        W4PRecog   Moderating the Pen Windows recognition process
   10-57        GraphXGraphics design and optimization
   10-58        MemoryOptimizing memory usage and performance
   10-59        MMAware    Creating multimedia-aware applications
   10-60        MsftMMMicrosoft multimedia document overview
   10-61        OptCDRom   CD-ROM design and optimization
   10-62        RiffNew    New multimedia types and techniques
   10-63        Tech1 Multimedia technical support update
   10-64        Video Multimedia video techniques
   10-65        Dr_GUI1    Ask Dr. GUI # 1
   10-66        Dr_GUI2    Ask Dr. GUI # 2
   10-67        Dr_GUI3    Ask Dr. GUI # 3
   10-68        Dr_GUI4    Ask Dr. GUI # 4
   10-69        Dr_GUI5    Ask Dr. GUI # 5
   10-70        Dr_GUI6    Ask Dr. GUI # 6
   
   FileName     Description
   11-1CallB    C++ class member functions as callbacks
   11-2Cbl_CApp Passing parameters between C and COBOL modules
   11-3CPPDLL   Exporting an entire C++ class
   11-4Draft3   Using MOVE in MS-DOS
   11-5Fangle   Using new in C++
   11-6Malloc   Using _fmalloc with Windows
   11-7ObjMapC  Object mapping in C++
   11-8Optim    Setting C/C++ compiler options
   11-9SS208    Relocatable Object Module format specification
   11-10        TN0001MFC: WNDCLASS structures
   11-11        TN0002MFC: Presistent C++ storage
   11-12        TN0003MFC: Mapping Windows handles to C++ objects
   11-13        TN0004MFC: Using template classes in C++
   11-14        TN0005MFC: Using MDI
   11-15        TN0006MFC: Using message maps
   11-16        TN0007MFC: Windows debugging and trace options
   11-17        TN0008MFC: general OLE overview
   11-18        TN0009MFC: creating OLE clients
   11-19        TN0010MFC: creating OLE servers
   11-20        TN0011MFC: creating DLLs
   11-21        TN0012MFC: using Windows 3.1 robustness features
   11-22        TN0013MFC: using standard dialog classes
   11-23        TN0014MFC: creating custom controls
   11-24        TN0015MFC: Pen Windows
   11-25        TN0016MFC: multiple inheritance
   11-26        TricksNew tricks for the C/C++ compiler
   11-27        BuildSwi   Programmer's Workbench build switches
   11-28        DLL   Creating DLLs with QuickC for Windows
   
   FileName     Description
   13-1DynaComm Developing DDE applications with DynaComm
   13-2New20    New WordBasic features in Word for Windows 2.0
   13-3Prat1    Data mangement with Word for Windows and PackRat
   13-4QPlusE   Data exchange with Q+E
   13-5RealTips EchoOff for WordBasic macros
   13-6TJTips   Private initialization files with Word for Windows
   13-6XTalkDDE DDE with CrossTalk for Windows
   
  
---------------------------------------------------------------------------

9.6.  Third-party programming guides: general
=============================================
  Special notice must go to Charles Petzold's Windows bible, which is shown
  first.  All other Windows programming guides are listed alphabetically by
  author.
  * Petzold, Charles: Programming Windows, 3rd edition (with disk).
     Microsoft Press, 1990, ISBN 1-55615-264-7
  
  * Baer, Jrgen: Introduction to WIndows 3.1 Programming.  Abacus, 1992, $
     34.95
  * Baer, Jrgen: Windows 3.1 Intern (with disk).  Abacus, 1992, $ 49.95
  * Clark, Jeffrey: Windows Programmer's Guide to OLE/DDE (with disk).  SAMS,
     1992, $ 34.95
  * Custer, Helen: Inside Windows NT. Microsoft Press, 1992,  ISBN: 1-55615-
     481-X
  * Farrell, Tim: Programming in WIndows 3.1, 2nd edition (with disk).
     Addison-Wesley, 1992, $29.95
  * Klein, Mike: Windows Programmer's Guide to DLLs and Memory Management
     (with disk).  SAMS, 1992, $ 34.95
  * Heller, Martin: Advanced WIndows Programming.  John Wiley & sons, 1992,
     ISBN 0-471-54711-5, $ 32.95
  * Leavens, Alex: Windows Programmer's Guide to Resources (with disk).
     SAMS, 1992, $ 34.95
  * McCord, James: Windows 3.1 Programmer's Reference.  Que, 1992, $ 39.95
  * Monk. Tim: Windows Programmer's Guide to Serial Communications., SAMS,
     1992, ISBN 0-672-30030-3.  $ 39.95
  * Norton, Peter and Paul Yao: Windows 3.1 Power Programming Techniques.
     Bantam Books, 1992, $29.95
  * Rector, Brent: Developing Windows 3 Applications Microsoft Windows SDK.
     SAMS, 1992, $ 29.95
  * Richter, Jeffrey M.: Windows 3: A Developer's Guide (with disk). M&T
     Books, 1991, ISBN 1-55851-164-4
  * Southerton, Alan: Windows 3.0 Programming Primer (with disk).  Addison-
     Wesley, 1990, $ 34.95
  * Wilken, Peter: Windows System Programming (with disk).  Abacus, 1991, $
     39.95
  * Wilton, Richard: Microsoft Windows 3 Developer's Workshop. Microsoft
     Press, 1991, $24.95
  
---------------------------------------------------------------------------

9.7.  Third-party programming guides: class libraries
=====================================================
  * Dilascia, Paul: Windows++.  Addison-Wesley, 1992, $29.95
  * McCord, James: Developing Windows Applications With Borland C++ 3.0,
     SAMS, 1992, ISBN 0-672-30231-4, $ 39.95.
  * Norton, Peter and Paul Yao: Borland C++ Programming for Windows. Bantam
     Books, 1992, $29.95
  * Roetzheim, William: Programming Windows with Borland C++.
  * Shammas, Namir: Windows Programmer's Guide to Object Windows Library
     (with disk).  SAMS, 1992, $ 34.95
  * Shammas, Namir: Windows Programmer's Guide to Microsoft Foundation
     Classes (with disk).  SAMS, 1992, $ 34.95
  * Heiny, Loren: Windows Graphics Programming with Borland C++.  Wiley,
     1992, $ 29.95
  
---------------------------------------------------------------------------

9.8.  Third-party programming guides: device drivers and internals
==================================================================
  * Norton, Daniel A.: Writing Windows Device Drivers. Addison-Wesley, 1991,
     $29.95
  * Schulman, Andrew: Undocumented Windows (with disk).  Addison-Wesley,
     1992, $ 39.95
  
---------------------------------------------------------------------------

9.9.  Third-party programming guides: macro languages
=====================================================
  * Borland, Russell: Word for Windows macros.  Microsoft Press, 1992
  * Leonhard, Woody: Windows 3.1 Programming for Mere Mortals.  Addison-
     Wesley, 1992, $ 34.95
  * The Power of Word 2 for Windows macros.  MIS Press, 1992
  
---------------------------------------------------------------------------

9.10.  Magazines
================
  * BasicPro Magazine
     299 California Ave. S120, Palo Alto, CA 94306-1912
     (415) 688-1808
     Not Windows-specific, but with extensive Visual Basic coverage
  * Dr. Dobbs' Journal
     411 Borel Ave., San Mateo, CA 94402-3522
     (800) 456-1215, (303) 447-9330
     Technical.  Moderate Windows coverage.
  * Inside Visual Basic
     9420 Bunsen Parkway, suite 300, Louisville, KY 40220
     (800) 223-8720, (502) 491-1900
  * Microsoft Systems Journal
     501 Galveston Dr., Redwood City, CA 94063
     (415) 366-3600
     Technical.  Extensive Windows coverage.
  * Windows Magazine
     600 Community Community Dr., Manhasset, NY 11030
     (800) 248-3584, (303) 447-9330
     Non-technical.
  * Windows/DOS Developer's Journal
     2601 Iowa Rd., Lawrence, KS 66046
     (913) 841-1631
     Technical.  Good Windows coverage.
END--cut here--cut here