Update to Code Template add-in for Visual C++ | CodeGuru

Update to Code Template add-in for Visual C++

Introduction Darren Richard’s code template add-in for Visual C++ is great. It provides a way to insert commonly used code fragments into a file merely by clicking a menu item. Furthermore, code fragments can be modified by simply editing a simple text file. After I used it for a while I found some features lacking […]

Written By
CodeGuru Staff
CodeGuru Staff
Mar 28, 1999
4 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

Introduction

Darren Richard’s code template add-in for Visual C++ is great. It provides a
way to insert commonly used code fragments into a file merely by clicking a
menu item. Furthermore, code fragments can be modified by simply editing a
simple text file. After I used it for a while I found some features lacking that I
really needed in order to use the add-in fully. So I modified it. I have
added three new features to the add-in : submenus, keywords, and format specifiers.

This article does not describe how to use the original features of the add-in.
Refer to Darren’s article Code Template add-in for Visual C++ 5.0 for information
on how to use the original add-in.

SubMenus

The add-in now supports submenus. The submenus may be nested arbitrarily deep
although I have not tested more than 2 levels. To ‘declare’ a submenu within the
code fragment file, use the delimiter ‘#[‘ followed by the name of the submenu. You
may then proceed to declare code fragments as you normally would using the ‘#{‘
delimiter. To close the submenu, use the ‘]#’ delimiter.

For example :

#[Comments
#{Header Files#}
#{Source Files#}
]#

The preceding example will create a submenu off the main menu of the add-in. The


submenu will be called

Comments

. The submenu will contain 2 menu items,


Header Files

and

Source Files

. You can use separators within the submenus as


well. I have not tested the submenus beyond 3 levels.

Keywords

Whenever I write the comment header for my files, I like to specify the filename,
date, and the project name. In order to support this, the add-in has been modified
to support keywords. Keywords are substituted for their actual value when the add-in
is copying the code fragment from the template file to the target file. Keywords may
appear anywhere that code can appear. Keywords are delimited by ‘#%’ and ‘%#’. The
following keywords are supported :

DATE – The current date.

EXT_ONLY – The current file’s extension.

FILE – The current file, including extension but not path.

FILENAME_ONLY – The current filename, without extension.

PATH – The path to the current file.

PROJECT – The current project.

TIME – The current time.

For example :

#{Header File
/***********************************
 * File : #%FILE%#
 * Project : #%PROJECT%#
 ***********************************/
#}

The preceding example, when inserted into the target file, will


expand to a comment block with the filename of the target file and the


project it is contained in.

Format Specifiers

The final enhancement that has been made is format specifiers. Format
specifiers work similar to those in ‘C’. They modify the formatting of
the enclosed text. Format specifiers are delimited by ‘#<‘ and ‘#>’.
Each beginning delimiter must be followed by the format specifier, without any
spaces. After the format specifier, and before the ending delimiter, should be
the text to format. The following format specifiers are supported :

U – Uppercases the text.

L – Lowercases the text.

W – Forces the text to be a given width. The width should be specified after the
‘W’ specifier, separated by a space.

The following example should help clear things up :

#{Header File
/***************************************
 * #<W 40 This string will be padded to 40 characters>#
 * #<U This string will be uppercased>#
 * #<L This string will be lowercased>#
 ***************************************/
}#

Format specifiers are processed after the keywords have been expanded. Therefore,
format specifiers can be applied to the results of a keyword expansion.

For example :

#{
#if !defined(#<U #%FILENAME_ONLY%#>#_H_INCLUDED)
#define #<U #%FILENAME_ONLY%#>#_H_INCLUDED
#endif   // Sentry
#}

The preceding example will take the filename of the current file and


uppercase it and then insert it. If the file is called

Addin.h

, for


example, the code will expand to


#if !defined(ADDIN_H_INCLUDED)
#define ADDIN_H_INCLUDED
#endif   // Sentry

Future Work

One feature that is still missing, but that I would like to add when time permits
is the ability to be prompted for information when the code fragment is being
inserted. Then, based on my response, the code fragment will be modified. One
immediate use I see for this is when defining a class. One of the things I put
in my class comment header is the name of the base class. Currently there is no
mechanism to detect this. It would be nice if, instead, the add-in prompted me
for the base class when it was inserting the code fragment. Perhaps I’ll get around
to it soon…

Installation

To install the add-in, do the following :

1. Copy codetempl.dll to any directory you like. If you insert the DLL into the Addins directory (under the directory where
MSDEV.EXE resides, then Visual Studio will automatically load it the next time it starts.

2. Start Visual Studio and go to the ‘Tools/Customize’ menu item. Click on the menu. The Customize dialog will appear.

3. In the Customize dialog, go to the ‘Add-ins and Macro Files’ tab. If you placed the DLL in the Addins directory, then
it will show up here, otherwise use the ‘Browse’ button to locate the DLL.

4. Once the DLL is registered in Visual Studio, click the add-in from within the list to show its buttons.

5. Installation is complete. You can now use the add-ins toolbar buttons.

Conclusion

I hope these extensions prove helpful to those of you using the add-in
already. Any feedback is appreciated. If you want to add your own keywords
or format specifiers then you will need to modify the source code. Look in
Format.h and Format.cpp for the approriate code. Keywords are far easier
to add then format specifiers. If you do add any neat new keywords or format
specifiers then please pass them along.

I have provided a sample template file. It uses most of the keywords and
specifiers. It also uses multiple submenus. You can use the template
file as an example to help you create your own.

Download source and add-in – 45 KB

Date Last Updated: March 6, 1999

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.