| Introduction | p. xiii |
| Focus and Benefits | p. xiii |
| Style of Presentation | p. xiv |
| Prerequisites | p. xiv |
| Why C++? (And Why with Visual Basic) | p. 1 |
| Why Visual Basic Was Created | p. 2 |
| The Next Step | p. 4 |
| Conclusion | p. 4 |
| Where Do We Start? | p. 5 |
| Visual Studio | p. 5 |
| C++ Runtime Environment | p. 9 |
| Visual C++ Debugging Environment | p. 11 |
| Conclusion | p. 15 |
| How Do You Do That Voodoo That You Do? | p. 17 |
| Compiling | p. 18 |
| Linking | p. 20 |
| C Preprocessor | p. 21 |
| Memory | p. 27 |
| Conclusion | p. 31 |
| C++ 101 | p. 33 |
| Data and Variables | p. 33 |
| Standard Library Functions | p. 38 |
| Program Structure | p. 40 |
| Operators | p. 50 |
| Loops and Control Statements | p. 61 |
| Conclusion | p. 66 |
| It's Not Polite to Point | p. 67 |
| What Is a Pointer? | p. 67 |
| Allocating Memory for Pointers | p. 73 |
| Strings and Char Pointers | p. 75 |
| Conclusion | p. 79 |
| Classes | p. 81 |
| Class Dismissed | p. 81 |
| C++ Classes | p. 88 |
| Inheritance | p. 97 |
| Conclusion | p. 108 |
| Templates | p. 109 |
| Understanding Templates | p. 109 |
| Using a Template Class | p. 115 |
| Conclusion | p. 121 |
| Putting It All Together | p. 123 |
| The Application Requirements | p. 123 |
| The Application Design | p. 123 |
| The fileBreaker.cpp File | p. 157 |
| Conclusion | p. 167 |
| What's the DLL, Man? | p. 169 |
| When a DLL is Not Really a DLL | p. 169 |
| The Basics of DLLs | p. 170 |
| Conclusion | p. 182 |
| Your First Real DLL | p. 183 |
| TrayMan.DLL | p. 183 |
| Creating the TrayMan.DLL Interface | p. 189 |
| Implementing TrayMan.DLL | p. 201 |
| The Client Application | p. 215 |
| Conclusion | p. 223 |
| An ATL Primer | p. 225 |
| COM and Interfaces | p. 225 |
| ATL | p. 228 |
| Conclusion | p. 240 |
| The COM Project | p. 241 |
| Creating the Project | p. 241 |
| Adding the Methods | p. 243 |
| Implementing the Interface | p. 249 |
| Looking at the Client Application | p. 268 |
| Conclusion | p. 276 |
| Advanced Topics | p. 277 |
| The DLLMain Function | p. 277 |
| Multithreading | p. 280 |
| Sharing Data in a DLL | p. 295 |
| Scripting the IDE | p. 297 |
| Conclusion | p. 300 |
| A Thread to Visual Basic | p. 301 |
| Just Because You Can, Doesn't Always Mean thatYou Should | p. 301 |
| A Quick Review of Multithreading | p. 302 |
| The Threading Contract | p. 310 |
| The CreateThread API | p. 312 |
| The CreateThread API Revisited | p. 316 |
| Conclusion | p. 320 |
| Visual Basic Strings: The BSTR Data Type | p. 323 |
| What Is a BSTR? | p. 323 |
| Using_bstr_t | p. 325 |
| Conclusion | p. 333 |
| Article 3. Strings the OLE Way | p. 335 |
| Unicode Versus ANSI | p. 336 |
| What Is a BSTR? | p. 340 |
| The String Class | p. 349 |
| Index | p. 367 |
| Table of Contents provided by Publisher. All Rights Reserved. |