Win32 API Programming with Visual Basic by Steven Roman Following are the changes made in the 1/00 reprint. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification {15} In the fourth paragraph the second sentence used to read: "These files have the extension EXE or DLL." Now reads: "These files include EXE and DLL files, as well as OCX, DRV and other files." (18) The first line after the section heading "The Basics" used to read: "Here are two basic assumptions about C++ language syntax:" Now reads: "Here are some basic facts about C++ language syntax:" (39) Last paragraph used to read: "raise an API error" Now reads: "raise an error in VB" {49} In the paragraph beginning "Thus, TCHAR and TBYTE" the last phrase used to read: "CHAR, which, in turn, is a synonym for char" Now reads: "char and unsigned char, respectively" <76-77> In the entire section entitled "Converting Between Word Lengths" there were five occurrences of the number "-5". All of these have been changed to the number "-32765". (96) Just before the section head "Dealing with IN Parameters," the sentence that begins "First, let us talk about ..." has been deleted. (96) In the second to last paragraph, the first sentence in this paragraph now reads: "We should also note that the FindWindow function allows one (but not both) of its parameters to be set to the null string which, in Win32, is a null pointer (that is, a pointer that contains the value 0)." {103} In the first line of the first code listing, it used to read: "PTSTR" It now reads: "LPTSTR" <103> "(see Figure 6-8)" has been inserted after the word "lpsz" in the sentence "We create an initial BSTR string buffer for lpsz, say:" <103> At the bottom of the page, the paragraph numbered "2." has been moved to follow Fig 6-8, and the reference to Figure 6-8 has been changed to Figure 6-9. <103> The caption of Figure 6-8 has been changed to read: "The Initial BSTR" <104> Figure 6-9 has been moved to the top of the page. <104> The caption for Figure 6-9 has been changed to read: "The temporary ABSTR" <104> In the paragraph numbered "3." the reference to Figure 6-9 has been changed to a reference to Figure 6-10. <104> In the paragraph numbered "4." the words "As Figure 6-10 shows," at beginning of paragraph have been deleted. <104> The paragraph numbered "4." has been moved to follow after Figure 6-10. {119} In the last paragraph, the sentence used to read: "For instance, the GetSystemDirector..." Now reads: "The functions are defined as follows:" (136) In the first paragraph in the section "A Complete Example," the following sentence has been added to the end of the para: "The GetException function below just returns the symbolic constant from Table 8.1 when given the constant's value." (163) The heading used to read: "Getting a process handle..." Now reads: "A: Getting a process handle..." (166) The heading used to read: "Module Filenames and..." Now reads: "B: Module Filenames and..." (169) The heading used to read: "Getting the Current Process ID" Now reads: "C: Getting the Current Process ID" (169) The heading used to read: "Getting the Process ID from a Window" Now reads: "D: Getting the Process ID from a Window" (170) The heading used to read: "Getting Module names and Handles" Now reads: "E: Getting Module names and Handles" <179> The first paragraph has been replaced by: "Note that, by comparing the memory maps for a process under Windows NT and Windows 95/98, it is possible to see that Windows 95/98 puts the Win32 (and other) system DLLs in a different location than Windows NT. For example, under Windows NT, KERNEL32.DLL is just under the 2GB mark, which is in the area of memory reserved for applications. However, under Windows 95/98, this DLL is at the 3GB mark, in the area of memory reserved for the operating system." (179) The last sentence on the page has been deleted. (180) The first sentence has been replaced with: "The first method is the simplest, but works only if the application has a uniquely identifiable top level window caption that does not change." {184} After Example 11-5, the first sentence of the paragraph used to read: "This DLL has a single, shared long variable, called lUsageCount." Now reads: "This DLL has a single, shared long variable, called giUsageCount." <202> In the first paragraph in section entitled "Mutexes", the words "signaled" and "nonsignalled" were reversed. The paragraph now read: "A mutex is a kernel object that can be used to synchronize threads running is different processes. A mutex may or may not be owned by some thread. If a mutex is owned by a thread, then the mutex is nonsignaled. If the mutex is not owned by any thread, the mutex is signaled. In other words, for a mutex, owned is equivalent to nonsignaled." (242) In Figure 14-1, at the top of the figure under "PE Signature" the two "Ohs" in the boxes are now zeros. (263) The first line used to: "Microsoft Windows" Now reads: "Windows' windows" (317) In last line of first paragraph, the word "processing" is now "processes". {318} In the second to last paragraph, it used to read: "In this case, all windows in the calling process only..." It now reads: "In this case, all windows of the specified class in the calling process only..." {318} In the last paragraph, the third line used to read: "new call" Now reads: "new class" (318) In the last line, it used to read: "existing class" Now reads: "existing window or class" {334} The heading that used to read: "basmRpiHook" Now reads: "basRpiHook"