Environment: VC++ 6.0/SP4, W2K, W9X
Introduction
Ever got frustrated with unpredictable behavior of standard Visual Studio "Windows" dialog box? EnhancedWindowList
is an add-in that unobtrusively replaces standard "Windows" dialog and provides extended functionality.
Its features include (see picture above):
- Windows list may be sorted by document name, path, type and status.
- Windows may be filtered by document type. For example, you can select to include into list only
windows with *.C;*.CPP;*.CXX or *.TLI document. - Document path is always shown.
- Size of the dialog window may be changed.
- Current settings (types of windows to be included into list, sorting criteria,
width of columns, sizes and position of the window) are saved and restored while
dialog initialization. - This dialog is actual replacement for standard dialog. You need not assign special
key or toolbar button to invoke it. It will be always shown instead of standard
dialog in spite of way it is invoked.
Installation
- Build the EnhancedWindowList.dsp project (or unzip downloaded EnhancedWindowList_demo.zip)
and copy EnhancedWindowList.dll into Program Files\microsoft visual studio\common\msdev98\addins - Open Tools | Customize | Add-ins and Macro Files and tick "Inpek 7th world EnhancedWindowList".
- Window | Windows… You should have replaced dialog.
Limitations
This add-in most likely would not work in non-english versions of DevStudio. It is due to way it is trying
to determine that standard "Windows" dialog is initializing. See section "How it works" for more details.
Context help is not implemented.
I have only been able to test the add-in in VC6.0. It should work in 5.0, but
if it doesn’t you are welcome to fix it and I will incorporate any changes into
the original.
How it works
On loading, the add-in registers a thread wide window procedure hook, which
it uses to wait for WM_INITDIALOG
on the "Windows" dialog. This technique have been
first used by Simon Capewell in his excellent
DevTrueColor add-in.
We use the existence of a couple of buttons to verify the identity of the dialog. These buttons are
Tile Horizontally and Tile Vertically. We check their IDs and texts to be sure that
we are trying to intercept proper dialog box. The original dialog box is hidden, and the Enhanced
Windows List dialog is created.
Acknowledgements
About the author
Yuri Tkachov is a leading programmer and owner of Inpek 7th world. He is also
an (co-)author of several programming-related books, one of which is rather popular:
"DirectX-Programmierung mit Visual C++",
Addison-Wesley, ISBN 3-8273-1389-9 (in German). He’s been programming in Algol/Assembler/Fortran/C/C++ for 15 years and Visual C++/MFC for 5 years.
His background includes pure and applied mathematics, computational methods and computer graphics.
Click here to visit
Yuri Tkachov’s homepage, which is more likely to have updates and betas of EnhancedWindowList Add-in.