Category : BASIC Source Code
Archive   : APIBK.ZIP
Filename : APIBK.RTF

 
Output of file : APIBK.RTF contained in archive : APIBK.ZIP
{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman CG Times (W1);}{\f1\froman Symbol;}{\f2\fswiss Univers (W1);}{\f3\froman CG Times (WN);}{\f4\fswiss Arial;}{\f5\froman Times New Roman;}}{\colortbl;\red0\green0\blue0;
\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;
\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;\red192\green192\blue192;}{\stylesheet{\s254\sb240 \b\f2\lang1033 \sbasedon0\snext0 heading 1;}{\sb120 \f5\fs20\lang1033 \snext0 Normal;}{\s2\li360\sb120 \f5\fs20\lang1033
\sbasedon0\snext2 inserttext;}{\s3\li720\sb120 \f5\fs20\lang1033 \sbasedon2\snext3 inserttext2;}}{\info{\title Modifications for 3rd printing}{\author Daniel Appleman}{\operator Daniel Appleman}{\creatim\yr1993\mo6\dy14\hr22\min38}
{\revtim\yr1993\mo6\dy14\hr22\min38}{\version2}{\edmins2}{\nofpages1}{\nofwords0}{\nofchars0}{\vern16431}}\paperw12240\paperh15840\margl1152\margr2160\margt1440\margb1440\gutter0 \widowctrl\ftnbj \sectd \linex0\endnhere \pard\plain \qc\sb120
\f5\fs20\lang1033 {\plain \b\f5\lang1033 An open letter to all owners of PC Magazine's Visual Basic Programmer's Guide to the Windows API.
\par }\pard \sb120
\par \pard \sb120 The release of Visual Basic
3.0 coincides with the release of the third printing of this book. It won't surprise you to know that this printing has been revised for the new release of VB. However, since the book is essentially a Windows SDK for Visual Basic programmers, the chang
es for version 3.0 were quite minor (this would not be the case had we been dealing with a major release of Windows).
\par \pard \sb120 In fact, the changes are so minor that it makes no sense for you to go out and buy a new copy of the book. Instead, as a public service a
nd for the sake of good customer relations, this file contains a list of all of the changes and corrections that were incorporated into the third printing.
\par \pard \sb120
This file is based on the corrections as submitted to the publisher. I can't guarantee that they match the 3rd printing exactly (they will be proofing the text for grammer and spelling), but it should be close enough. On the other hand, because of lead t
imes in the publication process, this document contains corrections that are not present in the 3rd
printing (those corrections will also appear in the readme.txt file on the disk that comes with the second printing - so there is no need to pass this document on to people who have the 3rd printing).
\par \pard \sb120 This file may be distributed freely - please pass it around, post it on other BBS systems, etc.
\par \pard \sb120 Thanks to all of you who spotted errors in the book and forwarded them to me. Unfortunately, I did not keep track of who submitted suggestions and corrections, but off the top of my head I do remember Jonathan Zu
ck, Keith Pleas and Ted Young. To the others - I apologize for my forgetfulness (feel free to drop me a note and I'll be sure to mention you in the next set of changes).
\par \pard \sb120
Also, allow me to take this moment to encourage you to take a look at the SpyWorks-VB and CCF-Cursors demo program that comes on the book's disk. SpyWorks-VB is especially useful in conjunction with the book when it comes to taking advantage of advanced
Windows API techniques.
\par \pard \sb120
\par Thank you for your support.
\par
\par Daniel Appleman
\par
\par {\ul Page xxi}{\ul ii
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Header {\b Visual Basic Compatibility} has been renamed {\b Visual Basic Version Compatibility}
\par \pard\plain \sb120 \f5\fs20\lang1033 The last two paragraphs on the page have been replaced with the following text:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 \tab
The orginal printing of this book was released for version 2.0 of Visual Basic. This edition has been revised as needed to be compatible with both Visual Basic 2.0 and Visual Basic 3.0. The changes were quite minor, owing to the fact that while Visual Ba
sic changed, the underlying Windows API has not. All of the sample files and listings have been tested with Visual Basic 3.0, however they are still presented in version 2.0 format in order to ensure compatibility with both versions.
\par \pard \s2\li360\sb120 \tab Some discussion of Visual Basic 1.0 has been left in this revision where appropriate. The listing for the RectPlay example in chapter 4 discusses how to interpret listings for version 1.0 if necessary.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page xxiv}
\par The following sentence is added after the first sentence in the {\i Closing Notes} section.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 I never imagined that it would be as well received by the Visual Basic community as it has been.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 8, 2nd paragraph from the bottom, 4th line
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change C/C++ 7.0 to Visual C++
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 23}
\par Table 2.3, footnote #2
\par \pard \sb120 Change {\b VB 2.0 implements...} to {\b VB 2.0 and later implements...}
\par \pard \sb120 {\ul Page 24
\par }In Sub Command1_Click:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b For x% = 1 to 50} to {\b For x% = 1 to 1000}{\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 This change still makes the same point, but the difference in performance will be more noticable than it would be with only 50 entries.
\par \pard \sb120 {\ul Page 41
\par }The second line of code is:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b If IsWindowVisible= -1 then ....
\par }should be:
\par {\b If IsWindowVisible(hWnd%) = -1 then ....
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 45}
\par Bottom paragraph, 3rd line.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b 376836} to {\b 6029316}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 46}
\par Table 3.4 should be changed as follows:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b Determining Bit Values in a Number (Example &H805C0004)} should be\line {\b Determining Bit Values in a Number (Example &H05C0004)}.
\par \pard\plain \sb120 \f5\fs20\lang1033 Change line 5 as follows:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b 5\tab 5\tab 20-23\tab 22 and 21} should be{\b \line 5\tab 5\tab 20-23\tab 22 and 20}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 56}
\par 2nd paragraph from the bottom, 2nd line.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b form of a Visual Basic 2.0 module...} to {\b form of a Visual Basic module....}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 69}
\par RectPlay Program Listings section, 2nd paragraph, first line, should be:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Program listings appear as saved in Visual Basic version 2.0 ASCII file format which is also compatible with Visual Basic version 3.0.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 70}
\par 2nd paragraph, 1st line
\par \pard \sb120 Change {\b version 2.0 of Visual Basic} to {\b version 2.0 and 3.0 of Visual Basic}
\par \pard \sb120 {\ul Page 80}
\par Add the following entry to table 4.5
\par \trowd \trgaph108\trleft-108 \cellx2031\cellx8405\pard\plain \s2\li360\sb120\intbl \f5\fs20\lang1033 GetUpdateRect\cell \pard \s2\li360\sb120\intbl Determines the portion of a window that needs to be updated\cell \pard\plain \intbl \f5\fs20\lang1033 \row
\pard \sb120 {\ul Page 137
\par }SendMessage, SendMessageBynum and SendMessageBystring functions - VB Declarations section
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 SendMessage, SendMessageBynum and SendMessageBystring all return longs. Change the {\b %} sign at the end of each to {\b &
\par }SendMessageBynum and SendMessageBystring: Both should be aliased to {\b "SendMessage"}, not {\b "PostMessage"}.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 195}
\par The correct declaration for SystemParametersInfoByval is:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b Declare Function SystemParametersInfoByval% Lib "User" Alias "SystemParametersInfo" (ByVal uAction%, ByVal uParam%, ByVal lpvParam As Any, ByVal fuWinIni%)
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 219}
\par 2nd paragraph from the bottom, 5th line.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b ... of how many display pixels are in an inch is made ...} to \line {\b ... of how many display pixels are in a logical inch is made ...}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 243}
\par Add the following entry into the RASTERCAPS table entry:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b RC_FLOODFILL: FloodFill API function is supported.
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 268}
\par \pard \sb120 In table 7.2 change {\b GetObject} to {\b GetObjectAPI}
\par \pard \sb120 (Note: The keyword {\b GetObject} became a reserved word in Visual Basic 3.0. In order to prevent conflict, the book and all sample and declaration files has been modified to use {\b GetObjectAPI} as an alias for the {\b GetObject}
API function in much the way that {\b SetFocusAPI} is an alias for the {\b SetFocus} API function.)
\par \pard \sb120 {\ul Page 307}
\par \pard \sb120 Change the declaration for {\b GetObject} to:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b GetObjectAPI
\par }\pard \s2\li360\sb120 {\b Declare Function GetObjectAPI% Lib "GDI" Alias "GetObject" (ByVal hObject%, ByVal nCount%, ByVal lpObject&)
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 320}
\par \pard \sb120 In the "Use with VB" section for the SetROP2 function, nDrawMode parameter description, change the reference to table {\b 7.9} to {\b 7.8}.
\par \pard \sb120 {\ul Listing 8.4 (page 341)}
\par \pard \sb120 Last line on the page - change {\b GetObject} to {\b GetObj}{\b ectAPI}
\par \pard \sb120 {\ul List 8.9 (pages 349 through 358)}
\par \pard \sb120 Change all references to {\b GetObject} to {\b GetObjectAPI}.
\par \pard \sb120 Change all references to {\b Update} to {\b DoUpdate} ({\i Update became a reserved word in VB 2.0 - the 1st printing disk was corrected, but it did not get into the book. This change can be found in the 1st printing readme.txt file).
\par }\pard \sb120 The indentation in this listing does not match the conventions used in the other sample programs. How this happened is still somewhat of a mystery to me - but with luck it will be fixed for this printing.
\par \pard \sb120 {\ul Page 367
\par }\pard \sb120 Change all references to {\b shellapi.dll} in the ExtractIcon function declaration and description to {\b shell.dll}.{\ul
\par }\pard \sb120 {\ul Page 379
\par }1st paragraph, delete the 3rd sentence and add:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033
You will learn how to create custom checkmarks for checked menus, and how to use any bitmap as a menu entry in place of a string. You will also learn how to customize floating popup menus that can appear anywhere on the screen.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 387}
\par \pard \sb120 In the section {\b Tracked Popup Menus} delete the first sentence and add:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Visual Basic 3.0 provides direct support for floating popup menus to appear anywhere on the screen using the {\b PopupMenu} command. The {\b TrackPopupMenu}
API function can also be used to create popup menus in cases where customization is required or for use with previous versions of Visual Basic.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 388}{\b
\par }Insert a new subheading as follows:{\b
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b Menus, System Menus and Subclassing
\par }\pard \s2\li360\sb120 Subclassing is a technique which allows you to intercept Windows messages going to a form. This technique can be used to detect the WM_COMMAND Windo
ws message directly, eliminating the need to ensure compatibility with a Visual Basic menu structure when using menu API functions. It also allows you to intercept the WM_SYSCOMMAND message which makes it practical to customize an application's system men
u. Refer to the Message Handling section in chapter 17 for more information on subclassing and the tools required to use this powerful technique.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Listing 9.4 (pages 397-405)}
\par \pard \sb120 Change all references to {\b GetObject} to {\b GetObjectAPI}.
\par \pard \sb120 Once again, the indentation does not consistantly follow Basic standards.
\par {\ul Page 397, function GetFlagString$}
\par Change the 3rd through 4th lines in the function to the following:
\par \pard \li360\sb120 {\b If (menuflags% And MF_CHECKED) <>0 Then\line \tab f$ = f$ + "Checked"\line Else\line \tab f$ = f$ + "UnChecked"
\par }\pard \sb120 {\ul
\par }{\ul Page 410, 412, 413,414}
\par \pard \sb120 EnableMenuItem function - {\b wIDEnableItem} parameter\line GetMenuState - {\b wID} parameter\line GetMenuString - {\b wIDItem} parameter\line HiliteMenuItem - {\b wIDHiliteItem} paramater
\par \pard \sb120 In each of these cases, the first line says: "Identifier of the menu entry to check or unch
eck". Modifiy this to match the description of each of these functions. This proves once and for all that the benifits of incorporating the "cut" and "Paste" operation into word processors is not without its drawbacks. Thanks to Ted Young for spotting t
his one.
\par \pard \sb120 {\ul Page 420
\par }Use with VB section - add before the first sentence:
\par \pard \sb120 Visual Basic 3.0 provides direct support for tracked popup menus, however this function remains useful for customized menus and use with earlier versions of Visual Basic.
\par \pard \sb120 {\ul Listing 10.}{\ul 8}
\par \pard \sb120 Change all references to {\b GetObject} to {\b GetObjectAPI}.
\par \pard \sb120 {\ul Listing 11.6}
\par \pard \sb120 Change all references to {\b GetObject} to {\b GetObjectAPI}.
\par \pard \sb120 {\ul Page 545
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Listing 12.4 heading should be: {\b Project Listing File EXECDEMO.MAK
\par }Listing 12.5 heading should be: {\b Form Description for File EXECDEMO.FRM}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Listing 12.6}
\par Correct indentation for Sub File1_Click( )
\par {\ul Page 550}
\par \pard \sb120 The first parameter for function FindExecutable should be {\b lpszFile$}, not {\b lpszFile%.
\par }The library declarations should be {\b shell.dll} not {\b shellapi.dll}.{\ul
\par }\pard \sb120 {\ul Page 565}
\par \pard \sb120 Change the library declaration for function ShellExecute to refer to function {\b shell.dll} instead of {\b shellapi.dll}.{\ul
\par }\pard \sb120 {\ul Page 609
\par }Under the Return Value section for the OpenFile function, the final sentence should read:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b Errors are listed in Table 13.9 earlier in this chapter.
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 610}
\par The following table entry should be added to Tabel 13.12 before the OF_WRITE entry:
\par \trowd \trgaph108\trleft-108 \cellx1887\cellx10080\pard \ri36\sb120\intbl OF_VERIFY\cell \pard \ri36\sb120\intbl
Returns HFILE_ERROR if the time and date of the file specified by the lpFileName$ parameter does not match that specified by the lpReOpenBuff parameter.\cell \pard \intbl \row \pard \sb120 {\ul Page 663}
\par \pard \sb120 In table 15.1, change the second reference to {\b CF_TEXT} to {\b CF_TIFF}.{\ul
\par }\pard \sb120 {\ul Chapter 16
\par }\pard \sb120 Palettes seem to work the same under VB 2.0 and 3.0. The text was clarify to indicate this. Specifically - all indications of Visual Basic 2.0 have been changed to 2.0 & 3.0 as follows:
\par \pard \sb120 Page 691, par 2, line 3\line Page 697, par 2, line 3\line Page 698, section {\b Using Palettee Functions with Visual Basic} line 1\line Page 710, 2nd paragraph from the bottom, last line.\line
Page 731, Function RealizePalette, Use with VB section line 1\line Page 733, Function SelectPalette, Use with VB section line 1\line Page 735, Function SelectPalette, Use with VB section line 1\line
\par \pard \sb120 {\ul Chapter 16, Function reference section}
\par \pard \sb120 For the following functions: {\b DrageAcceptFiles, DragFinish, DragQueryFile} & {\b DragQueryPoint} change the declaration reference from {\b "shellapi.dll"} to {\b "shell.dll"}.
\par \pard \sb120 {\ul Page 711}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 In section Dragging files, line1, change {\b SHELLAPI.DLL} to {\b SHELL.DLL}.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 765
\par }Add the following Comments section to the WM_MENUSELECT command.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 {\b Comments:
\par }{\b When a menu is c}{\b losed, wParam will be zero and the low word of lParam will be &Hffff.
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 801}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 EM_GETPASSWORDCHAR function, Use with VB section. Change reference to {\b Visual Basic 2.0} to be {\b Visual Basic 2.0 & 3.0}{\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 802}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 EM_LIMITTEXT function, Use with VB section. Change reference to {\b Visual Basic 2.0} to be {\b Visual Basic 2.0 & 3.0}{\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 805}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 EM_SETPASSWORDCHAR function, Use with VB section. Change reference to {\b Visual Basic 2.0} to be {\b Visual Basic 2.0 & 3.0}{\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 865}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Use with VB section of agGetControlHwnd function. Change reference to {\b Visual Basic 2.0} to {\b Visual Basic 2.0 and later}.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 870
\par }Documentation is missing for the agVBSetControlFlags function.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 agVBSetControlFlags
\par VB Declaration:
\par \pard\plain \s3\li720\sb120 \f5\fs20\lang1033 Declare Function agVBSetControlFlags& Lib "Apiguide.dll" (ctl As Control, ByVal mask&, ByVal value&)
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Description:
\par \pard\plain \s3\li720\sb120 \f5\fs20\lang1033 This function is used to control the palette status of a control and returns the current status of the control.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Use with VB:
\par \pard\plain \s3\li720\sb120 \f5\fs20\lang1033 Can be used to specify or determine when a control is palette, and whether or not it curr
ently owns a palette. In practice, this is only effective for determining status. You can use this function to set the palette awareness of a control only if you take over all aspects of selecting and realizing palettes. This requires a subclassing tool
capable of detecting both the windows palette messages and the internal Visual Basic palette messages.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Parameters:
\par ctl - A control or form
\par mask - Set a bit in the mask to 1 to indicate that it should be chagned according to the value parameter.
\par value - Indicates the new value for the bits specified by the mask parameter.
\par \pard\plain \s3\li720\sb120 \f5\fs20\lang1033 Bit 0 is set to 1 to indicate that the control owns a palette.\line Bit 1 is set to 1 to indicate that the control is palette aware.
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Returns Value - Long - A value describing the current state of the control.
\par
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 924}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change all references to {\b shellapi.dll} in functions DragAcceptFiles, DragFinish, DragQueryFile and DragQueryPoint to {\b shell.dll}.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 927
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 The first parameter for function FindExecutable should be {\b lpszFile$}, not {\b lpszFile%.
\par }Change the reference to {\b shellapi.dll} in functions ExtractIcon and FindExecutable to {\b shell.dll}{\b\ul .
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 952
\par }\pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change the reference to {\b shellapi.dll} in function ShellExecute and ShellExecuteBynum to {\b shell.dll}{\b\ul .
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 933}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change the declaration of {\b GetObject} to:
\par \pard \s2\li360\sb120 {\b GetObjectAPI\tab 7\tab Declare Function GetObjectAPI% Lib "GDI" Alias "GetObject" ....
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 988}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b BitBit} to {\b BitBlt}{\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1000}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change {\b GetObject} to {\b GetObjectAPI}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1001}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Add a reference to page {\b 80} to function {\b GetUpdateRect}.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1003}
\par The following commands:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Istrcat, Istrcmp, Istrcmpi, Istrcpy, and Istrlen should be
\par lstrcat, lstrcmp, lstrcmpi, lstrcpy and lstrlen (lower case 'L' as the first character){\ul
\par }\pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1014}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Change entry {\b SHELLAPI.DLL} to {\b SHELL.DLL}
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1015}
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Add the following references to the entry for {\b subclassing}: 388, 741-744.
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Page 1020}
\par Yep - part of the index is missing. Here are the missing entries:
\par \pard WM_SYSKEYUP message, 777
\par WM_SYSTEMERROR message, 968
\par WM_TIMECHANGE message, 777-778
\par WM_TIMER message, 968
\par \pard WM_UNDO message, {\b 745}, 778
\par \pard WM_USER message, 968
\par WM_VKEYTOITEM message, 968
\par WM_VSCROLLCLIPBOARD message, 968
\par WM_VSCROLL message, 778-779
\par WM_WINDOWPOSCHANGED message, 779
\par WM_WINDOWPOSCHANGING message, 779-780
\par WM_WININICHANGE message, 780
\par WNDCLASS structure, 901-902
\par WndProc function, 862
\par \pard WNetAddConnection function, {\b 578}, 617
\par WNetCancelConnection function, {\b 578}, 617
\par WNetGetConnection function, {\b 578}, 618
\par \pard word breaks, 960
\par \pard WriteComm function, {\b 635}, 659
\par WritePrivateProfileString functions, {\b 570}, 618
\par WriteProfileString functions, {\b 570}, 619
\par writing to files, {\b 578}, 602, 605, {\b 610}
\par \pard WS_BORDER style bit, 102
\par WS_CAPTION style bit, 102
\par WS_CHILD style bit, 102
\par WS_CLIPCHILDREN style bit, 102
\par WS_CLIPSIBLINGS style bit, 102
\par WS_DISABLED style bit, 102
\par WS_DLGFRAME style bit, 102
\par WS_EX_ACCEPTFILES style bit, 103, 104
\par WS_EX_DLGMODALFRAME style bit, 104
\par WS_EX_NOPARENTNOTIFY style bit, 104
\par WS_EX_TOPMOST style bit, 104
\par WS_EX_TRANSPARENT style bit, 104
\par WS_GROUP style bit, 102
\par WS_HSCROLL style bit, 103
\par WS_MAXIMIZEBOX style bit, 103
\par WS_MAXIMIZE style bit, 103
\par WS_OVERLAPPED style bit, 103
\par WS_POPUP style bit, 103
\par WS_SYSMENU style bit, 103
\par WS_TABSTOP style bit, 103
\par WS_THICKFRAME style bit, 103
\par WS_VISIBLE style bit, 103
\par WS_VSCROLL style bit, 103
\par \pard wvsprintf function, {\b 715}, 736-737
\par \pard Xoff and Xon characters, 626
\par XOR bitmap, 333
\par Yield function, 956
\par zooming windows, 130
\par Z-order, 20
\par
\par \pard \sb120 {\ul APICONST.TXT}
\par The following constants were added:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 '' SendMessage Flag
\par Global Const HWND_BROADCAST = -1
\par '' Network Connection errors
\par Global Const WN_NOT_CONNECTED = &H0030
\par Global Const WN_OPEN_FILES = &H0031
\par Global Const WN_BAD_NETNAME\tab = &H0032
\par Global Const WN_BAD_LOCALNAME = &H0033
\par Global Const WN_ALREADY_CONNECTED\tab = &H0034
\par Global Const WN_DEVICE_ERROR = &H0035
\par Global Const WN_CONNECTION_CLOSED\tab = &H0036
\par \pard\plain \sb120 \f5\fs20\lang1033
\par Add the following after the ''SetWindowPos flags" section:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Global Const SWP_NOSENDCHANGING = &H400
\par Global Const SWP_DEFERERASE = &H2000
\par
\par '' SetWindowPos() hwndInsertAfter values
\par Global Const HWND_TOP = 0
\par Global Const HWND_BOTTOM = 1
\par Global Const HWND_TOPMOST = -1
\par Global Const HWND_NOTOPMOST = -2
\par \pard\plain \sb120 \f5\fs20\lang1033 {\ul Apiguide.bas}
\par Add the following declaration:
\par \pard\plain \s2\li360\sb120 \f5\fs20\lang1033 Declare Function agVBSetControlFlags& Lib "Apiguide.dll" (ctl As Control, ByVal mask&, ByVal value&)
\par \pard \s2\li360\sb120
\par \pard\plain \sb120 \f5\fs20\lang1033 {\plain \b\f4\lang1033 Sample Code Changes
\par }\pard \sb120 The following code changes are listed by file and line number. You may wish to also change the appropriate listing in the book. Other minor changes are listed in the update instructions earlier in this document.
\par \pard \sb120 {\b\ul GetObject}{\b
\par }\pard \sb120 Visual Basic 3.0 uses {\b GetObject} as a reserved word. In order to
accomodate this, the declaration for GetObject has been changed to GetObjectAPI which is aliased to GetObject. The new declaration of GetObject as seen in file apidecs.txt, apidecs.bas and in Appendix E page 933 is:
\par \pard \sb120 Declare Function GetObjectAPI% Lib "GDI" Alias "GetObject" (ByVal hObject%, ByVal nCount%, ByVal lpObject&)
\par \pard \sb120 The command {\b GetObject} must be changed to {\b GetObjectAPI} in the following files:
\par \pard\plain \s2\li360 \f5\fs20\lang1033 Menulook.frm, lines 285, 391
\par Puzzle.frm, line 77
\par Picprint.frm, line 335
\par Stockbms.frm, line 128
\par Textdemo.frm, line 116
\par
\par \pard\plain \sb120 \f5\fs20\lang1033
\par }

  3 Responses to “Category : BASIC Source Code
Archive   : APIBK.ZIP
Filename : APIBK.RTF

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/