Enhanced Windows List Developer Studio Addin

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.

Downloads

Download demo project - 30 Kb
Download source - 43 Kb


Comments

  • merge functionality seen in ms sample wins addin

    Posted by Legacy on 04/17/2002 12:00am

    Originally posted by: jens odborg

    Hi cool addin hook mechanism

    have you considere look in the ms sample addin called "wins"? it have some functionality that you miss
    and you have some not there

    It would also be nice if the window could dock, but I have no clue how to do that

    Reply
  • Please, please use this idea for QuickWatch dialog!!!

    Posted by Legacy on 10/26/2001 12:00am

    Originally posted by: dd

    Hi:

    The idea is great, I like it a lot. Thank you very much. Can you use your implementation and do similar things to QuickWatch dialog? I mean that it cannot be resized. I believe that it would be great to have it resizable, as well as make it to remember the last size/position.

    Thank you!

    Dd.

    Reply
  • more filters?

    Posted by Legacy on 08/28/2001 12:00am

    Originally posted by: Mandalis

    This add-in is very cool.
    But I would like to add more filters, like for example for *.ini, and I can't. How do you do it?
    And moreover, I can't save anything. How is it?

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The rapid evolution of enterprise storage technologies, combined with external forces, like the explosion of big data, can cause Linux® and server administrators to play catch-up when it comes to storage. Running a bunch of monolithic storage devices and proprietary, disconnected technologies forces administrators to spend valuable time creating and managing complex solutions. To reduce complexity and enable rapid deployment of new technologies and applications, server administrators need a single open …

  • The impact of a data loss event can be significant. Real-time data is essential to remaining competitive. Many companies can no longer afford to rely on a truck arriving each day to take backup tapes offsite. For most companies, a cloud backup and recovery solution will eliminate, or significantly reduce, IT resources related to the mundane task of backup and allow your resources to be redeployed to more strategic projects. The cloud - can now be comfortable for you – with 100% recovery from anywhere all …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds