ToDoList — A simple and effective way to keep track of your current tasks
A tree-based task manager with native XML support for custom reporting.
Include File Hierarchy Viewer
A tool to view the include file hierarchy of your source code.
Resource ID Organiser Add-In for Visual C++ 5.0/6.0/.NET
An application/add-in to organise and renumber resource symbo lIDs.
SSBrowser: A Sample Visual SourceSafe Automation
A sample VC++ program for performing Visual SourceSafe operations in your application.
VssReporter 2.0 — A Visual SourceSafe reporting tool for build administrators
A support tool to allow those performing builds to independently determine exactly what source files have been changed and by whom.
VC++7 to VC++6 project converter
This tool automatically converts Visual C++ 7.0 projects back to Visual C++ 6.0 projects.
VSHelper — Visual Studio IDE enhancements
VSHelper adds some usability enhancements to Visual Studio .NET 2003 / 2005.
WTL Helper
Add-in for MS VC++.NET 2003 that helps to insert message handlers for WTL.
ClassWiz: A VS.NET addin that provides a classwizard similar to that in VC++ 6.0
A VS.NET addin that provides a class wizard similar to that in VC++ 6.0.
GUIDGen AddIn for Visual Studio.NET
An Add-In that replaces and extends the GUID Generator component included with Visual Studio. NET.
A better class wizard
How to fix the annoying path problems with the «Add Class» wizard.
NtRegEdit — Native Registry Editor
I wanted to create a registry editor that used the «Native Registry APIs» instead of using the Microsoft Registry APIs in AdvApi32.dll (which is just a wrapper to the Native Registry APIs). There is still dependency to the AdvApi32.dll because of the all the other APIs in it. I basically wrote a class that does this (I guess it is also a wrapper — see picture below). I wanted to create something that would have the same functionality as Microsoft's Registry Editor but with the ability to do a lot more. I liked working with the SDI Framework, and decided to start with that. I also wanted to make it a bit easier to read the registry data, so I decided on color coding. This would make it easier for a user to color the information to their liking, making it easier to read and more user-friendly.
DBdoc: automated CHM documentation for a SQL Server 2000 database
Do you know the Visual Studio .NET capability of extracting — at compile time — some formatted comments (you included in your source code) in the form of XML descriptive files, that you can later process with programs like NDoc in order to produce a CHM documentation of your assemblies and classes? Well, if your answer is «yes», and if you ever felt the lack of a similar feature in the Microsoft SQL Server 2000 suite, then you will easily understand the goal of DBdoc, the tool presented in this article. It arises from the need of producing, in a similar automated way, the documentation for a SQL Server 2000 database, by extracting some properly formatted comments included in the tables, stored procedures, user-defined functions and triggers of the database, and by combining them with some SQL Server metadata in order to produce a collection of descriptive HTML files useful to build the CHM documentation of your database.
Image Viewer Utility
A little utility program that allows you to view the contents of memory bitmaps and device contexts while you are stepping through your drawing code.
Versioning Controlled Build
A Visual Studio add-in that automates the AssemblyVersion control.
K3DSurf: Math for fun
K3DSurf is a program to visualize and manipulate multidimensional surfaces by using Mathematical equations. It's also a «Modeler» for POV-Ray in the area of parametric objects and Isosurfaces.
Control Spy v2.0
Control Spy is a tool that helps developers understand common controls: how to apply styles to them, and how they respond to messages and notifications. Using Control Spy, you can immediately see how different styles affect the behavior and appearance of each control, and also how you can change the state of each control by sending messages.
Two versions of Control Spy are available, one for Comctl32.dll version 5.x and one for Comctl32.dll version 6.0 and later. ControlSpyV6.exe has a built-in application manifest so that it uses the newer, themed controls. ControlSpyV5.exe does not have this manifest and so defaults to the older version.

WTL for MFC Programmers, Part I — ATL GUI Classes
An introduction to WTL programming for MFC developers.
WTL for MFC Programmers, Part II — WTL GUI Base Classes
WTL programming for MFC developers — frame windows.
WTL for MFC Programmers, Part III — Toolbars and Status Bars
The basics of using toolbars and status bars in WTL applications.
WTL for MFC Programmers, Part IV — Dialogs and Controls
Using dialogs and controls in WTL.
WTL for MFC Programmers, Part V — Advanced Dialog UI Classes
Using the new WTL classes that implement advanced dialog UI elements.
WTL for MFC Programmers, Part VI — Hosting ActiveX Controls
A tutorial on hosting ActiveX controls in WTL dialogs.
WTL for MFC Programmers, Part VII — Splitter Windows
A tutorial on using WTL splitter windows and pane containers.
WTL for MFC Programmers, Part VIII — Property Sheets and Wizards
A guide to creating property sheets and wizards in WTL.
WTL for MFC Programmers, Part IX — GDI Classes, Common Dialogs, and Utility Classes
A tutorial on using GDI and common dialogs in WTL.
WTL for MFC Programmers, Part X — Implementing a Drag and Drop Source
A tutorial on using drag and drop in your WTL application.

An MFC extension library to enable DLL plug-in technology for your application using MESSAGE_MAPs
A plug-in architecture which allows you to write plug-in DLLs for your application and extend/modify its functionality.
MFC extension library : A plugin to handle owner drawn menus
Continuation of the Plugin Architecture series.
MFC extension library : Single instance Plug-In
Only one instance of the application can run at any time. When a new instance is started, it will close and set the focus to the first instance. Any new instance command lines will be passed to the already running instance so it can process them.
MFC Extension library : Enhanced print preview plug-in
This plug-in demonstrates a replacement of the standard MFC print preview window with an enhanced version that supports multipage display, switching the page layout between Portrait and Landscape, print setup available in preview mode; also the mouse wheel will work for scrolling pages.

An MFC class to encapsulate the SMTP protocol.
An MFC class to encapsulate the POP3 protocol.
A collection of MFC classes to implement a Web Server.
CScintillaCtrl, CScintillaView & CScintillaDoc
MFC classes to encapsulate the Scintilla edit control.
An MFC class which provides a tree control similar to the left hand side of Windows Explorer.

ClassLib, A C++ class library
After having programmed mostly in C for about 10 years, I decided about a year ago that it was time to start learning C++. Because I was also trying to get to grips with the Win32 API, I decided to combine the two and create my very own class library. The result is what you see here. A library of C++ classes which mostly contain wrappers for Win32 data types etc.
Brainchild, A syntax coloring edit control
Syntax coloring, multi-level undo/redo editor control.

CFilterEdit: Use Regular Expressions to Filter Your Input
The definitive approach to filtering input text. Includes configurable error display.
A class that allows you to display your data for a control as tooltip.
Extended MessageBox class.
Class for view and edit data in Hex, Dec, Bin, Oct, Ascii formats.
A control based on CStatic for displaying HTML-like text formatting elements.
A comprehensive INI file handling class.
Fast HTML syntax highlighting with the Rich Edit control
An article on fast HTML syntax highlighting using a rich edit control (CRichEditCtrl).
Report Generator
A plug-in report generator.
CCustomTabCtrl — MFC Tab Control
An MFC tab control - a clone of the Excel tab sheet control.
Formula Editor
Formula-editor for editing and exporting mathematical content.
CSizingControlBar — a resizable control bar
DevStudio-like docking window.
Views in a Sizeable Docking Control Bar
A fairly simple way to incoporate views into sizing control bars.
CWnd/WTL based HTML List Control with different row heights
This is a CWnd/WTL based list control; it supports basic HTML tags and multiple row heights.
CCalendarCtrl — A simple scrolling calendar class
CCalendarCtrl is a small CWnd-based class that implements a scrolling calendar, and keyboard/mouse support for intuitive navigation and cell selection. Multiselection is possible using Ctrl and Shift, and a cell can contain several items.
XGetopt — A Unix-compatible getopt() for MFC and Win32
XGetopt provides drop-in Unix-style command line processing for Win32 and MFC applications.

A handy tokenizer function using STL
A handy and customizable tokenizer function that works with STL strings.
Fast C++ Delegate
An implementation of the fast C++ delegate which is portable and C++ Standard-compliant.
CDfaRegEx: A DFA Implementation of a Regular Expression Compiler
A complete regular expression compiler.
Fast mathematical expressions parser
Many applications require the parsing of mathematical expressions. The main objective of this project is to provide a fast and easy way of doing this. muParser is an extensible high performance math parser library. It is based on transforming an expression into a bytecode and precalculating constant parts of it.
An extensible math expression parser with plug-ins
Design and code for an extensible, maintainable, robust, and easy to use math parser.
An STL-like bidirectional map
A template container implementing a bidirectional map that blends well with STL.
tree.hh: an STL-like C++ tree class
The tree.hh library for C++ provides an STL-like container class for n-ary trees, templated over the data stored at the nodes. Various types of iterators are provided (post-order, pre-order, and others). Where possible the access methods are compatible with the STL or alternative algorithms are available. The library is available under the terms of the GNU General Public License version 2 or 3.

A guide to MSDN Collection Integration
Integrate your help files with MSDN.
Implementing a Read-Only 'File Open' or 'File Save' Common Dialog
Some interesting customization techniques are presented for making the 'File' common dialogs read-only.
Flicker Free Drawing In MFC
Removing flicker from an MFC application is well-covered territory. You can find the topic addressed in books, and on-line. However, the techniques presented are somewhat complicated and are usually difficult to add to an existing application. One often-presented technique is called double buffering. Double buffering allows the new screen to be drawn in off-screen memory, and then the completed screen is bit-blited back onto the physical screen.
Layout Manager for Dialogs, Formviews, DialogBars and PropertyPages
A framework to provide automatic layout control for dialogs and forms.
Templates and MFC
Templates are a great way of reusing code, unfortunately MFC makes it hard to write MFC friendly template classes.
QuickWin — Turn a console application into a Windows program
Redirect stdin, stdout and stderr into a window.
nFS — File System Within a File
A portable library for emulating a file system within a file.
Bootstrapper for the VC++ 2005 Redists (with MSI 3.1)
A discussion on deployment in Visual C++ 2005, and an amended version of the vcredist_x86.exe that includes MSI 3.1.
Updater is an application which enables the user to check if there is a new version of your application. If there is a new version, the Updater will download the newest version and install it for you. This way, you don't have to write an updater module for your application yourself!
TraceTool 9: The Swiss-Army knife of trace
A C#, C++, Delphi, and Java trace framework and a trace viewer: Tail, outputDebugString, event log, and with Log4J, Log4Net, and Microsoft Enterprise Instrumentation Framework (EIF) support. This comes with full support for Pocket PC development.
COM in plain C
How to create/use COM components in plain C, without MFC, ATL, WTL, or any other framework.
Plot Graphic Library
A library to plot data (lines, maps…) in MFC projects.
LiteZip and LiteUnzip
Easy to use, small-footprint DLLs to let your app create zip archives, and extract the contents of them. Useful for C, C++, VB, and other languages.
Compiling and Integrating Crypto++ into the Microsoft Visual C++ Environment
Avoid Common Pitfalls when Using Crypto++ and VC++.
An AES Encrypting Registry Class
This article presents yet another registry class which encrypts data using AES.
The Complete Guide to C++ Strings, Part I — Win32 Character Encodings
You've undoubtedly seen all these various string types like TCHAR, std::string, BSTR, and so on. And then there are those wacky macros starting with _tcs. And you're staring at the screen thinking «wha?» Well stare no more, this guide will outline the purpose of each string type, show some simple usages, and describe how to convert to other string types when necessary.
The Complete Guide to C++ Strings, Part II — String Wrapper Classes
Since C-style strings can be error-prone and difficult to manage, not to mention a target for hackers looking for buffer overrun bugs, there are lots of string wrapper classes. Unfortunately, it's not always clear which class should be used in some situations, nor how to convert from a C-style string to a wrapper class.
This article covers all the string types in the Win32 API, MFC, STL, WTL, and the Visual C++ runtime library. I will describe the usage of each class, how to construct objects, and how to convert to other classes. Nish has also contributed the section on managed strings and classes in Visual C++ 7.

WTL XP UI sample
This mock-up WTL sample contains a MDI project with some of my XP classes enabled. I've tried to build a small Macro Editor — although much of it is non-functional. However, the main purpose was to show how my classes are used.
Command Bar XP
This is the first version of a Office XP Command Bar. It is still a work in progress. I don't actually have an Office XP available, so I made it look like the VisualStudio .NET version instead. So far the basic stuff is ready: colorful menus, toolbar button painting, context menus, a thin menu frame, dropdown buttons, multipane statusbar, toolbars and a combobox control. The control overrides the existing behaviour of the CCommandBarCtrl and other controls. All menu buttons, tool-buttons and other widgets are custom drawn.
Using WTL's Built-in Dialog Resizing Class
How to use WTL's built-in support for resizable dialogs.
WTL Wizard-style CPropertySheet Resizable View
How to use WTL's CPropertySheet implementation in wizard-style as a resizable view instead of a modal or modeless dialog.
WTL CPropertySheet as a Resizable View
How to use WTL's CPropertySheet implementation as a resizable view instead of a modal or modeless dialog.
PropertyGrid control
A grid control is similar to a normal list control, except that each sub-item is editable. Sub-items can contain text values (for editing), dropdown lists, filename browsers or pretty much any type imaginable.
UI: Become windowless
A windowless user-interface doesn't make use of the native Win32 controls. Instead it custom paints every control and widget on the screen — including labels, buttons, list control, etc. etc. This kind of interface is not new: «Skinning» has been widely accepted for its cool application-look, as seen in Nullsoft's WinAmp and the MS Media Player. But skinning is usually only feasible for small applications hosting a limited number of dialogs. If you're building a large database-driven application, you'll want to have a solid framework to back your dialog design up.
A WTL list control with Windows Vista style item selection
A flexible WTL list control that supports Windows Vista style selection and cell editing.
Owner-drawn context menu in WTL
An article explaining how to create an owner-drawn context menu.
TreeCtrl — A WTL tree control with Windows Vista style item selection
A WTL tree control that supports Windows Vista style selection and multiple selection.

Introduction to wxWidgets
A beginner's tutorial on wxWidgets for cross platform GUI development.

How to find and use Office object model documentation
This article describes the resources and documentation available to you for automating Microsoft Office applications. This information can be applied regardless of the programming language you choose for automating an Office application. This article also illustrates how you can begin writing automation code by stepping you through the documentation to find the information you need to accomplish a specific task through automation.
Как использовать лучшее из .NET в неуправляемом коде на C++
Managed Extensions (управляемые расширения) для C++ позволяют свободно смешивать неуправляемый (native) и управляемый код даже в одном модуле. Ух ты, жизнь прекрасна! Однако компиляция с ключом /clr может иметь нежелательные последствия. Этот ключ навязывает многопоточный режим и отключает некоторые полезные проверки периода выполнения. Он влияет на DEBUG_NEW в MFC, и некоторые классы .NET Framework могут конфликтовать с вашим пространством имен. И что делать, если в устаревшем приложении используется компилятор, не поддерживающий /clr? Есть ли способ воспользоваться Framework без Managed Extensions? Да!
Deployment (C++)
Deployment is the process by which you distribute a finished application or component to be installed on other computers. Deployment is a multi-stage process that starts when an application is created on a developer's computer and ends when it is installed and ready to run on a user's computer.
How To Use CeRapiInvoke()
The remote API (RAPI) CeRapiInvoke() enables you to invoke your routines in the Windows CE device from a desktop application. The routines are implemented in a DLL and the DLL must export those routines. You can use CeRapiInvoke() in two ways: in block mode or in stream mode. This article demonstrates how to use CeRapiInvoke() in both ways.
Pluggable Protocols
Most of us are so accustomed to strings like «http:» that we use them without thinking. We use them with the same nonchalance with which we turn a TV on and off with a remote control. In many cases, we even omit the http prefix when we enter the URL for a Web site we're going to surf. It's so common that you don't even have to bother to type it in.
How to use a dialog template to create an MFC dialog that contains an ActiveX control
It is possible to display a dialog from either a DIALOG resource or from a dialog template in memory. In the latter case, the dialog template is either constructed or loaded into memory and the dialog is created indirectly. Dialogs that contain ActiveX controls are more difficult to create indirectly because they require additional information such as license keys and the initial states of properties. MFC requires that this additional information be provided as a DLGINIT resource. The Visual C++ resource editor creates this DLGINIT resource in the resource (.rc) file for each dialog containing an ActiveX control.
How to accurately detect if an application is theme-enabled?
Describes a function that overcomes the inadequacies of IsAppThemed and IsThemeActive.
VGA demystified — the definitive guide to OzVGA, SE_VGA and everything VGA-related
How does resolution setting work in WM2003SE? What's native/SE VGA? How can I increase font sizes in native VGA? How do I configure the miriad text input fields in OzVGA?
Installation with DPI-Specific Resources
As you are developing applications for new high-resolution Pocket PCs or Smartphones with 192 DPI resolution displays, you may wonder where the new high-resolution bitmaps and resources should go. The simplest solution is to include them in the same EXE alongside the old, low-resolution resources. However, this approach wastes storage space. Device screens only have one resolution, which never changes for that device. Therefore, if the application is deployed to a 96 DPI device, it doesn't need 192 DPI resources — and vice versa.
Applying an update UI notification interface to user-defined controls
I often run into a situation where I want to apply a UI update notification to a user-defined control in the way as it is provided by the MFC for menu items, tool bar buttons and status bar controls. In this case a self-defined message handler is used to properly respond to an UPDATE_COMMAND_UI notification. Unfortunately, MFC does not support this mechanism by default for user-defined controls, e.g. like a push button. Well, there's still a way to manage it. Follow the step by step procedure below to understand the principles what to do. You may want to study the complete context in the source code of the sample.
Vista UAC: The Definitive Guide
When I began this project, I didn't think it would take me two weeks to complete. Well, here I am finally writing the article portion of the whole thing. Don't worry, I took really good notes. I am splitting this article into three major segments: The first segment is a broad overview for those who really don't care about the nitty-gritty details of UAC and just want to get to the good stuff. The second segment gets into the really nasty stuff...for those of you who enjoy information overload. The last segment covers UAC Permanent Links — load multiple elevated DLLs, execute multiple elevated functions, and start multiple processes elevated — all of that with just displaying one UAC dialog from a non-elevated process. And now, without further ado, the article.
Update Command UI Handlers Do Not Work for Menu Attached to a Dialog Box
Changing the state (enable/disable, check/uncheck, change text) of a menu item from its command user-interface (UI) handler does not work correctly if the menu is attached to a dialog box.
Проверка PR и ТИЦ