Click Here to Install Silverlight*
United StatesChange|All Microsoft Sites
MSDN
|Developer Centers|Library|Downloads|Code Center|Subscriptions|MSDN Worldwide
Search for


Advanced Search
MSDN Home > MSJ > Back Issues

Microsoft Systems Journal — 1997 Index


Many past issues of MSJ are still available. To order online click here.




December 1997 — Vol 12 No 12



CODE MSJDEC97 (296,844 Bytes)

The COM+ Programming Model Makes it Easy to Write Components in Any Language
COM+ makes the COM programming model more like the programming model of the language you use-you write classes in your favorite language; your tools and the COM+ runtime take care of turning them into COM components and applications.
Mary Kirtland
A Programmer's Perspective on New System DLL Features in Windows NT 5.0, Part II
This month, we look at additions to ADVAPI32, the shell, the common controls, and COM. We'll also examine additions to WININET.DLL and IMAGEHLP.DLL, plus the new Shell Light Weight API and task scheduling interfaces.
Matt Pietrek
Implementing the New Win32 Driver Model for Windows 98 and Windows NT 5.0
Walter Oney finishes our introduction to the Win32 Driver Model by describing the handling of Plug and Play and Power Management I/O requests and demonstrating how a Virtual Device Driver running in Windows 98 can call a WDM driver.
Walter Oney
Editor's Note
Joe Flanigen
Under the Hood
All of the programs that come with Windows NT are compiled to use the Unicode. This month, Matt Pietrek shows you why.
Matt Pietrek
Visual Programmer
Take advantage of scrolling, zooming, datazoom, panning, and autoscroll with IntelliMouse.
George Shepherd and Scot Wingo
Bugslayer
Unfortunately, there are no debuggers yet that will allow you to single-step across machines, or even step from VBScript into a C++ control. Debugging modern applications definitely isn't easy, but help is on the way.
John Robbins
C++ Q&A
Paul Dilascia once again helps us find our way in the land of MFC. In this month's installment, we explore tweaking the new Windows 95 common file dialogs using CFileDialog.
Paul DiLascia



November 1997 — Vol 12 No 11



CODE MSJNOV97 (103,373 Bytes)

A Programmer's Perspective on New System DLL Features in Windows NT 5.0, Part I
Windows NT® 5.0 is on the way and MSJ's got the information you need to know. We'll give you a peek at what to expect from a programmer's perspective, including changes to existing system DLLs, plus information on some proposed new system DLLs.
Matt Pietrek
Surveying the New Win32 Driver Model for Windows 98 and Windows NT 5.0
The Win32® Driver Model-a new feature planned for Windows® 98 and Windows NT 5.0-will simplify the process of writing device drivers. This month, Walter Oney introduces the basic architecture of this new device driver model.
Walter Oney
Object-Oriented Software Development Made Simple with COM+ Runtime Services
COM+ provides runtime services from any programming language or tool, and it lets components work together regardless of implementation. We'll review some major object-oriented development issues and discuss how COM+ will resolve many of them.
Mary Kirtland
Editor's Note
Joe Flanigen
Under the Hood
This month Matt Pietrek writes a program that compares and contrasts Windows NT 4.0 and 5.0 system DLLs.
Matt Pietrek
Win32 Q&A
In a multithreaded application where the user-interface thread is responsible for creating all of the windows and running the message loop to dispatch messages, should you synchronize the worker threads' access to the user-interface windows?
Jeffrey Richter
ActiveX Q&A
This month Don Box debunks common myths and misconceptions that have surrounded COM over the years.
Don Box
C++ Q&A
You have a network app with MFC where multiple copies of the app on different workstations access the same data file. How can you allow the first user that opens the file to get read/write permission, and other users to get the file read-only?
Paul DiLascia



October 1997 — Vol 12 No 10



CODE MSJOCT97 (193,672 Bytes)

Design a Windows NT Service to Exploit Special Operating System Facilities
In Windows NT®, a service is a type of executable that gets special treatment from the operating system. We'll explain how a service application must be designed to take advantage of all the built-in features that Windows NT offers.
Jeffrey Richter
Introducing the Bugslayer: Annihilating Bugs in an Application Near You
In this sneak preview of our newest column, our Bugslayer John Robbins illustrates some common software development bugs you've probably experienced and takes you through the steps of finding and eradicating these pesky vermin.
John Robbins
A Preview of Active Channel and the Active Desktop for Internet Explorer 4.0
Active Desktop technology in Internet Explorer 4.0 weds the Internet to the Windows® shell, creating a uniform experience for working with information whether it resides locally on your computer, on an intranet, or on the Internet.
Nancy Winnick Cluts and Michael Edwards
Editor's Note
Joe Flanigen
Under the Hood
This month we'll take a look at Win32 exceptions specific to the Intel x86 architecture, beginning with the beloved GPF.
Matt Pietrek
Wicked Code
On 256-color display devices, a bitmap containing a wide range of colors looks good only if you create a palette to go with it. But you'll need to know what colors to put in the palette.
Jeff Prosise
Visual Programmer
Using ATL in developing COM objects: The Active Template Library (ATL) takes a load off developers by implementing most of the boilerplate code necessary for developing simple, straightforward COM classes. ATL also serves as a lightweight alternative to MFC for writing ActiveX™ controls.
George Shepherd and Scot Wingo
C++ Q&A
This month: Coolbars revisited—and fixed. Also preventing users from running multiple instances of an application using MFC.
Paul DiLascia



September 1997 — Vol 12 No 9



CODE MSJSEP97 (185,452 Bytes)

Manage Data from Myriad Sources with the Universal Data Access Interfaces
ODBC, RDO, DAO, OLE DB: how do you find your data in this alphabet soup of APIs? Universal Data Access spells out a solution by providing access to your data through a common set of interfaces, regardless of where the data resides.
Stephen Rauch
Extend Developer Studio 97 with Your Own Add-ins, Macros, and Wizards
Why do menial programming work yourself when you can harness the automation objects exposed by Developer Studio to create add-ins, macros, and wizards? These nifty features let you customize Developer Studio like never before.
Steve Zimmerman
Multiple Threads in Visual Basic 5.0, Part II: Writing a Win32 Debugger
Last month we began writing a multithreaded application using Visual Basic 5.0. In this installment, we build upon our previous work with the AddressOf operator to develop VBDebug, a multithreaded debugger for Win32-based applications.
John Robbins
Editor's Note
Joe Flanigen
Under the Hood
By observing calls made to the WININET.DLL during an HTTP transaction, it's possible to create a program that makes similar calls to the WININET APIs. Then you can retrieve data from the internet without the overhead of a browser.
Matt Pietrek
Win32 Q&A
This month Jeffrey Richter takes another look at the GetShortPathName function and the SHGetFileInfo function for converting to long file names. He also covers writing a utility that copies the contents of a ListView control to the clipboard.
Jeffrey Richter
ActiveX Q&A
You can mark your in-process CLSID as ThreadingModel=Apartment or ThreadingModel=Both, but why would you want to mark your CLSID as ThreadingModel=Free? Why does this option exist?
Don Box
C++ Q&A
When you program Windows® with MFC, it's important to have a clear understanding of the difference between the window that lives on the screen and the C++ CWnd object that represents it.
Paul DiLascia



August 1997 — Vol 12 No 8



CODE MSJAUG97 (685,508 Bytes)

Ingenious Ways to Implement Multiple Threads in Visual Basic 5.0, Part I
While the methodology may not seem obvious, it is possible to write multithreaded applications in Visual Basic 5.0 by using the AddressOf operator and some Win32 APIs. We'll explain how these facilities will help you build a thread-safe application.
John Robbins
Fashionable App Designers Agree: The Free Threading Model is What's Hot This Fall
Worried that your app's looking tired wearing last year's threads? The simple, clean lines of the free threading model cover you with only the barest minimum of marshaling calls. Join us as we watch this sassy new multithreading model work the runway.
David Platt
Microsoft Transaction Server Helps You Write Scalable, Distributed Internet Apps
Microsoft Transaction Server (MTS) lets you concentrate on the business logic of your Internet or intranet server app. Our sample program takes you through the fundamental MTS development and deployment steps.
Dave Reed, Tracey Trewin, and Mai-lan Tomsen
Editor's Note
Dave Edson
Under the Hood
This month, a different subset of the IMAGEHLP APIs to show how their powerful features can be implemented with a few simple lines of code.
Matt Pietrek
Wicked Code
Meet a fun little programming technique that will help you write better drag and drop code. The sample application uses MFC, but the technique isn't specific to MFC; it's applicable to any language or development environment.
Jeff Prosise
Visual Programmer
ActiveX™ Designer support in Visual Basic® 5.0: An ActiveX Designer is similar to a regular form in that you use it to create Visual Basic classes. ActiveX Designer-produced classes fit into your application just as form classes do.
George Shepherd and Scot Wingo
C++ Q&A
Implementing flat-style buttons in your toolbar: Believe it or not, to get the flat-style toolbar you see in Internet Explorer, all you have to do is add one line to your code.
Paul DiLascia



July 1997 — Vol 12 No 7



CODE MSJJUL97 (591,882 Bytes)

Create Apps That are Easily Extensible With Our Smart "Snap-Ins" Methodology
Wouldn't it be great if other folks could write extensions for your app? We'll show you how to implement a simple in-process COM server approach we call "snap-ins." It lets you write custom tools for your code-or any app that supports snap-ins.
Steve Zimmerman
More First Aid for the Thread Impaired: Cool Ways to Take Advantage of Multithreading
Multithreading can improve an app's performance, responsiveness, and structure, but it also introduces complexity. We'll show you how to perform feats like responding to network outages gracefully and handling error conditions asynchronously.
Russell Weisz
Dynamic Runtime Objects: Building Applications Your Users Can Modify at Runtime
Dynamic runtime objects help keep big software development projects under control by isolating object dependencies. The result is an application that is well organized and easy to change-even by users, and even at runtime.
Ed Smetak and Jean Caputo
Editor's Note
Dave Edson
Under the Hood
Linkers In-Depth: Get a guided tour through the workings of the Win32 linker.
Matt Pietrek
Win32 Q&A
"Reverse Semaphore" Objects you can find code here to implement something that works the exact opposite of a Win32 semaphore.
Jeffrey Richter
ActiveX/COM
Explicit Constructors, Singleton COM Objects: Use custom interfaces so new class objects can be created and initialized automatically.
Don Box
C++ Q&A
File Open Dialogs and Tab Ordering: Extend the File Open dialog in MFC so you can handle your own custom file extensions.
Paul DiLascia



June 1997 — Vol 12 No 6



CODE MSJJUN97 (330,321 Bytes)

How to Exploit Multiple Monitor Support in Memphis and Windows NT 5.0
Running out of screen space? Boss won't get you that Jumbotron monitor? We'll detail new APIs through which Memphis, the successor to Windows 95, and Windows NT 5.0 will support a virtual desktop made up of multiple monitors.
David Campbell
The Active Template Library Makes Building Compact COM Objects a Joy
The Active Template Library (ATL) provides the foundation for developing the lightweight COM components that today's modern distributed apps require. ATL lets you build small, self-contained apps without the bother of additional runtime DLLs.
Don Box
More Fun with MFC: DIBs, Palettes, Subclassing, and a Gamut of Goodies, Part III
In the conclusion to this series, Paul DiLascia completes his MFC-based Quick View application and explains how to build one of your own. He shows you how to use the IFileViewer interface, and finishes off with some useful debugging tips.
Paul DiLascia
Editor's Note
Dave Edson
Under the Hood
Use our handy MouseWheel.dll to take advantage of the mouse wheel found on the new Microsoft IntelliMouse.
Matt Pietrek
Wicked Code
Add the same smooth scrolling found in Internet Explorer 3.0 to any MFC application by just dropping in the class library presented here.
Jeff Prosise
The Visual Programmer
Learn how you can write add-ins for Microsoft Visual Basic 5.0 to extend the programming environment to suit your needs.
George Shepherd and Scot Wingo
C++ Q&A
Get that fancy caption shading found in Microsoft Office for your MDI applications with our ShadeCap sample code.
Paul DiLascia



May 1997 — Vol 12 No 5



CODE MSJMAY97 (61,634 Bytes)

Introducing Visual Studio 97: A Well-stocked Toolbox for Building Distributed Apps
Visual Studio 97 targets developers and teams that create dynamic, Web-based applications or other distributed apps. Many of the additions to existing Microsoft developer products are aimed at simplifying the creation and use of ActiveX components.
Mary Kirtland
Visual C++ 5.0 Simplifies the Process for Developing and Using COM Objects
Getting MSN™COM objects are becoming more and more important. Many cool Windows features like shell extensions and ActiveX are only available through COM. Visual C++ 5.0 does COM right with new compiler directives and integrated support for ATL.
George Shepherd
Investigating Multilanguage Debugging and the New IDEs of Visual Studio 97
Using the right tool for building an application is one thing, but what about debugging? Visual Studio integrates Visual Basic and Visual C++ so you can code different parts of your application with different languages and debug them simultaneously.
Robert Schmidt
Editor's Note
Dave Edson
Under the Hood
IMAGEHLP.DLL has many useful functions that provide services such as executable file modification, symbol table access, and security certificate manipulation.
Matt Pietrek
Win32 Q&A
Specifying the location of special folders, such as My Documents, without hardcoding the address.
Jeffrey Richter
ActiveX/COM
When creating COM objects with little interface, which will be called by a variety of client languages, should you build inproc servers or outtofproc servers?
Don Box
C++ Q&A
Writing an application that paints textured backgrounds like those in Encarta® and Bookshelf®.
Paul DiLascia



April 1997 — Vol 12 No 4



CODE MSJAPR97 (600,179 Bytes)

The Windows CE SDK: The Tools You Need to Program the Handheld PC
The Win32® API is still the basis for developing apps for Windows® CE devices. But developers targeting this new class of hardware will have to follow special programming guidelines and use new tools such as the Handheld PC Emulator.
Neil Fishman and Jeffrey Richter
Behind the Scenes at MSN 2.0: Architecting an Internet-Based Online Service
Getting MSN™ 2.0 up and working was a huge task involving complex communications among server machines, as well as frugal programming on the client. In this case study, the MSN Development team shares its solutions.
Alok Sinha, Don Clore, and Dale Phurrough
Tiptoe Through the Tooltips With our All-Encompassing ToolTip Programmers' Guide
MFC supports ToolTips in vanilla Application Framework-based programs, but there are plenty of apps that need more support. Find out how you can enhance existing ToolTip classes, roll your own new classes, and add ToolTips to your Web pages.
Roger Jack
Editor's Note
Dave Edson
Under the Hood
Matt Pietrek explains how to implement an exception handler that can be used as the default exception handler for each thread.
Matt Pietrek
Wicked Code
Many programmers find out the hard way that if their application displays files, folders, and other file system objects, it should also support Explorer-like context menus.
Jeff Prosise
Visual Programmer
This month, we'll look at the relationship between COM and Visual J++. As it turns out, you can use Visual J++ to implement COM objects.
Shepherd and Wingo
C++ Q&A
This month brings you up to date on a program called TRACEWIN, first described in the October 1995 column. TRACEWIN displays MFC diagnostic output in a window instead of the debugger.
Paul DiLascia



March 1997 — Vol 12 No 3



CODE MSJMAR97 (337,234 Bytes)

Pay No Attention to the Man Behind the Curtain! Write Your Own C++ AppWizards
Working with MFC makes it easy to build great Windows®-based applications-but only if you really know your way around the library. AppWizard helps you get started by creating skeleton projects jam-packed with boilerplate code.
Walter Oney
Visual Basic 5.0 Relieves the Pain and Discomfort of ActiveX Control Creation, Part II
The distinction between classic and ActiveX events is important-classic events received by your control are opportunities for your code to do something interesting; ActiveX events your control raises provide opportunities for the developer using your control to do something interesting.
Guy Eddon and Henry Eddon
More Fun with MFC: DIBs, Palettes, Subclassing, and a Gamut of Goodies, Part II
Wouldn't it be nice if, instead of copying all that palette code from app to app, there was some way to encapsulate that palette code in a class you could instantiate in your app to just do palettes? Every application is slightly different, but there is a basic pattern to palettes.
Paul DiLascia
Editor's Note
Dave Edson
Under the Hood
Calling DispatchMessage isn't optional if you're using timers. DispatchMessage is needed for both varieties of timer notifications (that is, window messages and callback functions).
Matt Pietrek
Win32 Q&A
To make Windows NT and Windows 95 more robust, every thread is given its own local-input state. However, the Win32 API contains a new function called AttachThreadInput that allows you to connect the local-input states of two threads.
Jeffrey Richter
ActiveX/COM
Marshal By Value
This month Don helps you tackle the problems encountered in integrating old C++ and other pre-COM era code with COM and IDL.
Don Box
C++ Q&A
Paul DiLascia discusses his progam Virgil that implements non-rectangular hot spots and displays tool tips as the user moves the mouse over one of the hot spots.
Paul DiLascia



February 1997 — Vol 12 No 2



CODE MSJFEB97 (216,058 Bytes)

Give ActiveX-based Web Pages a Boost with the Apartment Threading Model
Starting with Internet Explorer 3.0, ActiveX™ controls have been enriching Web pages. By following three simple rules, you can make sure your controls conform to the apartment threading model, which drastically boosts Web page performance.
David Platt
Building Multitiered Client/Server Apps with Visual Basic 4.0 Enterprise Edition, Part II
In this installment, Jenny Notestein writes and walks you through the actual Reporting System API code. Follow along as a SQL table turns into an HTML-based report, and issues such as security and optimization are discussed.
Jenny Notestein
Visual Basic 5.0 Relieves the Pain and Discomfort of ActiveX Control Creation
Now that Visual Basic® 5.0 allows developers to crank out ActiveX controls with great ease, it's time to jump onto the bandwagon. Come explore how objects, properties, and methods are tackled in the first part of this series.
Guy Eddon and Henry Eddon
Editor's Note
Dave Edson
Under the Hood
To solve the problem of multiple versions of a DLL in different directories, leading to the wrong DLL being used, Matt Pietrek unveils the Depends utility.
Matt Pietrek
Wicked Code
The author offers CWaitDialog class to simplify the display of a cancel dialog at the outset of a time-consuming operation and to have your application respond to clicks of the Cancel button.
Jeff Prosise
The Visual Programmer
What if you want to expose that IDispatch interface as a dual interface for clients that understand dual interfaces? All it takes is a bit of exploring MFC, learning about Object Description Language (ODL), and your ability to exercise the TextWizard.
George Shepherd and Scot Wingo
C++ Q&A
Is there some easy way I can use C++ to initialize an object when it's first used?
Paul DiLascia



January 1997 — Vol 12 No 1



CODE MSJJAN97 (248,269 Bytes)

More Fun with MFC: DIBs, Palettes, Subclassing, and a Gamut of Reusable Goodies
Writing real-world apps in MFC is never as simple as the sample programs found in the documentation. Paul DiLascia develops a set of reusable MFC classes that are the result of writing a genuine app, and shares them here in the first part of this series.
Paul DiLascia
A Crash Course on the Depths of Win 32® Structured Exception Handling
Sure, you may use _try and _except in your C++ code, but have you ever wondered what's going on under the hood? Matt Pietrek goes where almost no one has gone before, diving into the abyss of SEH and surfacing with a human-readable explanation.
Matt Pietrek
Hid Your Data and Make Objects Responsible for Their Own User Interfaces, Part III
In the conclusion of this series, Allen Holub shows you the actual working sample code for his Forms-based application—one that keeps the data hidden inside the objects and completely conforms to object-oriented programming techniques.
Allen Holub
Editor's Note
Dave Edson
Under the Hood
Matt Pietrek shows how to call NtQueryInformation APIs in order to gain system-level information from WindowsNT.
Matt Pietrek
Win 32 Q&A
Jeffrey Richter describes his own WaitForMultipleExpressions function that works with Windows® 95 and Windows NT® 4.0 or later.
Jeffrey Richter
ActiveX/COM Q&A
Server Lifetime/Threading
Managing the lifetime of a server process in COM can be tricky. Usually you will want your server process to remain running as long as there is at least one object with an outstanding interface pointer held by an external client. Find out this month how to do that successfully and reliably.
Don Box
C++ Q&A
The author uncovers bugs in MFC 4.0 that affect printing and title bar painting.
Paul DiLascia

© 2016 Microsoft Corporation. All rights reserved. Contact Us |Terms of Use |Trademarks |Privacy & Cookies
Microsoft