Acknowledgments

I feel like an Oscar winner. This is my chance to drop a few names, make a
political statement, credit my kids and pets, and reminisce about old times. So let’s start at the top.

Hi, Mom. Hi, Dad. Hi, Chuck and Kandace.

To the people who put up with me when I was writing this book, or when I was learning how to write it: Thanks, Rhonda. Thanks, Sarah. Thanks, Sam. Thanks, Leslie. Thanks, Peggy.

I’ve had some writing mentors. Thanks to Linda Jaech and Stewart Konzen for hiring me when I had little or no qualifications—at least not on paper. Thanks to Bill Johnston for making me a journalist, albeit a bad one. And thanks to Strunk and White.

As for programming mentors, I’d have to go back to Cleon White, the best teacher I ever had. Mr. White crammed as much math as possible into my stubborn head until my junior year in high school, when I decided to become a famous writer instead of an engineer. I’m sorry, Mr. White; every day, I’m sorry.

Then there’s Rich Gillman, who believed I was a programmer when hardly anyone else did, and Gene Apperson, who actually uttered the words falsely attributed later in this book to Joe Hacker: “It doesn’t matter how fast your code is if it doesn’t work.” Thanks to José Oglesby who kept pushing me when I wanted to give up on FORTRAN. On second thought…No, let it stand.

I’d like to recognize the remarkable John Kemeny, who died in 1992 after a long career as administrator, mathemetician, computer language inventor, and most important (to him) teacher. Read the tribute at dartmouth.edu/general/TBasic.html. Thanks also to Basic coinventor Thomas Kurtz. I also give credit to Alan Cooper, sometimes known as the “Father of Visual Basic,” although the language actually had (and has) many parents—perhaps too many. In any case, the current parents should be required to read Cooper’s About Face: The Essentials of User Interface Design (IDG Books 1995).

I want to especially thank two people who saved this second edition from bugs and inaccuracies too horrible to imagine. Marc Young was more than a technical editor; he was an accomplice. He didn’t just find and fix bugs. He cleaned up some of my sloppy first drafts of code, and wrote new code to implement ideas I didn’t have time for (such as changing an Outline to a TreeView in WinWatch). If there is ever a third edition, Marc should be qualified to write it (and he’ll have to because I’ve had enough).

Glenn Hackney served as official devil’s advocate in opposition to this book. Glenn is the author of all the hardcore stuff in the Visual Basic documentation(especially the Component Tools Guide). We had some arguments that would make your ears burn—mostly good natured, but sometimes pushing the bounds of civilized interpersonal communications. He defended the indefensible with brilliant logic and moderated or killed some of my worst flames. He found some howling mistakes that would have left me standing before you naked. Thanks, Glenn, and good luck in your return to real life without computers.

I want to dedicate the Basic part of this book (all the rest of it) to everyone on a certain e-mail alias whose name I’ve been asked not to mention. Microsoft maintains this internal alias for discussion of Visual Basic issues. Most people on the alias are Microsoft employees, many of them working on Microsoft internal tools. Some work for other companies but are on Microsoft e-mail because of contract work or other connections. On this alias, questions come from everyone, but answers tend to come from the same people. Some of the regulars are experts because they wrote parts of Visual Basic or its manuals. Others became experts in the same way you will be an expert if you get the spirit of this book—because they wouldn’t take no for an answer.

To name a few, and mention some of their contributions: Adam Braden,
Anthony Evans, Bruce Prang, Bruce Ramsey, Bryce Ferguson, Curtis Patrick
Koppang, Daniel Rairdan, Dave Thompson, Doug Stewart,Ed Staffin (sub-
classing guru and author of Message Blaster), Geoff White, Jack Bell, Joe Robison, Jon Brichoux, John Walker, Ken Bergmann, Kevin Nixon, Keith
Pleas (lots of cool tricks including error message lookup), Kenneth Lassesen (lots of ideas and a few good arguments), Malcom Stewart (interface casting, console, and more), Mike Blaszczak (for stirring up my thinking on errors), Nick Malik (powers of two table), Paresh Joshi, Peter Wheat, Randy Russell
(system color control), Scott Mason (threads), Simon Bernstein (mci), Troy Cambra, Victor Arteaga, and Zack Stonich (Wiper). This list is specific to the second edition, but many other contributions acknowledged in the first edition survived into the second.

On the Visual Basic team, several people put up with my “negative attitude” and helped me understand the strengths and limitations of object-oriented programming in Basic. Thanks especially to Craig Symonds of the Visual Basic for
Applications team. Matt Curland, graphics and COM wizard extraordinaire,
is responsible for many of the hardest of the hardcore techniques in this book. Thanks also to Alan Carter (type library syntax), Betty Chin (configuration
expert), Brian Lewis (p-code and memory allocation), Drew Fletcher, Doug Franklin (type libraries), Jim Cash (Resize, SetParent, and attitude adjustment), John Norwood, John Burke, Mark Chase, Mike Garlick, Peter Loforte, Rob Copeland, Scott Wiltamuth, Tom Campbell, Steven Lees, Stephen Weatherford, Tim McBride (collections), Tim Patterson, Todd Apley, and Yann Christensen (palettes and compilation).

My folder of e-mail from readers of the first edition contains more than 600 messages. I can only mention a few of those who sent me suggestions, bug reports, new code, arguments, or compliments: Adam Tompkins, Andrea Wyss, Bert Sirkin, Bob O’Brien aka Bob O’Bob, Brad Riegel, Carlos de Miranda, Carlos Alberto Silva, Charles F. Randall, David Wilner, Elliott Whitticar, Eric Smith, Gary Beene, Greg Glass, Holland G.W. Rhodes, Jeff Kilbride, Jim Albea, Larry Linson, Magnus Brorsson, Mark Schlageter, Michael Rickard, Mike McGoodwin, Owen Graupman, Ralf Kretzschmar, Ramon Guerrero, Randy Giese,
Richard Clark, Rob Babcock, Robert Mowery, Ron Stewart, Ron Weaver, Ronald R. Martinsen, Scott D. Killen, Sergei Dumnov, Silvio Lupo, Simon Carter, Stuart Rackham, Tibor Polgar, Tim Pearson, Timothy Koors, Todd A. Canniff, and Vadim Katsman.

At Microsoft Press, thanks to my editor, Pat Wagner, for polishing my prose, pushing me to abandon hopeless ideas so I could finish, and protecting me from my own exaggerations and the PC police. Thanks to all my bosses and bosses’ bosses during this project for leaving me alone: Peggy McCauley, Sally Brunsman, and Kim Field. Thanks to my acquisitions editor, Eric Stroo. Thank you, Jim Fuchs, for setup and for being around to chat about techie stuff even
though it seldom had anything do with Basic. Thanks to artist Michael Victor for Joe Hacker, the author caricature, and lots more. Joel Panchot also helped with artwork. And thanks to many others: proofreaders Patty Masserman,
Devon Musgrave, Richard Carey, Teri Kieffer, Jocelyn Markey, Dan Robb, Roger LeBlanc, Cheryl Penner, Pamela Buitrago, Pat Forgette, and Paula Thurman; typesetting and production experts Peggy Herman, Barb Runyan, Barbara Remmele, Steven Hopster, Anne Kim, Sue Prettyman, Linda Robinson, Paul Vautier, and Dick Carter; and indexer Lynn Armstrong.

Thanks to the translators who converted the first edition into German, French, Spanish, Italian, Russian, Traditional Chinese, and perhaps other languages I haven’t seen yet. This can’t be an easy job. Good luck with the second edition.

And thanks to all you imaginary end-users in Swinen and Cathistan for the opportunity to serve you, however indirectly.

Bruce McKinney