home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / readme.txt < prev    next >
Encoding:
Text File  |  1995-07-11  |  24.9 KB  |  675 lines

  1.  
  2.                 Microsoft Win32 SDK for Microsoft Windows
  3.                             August, 1995
  4.  
  5.  
  6. ---------------
  7. 1. Introduction
  8. ---------------
  9.  
  10. Welcome to the Microsoft Win32 SDK for Microsoft Windows.  This release of the 
  11. SDK provides the tools and information necessary to build retail applications 
  12. for Windows 95 and for Windows NT 3.51.
  13.  
  14. Most of the utilities, headers, libraries, documentation, and sample code in 
  15. the SDK are useful when building applications for both Windows 95 and Windows 
  16. NT 3.51.  Platform specific files are located in appropriately named 
  17. subdirectories, i.e. WIN95 and WINNT.  When the SDK is installed, it detects 
  18. the host operating system and installs any binaries specific to that OS.  All 
  19. of the headers and libraries are installed, so that either operating system 
  20. can host development targeting the other.  If the SDK is installed on a RISC 
  21. platform, samples that will run only on Windows 95 are not installed.
  22.  
  23. This release of the Win32 SDK contains new technology for viewing the on-line
  24. documentation.  The familiar MSDN browser is now installed with the SDK, and 
  25. all of the core documentation is provided in this format.  The new browser 
  26. offers a unified window containing both the table of contents and the topic 
  27. page.  It also offers the ability to print multiple pages at one time.  Like 
  28. earlier versions of the SDK documentation, most reference pages include a 
  29. QuickInfo popup with platform specifics as well as Group and Overview links 
  30. to help move between related pages.
  31.  
  32.  
  33.  
  34. -----------
  35. 2. Compiler
  36. -----------
  37.  
  38. There is no compiler, linker, lib utility, or make utility provided for x86, 
  39. MIPS, or Alpha platforms. You must have Microsoft Visual C++ version 2.x or
  40. a compatible 32-bit compiler.
  41.  
  42. The SDK does include a compiler, linker, lib utility, and make utility for the 
  43. PowerPC platform.  The compiler will display a banner each time it is run.  
  44. The banner contains a phone number to be used for registering the compiler.  
  45. Registration is free and relatively easy.  Once the compiler is registered, 
  46. it will not expire.  However, a compiler that is not registered will cease
  47. working 30 days after it is first used.  To register the compiler, call the 
  48. phone number listed in the banner, provide the people on the phone the "code" 
  49. in the banner and receive an "access code" in return.  Run register.exe with 
  50. the access code as the single command line parameter, e.g. 
  51. register <access_code>.
  52.  
  53. Visual C++ provides structured exception handling though the use of catch and 
  54. throw.  Although one of the SDK samples uses this technique (oleapt), the 
  55. PowerPC compiler will not support it.  There will be no catch/throw support 
  56. until Microsoft Visual C++ provides a compiler for PowerPC. 
  57.  
  58.  
  59.  
  60. ----------------------
  61. 3. Guide to Components
  62. ----------------------
  63.  
  64. For a general introduction to the Win32 SDK, including many of the tools,
  65. see the "Getting Started" help file, i.e \MSTOOLS\HELP\SDKSTART.HLP.
  66.  
  67. Windows 95 and Windows NT both have fully compatible 32-bit implementations
  68. of OLE.  For specific OLE information, see \MSTOOLS\SAMPLES\OLE\OLEREL.WRI.
  69.  
  70. Windows 95 and Windows NT both have fully compatible 32-bit implementations
  71. of RPC.  For specific RPC information, see \MSTOOLS\SAMPLES\RPC\RPCREAD.ME.
  72.  
  73. The x86 version of MAPI is supported on both Windows 95 and Windows NT.  The
  74. 32-bit MAPI headers, libraries, documentation, tools, and sample code are 
  75. integrated into the Win32 SDK.  However, it is necessary to install the 
  76. Exchange client on Windows 95 or the MAPI run-time on Windows NT before 
  77. successfully running most of the MAPI executables (including the sample code).
  78. See \MSTOOLS\MAPI\README.WRI for more information.
  79.  
  80. Win32s is a technology that will allow a 32-bit application to run on Windows
  81. 3.x.  Version 1.3 of Win32s is available in the \MSTOOLS\WIN32S directory.
  82. This release contains the new Windows 95 common controls including richedit.
  83. It also contains the new 4.0 winhelp with full text search.  For more
  84. information, see \MSTOOLS\WIN32S\README.TXT.
  85.  
  86. This version of the Win32 SDK provides two setup toolkits.  See
  87. \MSTOOLS\ISHIELD and \MSTOOLS\MSSETUP.  You are encouraged to evaluate
  88. both and chose the one that best meets your setup needs.
  89.  
  90.  
  91.  
  92. ------------------------------
  93. 4. Late Breaking Documentation
  94. ------------------------------
  95.  
  96. 4.1 SHFormatDrive
  97. -----------------
  98.  
  99. DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options);
  100.  
  101.   Displays the format dialog box used by the shell, permitting the user to 
  102.   format one or more disks in the specified drive. The dialog box requires 
  103.   user interaction to carry out the formatting operation, so you cannot use 
  104.   this function for unassisted disk formatting.
  105.  
  106.   Returns the physical format identifier of the last succesful format or one 
  107.   of these values:
  108.  
  109.     SHFMT_ERROR    Error on last format, drive may be formatable
  110.     SHFMT_CANCEL    Last format was canceled
  111.     SHFMT_NOFORMAT    Drive cannot be formatted
  112.  
  113.  hwnd
  114.   Handle of the owner window for the the dialog box. This parameter must be a 
  115.   valid window handle; it must not be NULL.
  116.  
  117.  drive
  118.   Zero-based number of the drive to format. Use 0 for drive A, 1 for B, and 
  119.   so on.
  120.  
  121.  fmtID
  122.   Physical format type identifier. Can be one of these values:
  123.   SHFMT_ID_DEFAULT    Default format. 
  124.  
  125.  options
  126.   Options. Can be one of these bit values:
  127.   SHFMT_OPT_FULL    
  128.     Full format. By default, the dialog uses a quick formatting operation. 
  129.     This option permits formatting of unformatted disks.
  130.  
  131.   SHFMT_OPT_SYSONLY    
  132.     Copies system files only.
  133.  
  134.   If a physical format identifier is returned, you can use the low-order 16 
  135.   bits as the fmtID parameter in a subsequent call to the function.  You 
  136.   cannot subclass this dialog box or add custom controls to it. You cannot 
  137.   limit the number of diskettes the user can format. 
  138.  
  139.   This API is implemented on Windows 95 only.
  140.  
  141.   #define SHFMT_ID_DEFAULT     0xFFFF
  142.   #define SHFMT_OPT_FULL       0x0001
  143.   #define SHFMT_OPT_SYSONLY    0x0002
  144.   #define SHFMT_ERROR      0xFFFFFFFFL    
  145.   #define SHFMT_CANCEL     0xFFFFFFFEL    
  146.   #define SHFMT_NOFORMAT   0xFFFFFFFDL    
  147.  
  148.  
  149.  
  150. 4.2 WM_PENCTL submessages
  151. -------------------------
  152.  
  153. The following two submessages of WM_PENCTL are missing from the Pen Services
  154. documentation.  These submessages should appear in the Pen Application 
  155. Programming Interface Messages chapter or topic.  Note that these submessages 
  156. do not apply to the Japanese version. 
  157.  
  158. HE_GETLENSTYPE
  159.  Retrieves the type of writing lens tool opened from an hedit control when 
  160.  the CorrectWriting function is called. Submessage of WM_PENCTL.
  161.  
  162.  Parameters
  163.  wParam: 
  164.   HE_GETLENSTYPE
  165.  lParam: 
  166.   Not used; must be set to 0L.
  167.  Return Value
  168.   Returns the current CorrectWriting (CWR_) options.
  169.  Comments
  170.   This submessage is for single-line hedit controls only. 
  171.  See Also
  172.   WM_PENCTL, HE_SETLENSTYPE
  173.  
  174.  
  175. HE_SETLENSTYPE
  176.  Sets the type of writing lens tool opened from an hedit control when the
  177.  CorrectWriting function is called. Submessage of WM_PENCTL.
  178.  
  179.  Parameters
  180.  wParam:
  181.    HE_SETLENSTYPE
  182.  lParam:
  183.   The low-order word must contain either CWR_BOXES, to open a bedit-type lens 
  184.   control or CWR_KEYBOARD to open an onscreen keyboard. These can  be bitwise-
  185.   OR'ed with other CWR_ constant values described in CorrectWriting. The high 
  186.   order word must be one of the CWRK_ values described in CorrectWriting to 
  187.   specify which onscreen keyboard to open, either directly, if CWR_KEYBOARD is 
  188.   in the low-order word, or when accessed through the bedit lens otherwise.
  189.  Return Value
  190.   Returns TRUE if successful; otherwise, returns FALSE.
  191.  Comments
  192.   This submessage is for single-line hedit controls only. 
  193.  See Also
  194.   WM_PENCTL, HE_GETLENSTYPE
  195.  
  196.  
  197. 4.3 VALENT
  198. ----------
  199.  
  200. The following reference page for the VALENT structure is new.
  201.  VALENT
  202.  typedef struct value_ent {
  203.     LPTSTR   ve_valuename;
  204.     DWORD ve_valuelen;
  205.     DWORD ve_valueptr;
  206.     DWORD ve_type;
  207.  }VALENT;
  208.  
  209.  The VALENT structure contains information about a registry value. The 
  210.  RegQueryMultipleValues function uses this structure.
  211.  
  212.  MEMBERS
  213.  
  214.  ve_valuename
  215.   Pointer to a null-terminated string. Before calling RegQueryMultipleValues, 
  216.   set this member to point to the name of a value to retrieve.
  217.  
  218.  ve_valuelen
  219.   Specifies the size, in bytes, of the data pointed to by ve_valueptr.
  220.  
  221.  ve_valueptr
  222.   Pointer to the data for the value entry. This is a pointer to the valueÆs 
  223.   data returned in the lpValueBuf buffer filled in by RegQueryMultipleValues.
  224.  
  225.  ve_type
  226.   Specifies the type code for the value entry. The type code can be one of 
  227.   the following values: 
  228.  
  229.  REG_BINARY
  230.   Binary data in any form.
  231.  
  232.  REG_DWORD
  233.   A 32-bit number.
  234.  
  235.  REG_DWORD_LITTLE_ENDIAN
  236.   A 32-bit number in little-endian format (same as REG_DWORD). In little-
  237.   endian format, the most significant byte of a word is the high-order word. 
  238.   This is the most common format for computers running Windows NT and 
  239.   Windows 95.
  240.  
  241.  REG_DWORD_BIG_ENDIAN
  242.   A 32-bit number in big-endian format. In big-endian format, the most 
  243.   significant byte of a word is the low-order word.
  244.  
  245.  REG_EXPAND_SZ
  246.   A null-terminated string that contains unexpanded references to environment 
  247.   variables (for example, %PATH%).  It will be a Unicode or ANSI string 
  248.   depending on whether you use the Unicode or ANSI functions.
  249.  
  250.  REG_LINK
  251.   A Unicode symbolic link.
  252.  
  253.  REG_MULTI_SZ
  254.   An array of null-terminated strings, terminated by two null characters.
  255.  
  256.  REG_NONE
  257.   No defined value type.
  258.  
  259.  REG_RESOURCE_LIST
  260.   A device-driver resource list.
  261.  
  262.  REG_SZ
  263.   A null-terminated string. It will be a Unicode or ANSI string, depending on 
  264.   whether you use the Unicode or ANSI functions.
  265.  
  266.  See Also
  267.   RegQueryMultipleValues 
  268.  
  269.  
  270. -----------------------
  271. 5. Documentation Errata
  272. -----------------------
  273.  
  274. 5.1 Functions
  275. -------------
  276.  
  277. DocumentProperties
  278.  The description of the pDevModeInput parameter should read as follows:
  279.  pDevModeInput
  280.   Pointer to a DEVMODE structure that the operating system uses to initialize 
  281.   the dialog box controls.  This parameter is only used if the DM_IN_BUFFER 
  282.   flag is set in the fMode parameter.  If DM_IN_BUFFER is not set, the 
  283.   operating system uses the printerÆs default DEVMODE. 
  284.  
  285.  
  286. DrawAnimatedRects
  287.  The idAni parameter is now handled the same on Windows NT as on Windows 95. 
  288.  Its description should read as follows:
  289.  idAni
  290.   This parameter is reserved and must be zero.
  291.  
  292.  
  293. FindResource
  294.  The description of the hModule parameter should read as follows:
  295.  hModule
  296.   A handle to the module whose executable file contains the resource. 
  297.   A value of NULL specifies the module handle associated with the image 
  298.   file that the operating system used to create the current process.
  299.  
  300.  
  301. FSCTL_DISMOUNT_VOLUME
  302.  The syntax line for the lpchBytesReturned parameter should read as follows:
  303.  lpcbBytesReturned;    // pointer to DWORD used by DeviceIoControl function 
  304.  
  305.  The description for lpchBytesReturned should read as follows:
  306.  lpcbBytesReturned
  307.   Pointer to a DWORD. This value cannot be NULL. Although the 
  308.   FSCTL_DISMOUNT_VOLUME operation produces no output data, and lpvOutBuffer 
  309.   should be NULL, the DeviceIoControl function uses the variable pointed to 
  310.   by lpcbBytesReturned. After the operation, the value of this variable is 
  311.   without meaning.
  312.  
  313.  
  314. FSCTL_LOCK_VOLUME
  315.  The syntax line for the lpchBytesReturned parameter should read as follows:
  316.  lpcbBytesReturned;    // pointer to DWORD used by DeviceIoControl function 
  317.  
  318.  The description for lpchBytesReturned should read as follows:
  319.  lpcbBytesReturned
  320.   Pointer to a DWORD. This value cannot be NULL. Although the FSCTL_LOCK_VOLUME
  321.   operation produces no output data, and lpvOutBuffer should be NULL, the 
  322.   DeviceIoControl function uses the variable pointed to by lpcbBytesReturned. 
  323.   After the operation, the value of this variable is without meaning.
  324.  
  325.  
  326. FSCTL_SET_COMPRESSION
  327.  The syntax line for the lpchBytesReturned parameter should read as follows:
  328.  lpcbBytesReturned;    // pointer to DWORD used by DeviceIoControl function 
  329.  
  330.  The description for lpchBytesReturned should read as follows:
  331.  lpcbBytesReturned
  332.   Pointer to a DWORD. This value cannot be NULL. Although the 
  333.   FSCTL_SET_COMPRESSION operation produces no output data, and lpvOutBuffer 
  334.   should be NULL, the DeviceIoControl function uses the variable pointed to
  335.   by lpcbBytesReturned. After the operation, the value of this variable is
  336.   without meaning.
  337.  
  338.  
  339. FSCTL_UNLOCK_VOLUME
  340.  The syntax line for the lpchBytesReturned parameter should read as follows:
  341.  lpcbBytesReturned;    // pointer to DWORD used by DeviceIoControl function 
  342.  
  343.  The description for lpchBytesReturned should read as follows:
  344.  lpcbBytesReturned
  345.   Pointer to a DWORD. This value cannot be NULL. Although the 
  346.   FSCTL_UNLOCK_VOLUME operation produces no output data, and lpvOutBuffer 
  347.   should be NULL, the DeviceIoControl function uses the variable pointed to 
  348.   by lpcbBytesReturned. After the operation, the value of this variable is 
  349.   without meaning.
  350.  
  351.  
  352. GetDeviceCaps
  353.  The descriptions of the nIndex constants PHYSICALWIDTH, PHYSICALHEIGHT, 
  354.  PHYSICALOFFSETX, and PHYSICALOFFSETY should read as follows:
  355.  
  356.  PHYSICALWIDTH
  357.   For printing devices: the width of the physical page, in device units.  For 
  358.   example, a printer set to print at 600 dpi on 8.5"x11" paper has a physical 
  359.   width value of 5100 device units. Note that the physical page is almost 
  360.   always greater than the printable area of the page, and never smaller. 
  361.  
  362.  PHYSICALHEIGHT
  363.   For printing devices: the height of the physical page, in device units. For 
  364.   example, a printer set to print at 600 dpi on 8.5"x11" paper has a physical 
  365.   height value of 6600 device units. Note that the physical page is almost 
  366.   always greater than the printable area of the page, and never smaller. 
  367.  
  368.  PHYSICALOFFSETX
  369.   For printing devices: the distance  from the left edge of the physical page 
  370.   to the left edge of the printable area, in device units. For example, a 
  371.   printer set to print at 600 dpi on 8.5"x11" paper, that cannot print on the 
  372.   leftmost 0.25" of paper, has a horizontal physical offset of 150 device
  373.   units.
  374.  
  375.  PHYSICALOFFSETY
  376.   For printing devices: the distance  from the top edge of the physical page 
  377.   to the top edge of the printable area, in device units. For example, a
  378.   printer set to print at 600 dpi on 8.5"x11" paper, that cannot print on the
  379.   topmost 0.5" of paper, has a vertical physical offset of 300 device units.
  380.  
  381.  The following nIndex constants and descriptions should be removed.
  382.  SCALINGFACTORX
  383.   For printing devices: the scaling factor along the horizontal axis.
  384.  
  385.  SCALINGFACTORY
  386.   For printing devices: the scaling factor along the vertical axis.
  387.  
  388.  
  389. GetICMProfile
  390.  The type, name, and definition of this functionÆs second parameter 
  391.  (DWORD cbName) has been changed to the following:
  392.  LPDWORD  lpcbName, 
  393.  
  394.  The description for the lpcbName parameter should read as follows:
  395.  lpcbName
  396.   Pointer to a DWORD that contains the size, in bytes or characters, of the 
  397.   buffer that receives the filename, depending on whether the ANSI or Unicode 
  398.   version of the function is used.  If the buffer is too small, the function 
  399.   fails, and sets the DWORD pointed to by lpcbName to the minimum required 
  400.   buffer size.
  401.  
  402.  
  403. GetShortPathName 
  404.  The following paragraph should be appended to the Remarks section of the 
  405.  GetShortPathName reference page:
  406.   You can obtain the long name of a file from the short name by calling the 
  407.   FindFirstFile function.  
  408.  
  409.  
  410. GetSystemMetrics
  411.  The following values are defined and should be added to the table for the 
  412.  nIndex parameter in the Parameters section: 
  413.  
  414.  SM_CYDRAG
  415.   Windows 95 only: Width and height, in pixels, of a rectangle centered on a 
  416.   drag point to allow for limited movement of the mouse pointer before a drag 
  417.   operation begins. This allows the user to click and release the mouse button 
  418.   easily without unintentionally starting a drag operation.
  419.  
  420.  SM_CYEDGE
  421.   Windows 95 only: Dimensions of a 3D border, in pixels. These are the 
  422.   counterparts of SM_CXBORDER and SM_CYBORDER.
  423.  
  424.  SM_CYMIN
  425.   Minimum width and height of a window.
  426.  
  427.  
  428. MoveFileEx
  429.  The first paragraph of the reference page for the MoveFileEx function should 
  430.  read as follows:
  431.   The MoveFileEx function renames an existing file or directory. 
  432.  
  433.  The descriptions for lpExistingFileName and lpNewFileName should read as 
  434.  follows:
  435.  lpExistingFileName
  436.   Points to a null-terminated string that names an existing file or directory. 
  437.  
  438.  lpNewFileName
  439.   Points to a null-terminated string that specifies the new name of 
  440.   lpExistingFileName. When moving a file, the destination can be on a different 
  441.   file system or drive. When moving a directory, the destination must be on the 
  442.   same drive. 
  443.   Windows NT only: 
  444.   If dwFlags specifies MOVEFILE_DELAY_UNTIL_REBOOT, lpNewFileName can be NULL. 
  445.   In this case, the function registers the lpExistingFileName file to be 
  446.   deleted when the system reboots.
  447.  
  448.  In the Remarks section of this reference page, the Windows NT only note should 
  449.  read as follows:
  450.  Windows NT only: 
  451.   If the dwFlags parameter specifies MOVEFILE_DELAY_UNTIL_REBOOT, the function 
  452.   stores entries under the following registry key:
  453.     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
  454.     Control\Session Manager\FileRenameOperations
  455.   The system uses these registry entries to complete the operation at reboot.
  456.   For example, on Windows NT, the following code fragment creates registry 
  457.   entries that delete szDstFile and rename szSrcFile to be szDstFile at reboot:
  458.     MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
  459.     MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
  460.  
  461.  Windows 95 only:
  462.   The MOVEFILE_DELAY_UNTIL_REBOOT flag is not supported.  To rename or delete 
  463.   a file at reboot on a Windows 95 system, place an entry in the WININIT.INI 
  464.   file in the Windows directory.  For example, on Windows 95, the following 
  465.   code fragment creates WININIT.INI entries that delete szDstFile and rename 
  466.   szSrcFile to be szDstFile at reboot:
  467.     GetWindowsDirectory(szWinInitFile, uSize);
  468.     lstrcat(szWinInitFile, "\\WININIT.INI");
  469.     WritePrivateProfileString("Rename", "NUL", szDstFile, szWinInitFile);
  470.     WritePrivateProfileString("Rename", szDstFile, szSrcFile, szWinInitFile);
  471.  
  472.  
  473. NetServerEnum  
  474.  The description of the resume_handle parameter should read as follows:
  475.  resume_handle
  476.   Reserved. Set to NULL.
  477.  
  478.  
  479. RegQueryMultipleValues
  480.  The descriptions for the val_list, num_vals, lpValueBuf, and ldwTotsize 
  481.  parameters should read as follows: 
  482.  val_list
  483.   Address of an array of VALENT structures that describe one or more value 
  484.   entries. On input, the ve_valuename member of each structure must contain 
  485.   a pointer to the name of a value to retrieve. The function fails if any of 
  486.   the specified values do not exist in the specified key.
  487.   If the function succeeds, each element of the array contains the information 
  488.   for the specified value. 
  489.  
  490.  num_vals
  491.   Specifies the number of elements in the val_list array. 
  492.  lpValueBuf
  493.   Pointer to a buffer. If the function succeeds, the buffer receives the data 
  494.   for each value. 
  495.   If lpValueBuf is NULL, the function returns success, and ldwTotsize returns 
  496.   the required size, in bytes, of the buffer.
  497.  ldwTotsize
  498.   Pointer to a value that specifies the size, in bytes, of the buffer pointed 
  499.   to by the lpValueBuf parameter. If the function succeeds, ldwTotsize returns 
  500.   the number of bytes copied to the buffer. If the function fails because the 
  501.   buffer is too small, ldwTotsize receives the required size, in bytes.
  502.  
  503.  The Return Value section should read as follows:
  504.  Return Value
  505.   If the function succeeds, the return value is ERROR_SUCCESS. 
  506.   If the function fails, the return value is an error value that can be one of 
  507.   the following:
  508.  
  509.  ERROR_CANTREAD
  510.   RegQueryMultipleValues cannot instantiate or access the provider of the 
  511.   dynamic key. 
  512.  
  513.  ERROR_MORE_DATA
  514.   The buffer pointed to by lpValueBuf was too small. In this case, ldwTotsize 
  515.   returns the required buffer size.
  516.  
  517.  ERROR_TRANSFER_TOO_LONG
  518.   The total length of the requested data (size of the val_list array + 
  519.   ldwTotSize) is more than the system limit of one megabyte.
  520.  
  521.  
  522. RegSetValue 
  523.  The description of the chData parameter should read as follows:
  524.  cbData
  525.   Specifies the length, in bytes, of the string pointed to by the lpData 
  526.   parameter, not including the terminating null character. 
  527.  
  528.  
  529. SystemParametersInfo
  530.  The Meaning column describing the uiAction parameter should include a second 
  531.  paragraph, as follows:
  532.  SPI_SETDRAGWIDTH
  533.   Windows 95 only: Sets the width, in pixels, of the rectangle used to detect 
  534.   the start of a drag operation.
  535.   See SM_CXDRAG and SM_CYDRAG in the table under the nIndex parameter of 
  536.   GetSystemMetrics.
  537.  
  538.  
  539. TranslateAccelerator 
  540.  The first paragraph in the Remarks section of this reference page should 
  541.  read as follows:
  542.   To differentiate the message that this function sends from messages sent 
  543.   by menus or controls, the high-order word of the wParam parameter of the 
  544.   WM_COMMAND_win32_WM_COMMAND or WM_SYSCOMMAND_win32_WM_SYSCOMMAND message 
  545.   contains the value 1. 
  546.  
  547.  
  548. 5.2 Messages
  549. ------------
  550.  
  551. BN_CLICKED  
  552.  The first sentence of the reference page for BN_CLICKED should read as
  553.  follows:
  554.   The BN_CLICKED notification message is sent when the user clicks a button. 
  555.  
  556.  
  557. WM_PAINT
  558.  The syntax for WM_PAINT should read as follows:
  559.  WM_PAINT 
  560.   hdc = (HDC) wParam; // the device context to draw in
  561.  
  562.  The following hdc parameter description should be added:
  563.  hdc
  564.   Identifies the device context to draw in. If this parameter is NULL, use 
  565.   the default DC. This parameter is used by common controls to enable drawing 
  566.   in a DC other than the default DC. Other windows can safely ignore this 
  567.   parameter.
  568.  
  569.  The following paragraph should be added to the end of the Remarks section of 
  570.  the WM_PAINT reference page:
  571.   For common controls, the default WM_PAINT message processing checks the 
  572.   wParam parameter. If wParam is non-NULL, the control assumes that the value 
  573.   is an HDC and paints using that device context.  
  574.  
  575.  
  576.  The following sentence should be added at the end of each WM_PAINT entry in
  577.  the Default Message Processing sections of many of the common controls
  578.  overviews.
  579.   If the wParam parameter is non-NULL, the control assumes that the value is 
  580.   an HDC and paints using that device context.
  581.  
  582.  The overviews affected are:
  583.   Header Controls
  584.   List View Controls
  585.   Progress Bars
  586.   Status Windows
  587.   Tab Controls
  588.   Toolbars
  589.   Trackbars
  590.   Tree-View Controls
  591.   Up-Down Controls
  592.  
  593.  
  594. 5.3 Structures
  595. --------------
  596.  
  597. HD_ITEM
  598.  The description of the fmt member should read as follows:
  599.  fmt
  600.   A set of bit flags that specify the itemÆs format. 
  601.   This member can include one of the following text justification or 
  602.   right-to-left reading order bit flags: 
  603.  
  604.  HDF_CENTER
  605.   Centers the contents of the item.
  606.  
  607.  HDF_LEFT
  608.   Left aligns the contents of the item.
  609.  
  610.  HDF_RIGHT
  611.   Right aligns the contents of the item.
  612.  
  613.  HDF_RTLREADING
  614.   Windows 95 only: Displays text using right-to-left reading order on 
  615.   Hebrew or Arabic systems.
  616.  
  617.  The preceding value is combined with one of the following values:
  618.  
  619.  HDF_BITMAP
  620.   The item displays a bitmap.
  621.  
  622.  HDF_OWNERDRAW
  623.   The owner window of the header control draws the item.
  624.  
  625.  HDF_STRING
  626.   The item displays a string.
  627.  
  628.  You can use the HDF_JUSTIFYMASK mask to isolate the text justification 
  629.  portion of the fmt member.
  630.  
  631.  
  632. PRINTER_INFO_2  
  633.  The descriptions for the StartTime and UntilTime members should read as 
  634.  follows:
  635.  StartTime
  636.   Specifies the earliest time at which the printer will print a job.  
  637.   This value is expressed as minutes elapsed since 12:00 A.M. GMT 
  638.   (Greenwich Mean Time). 
  639.  UntilTime
  640.   Specifies the latest time at which the printer will print a job. 
  641.   This value is expressed as minutes elapsed since 12:00 A.M. GMT 
  642.   (Greenwich Mean Time). 
  643.  
  644.  
  645. RASPPPNBF
  646.  The following paragraph should be appended to the description of the 
  647.  dwNetBiosError member.
  648.  Windows 95: This member is undefined.
  649.  
  650.  
  651. SYSTEM_INFO
  652.  The description of the wProcessorArchitecture should include the following 
  653.  additional flag:
  654.  PROCESSOR_ARCHITECTURE_UNKNOWN 
  655.  
  656.  
  657. 5.4 Tools
  658. ---------
  659.  
  660. Windbg
  661.  It is not possible to use the windbg kernel debugger extensions (i.e.
  662.  windbg -KD) under Windows 95.
  663.  
  664.  It is not possible to attach to a running process with windbg under
  665.  Windows 95.
  666.  
  667.  
  668. LOGGER32
  669.  The LOGGER32 system relies on Z*.DLLs provided in \MSTOOLS\BIN\LOGGER32.
  670.  Not all of the new Windows NT 3.51 entry points have been added to these
  671.  libraries.  Therefore some applications which call the new entry points will
  672.  not work with the LOGGER32 system.  For example, after using apfcvt on
  673.  \MSTOOLS\SAMPLES\FRMWORK\GDIDIB, executing the program will popup an error
  674.  which explains that RegisterClassExA could not be located in zser32.dll.
  675.