Click here to Skip to main content
Click here to Skip to main content

Useful Managers

By , 11 Aug 2001
 

Introduction

"Useful Managers" (UM) is an add-in for Microsoft Visual C++. It is a collection of functions which are not implemented by Microsoft but exist in other tools, or that can decrease the workload for developers. It was made to simplify my own work and the work of my friends. I think it can be useful to other people too. The UM add-in is provided for free, with full source code.

Main features:

  • Tags, File, Project Manager.
  • Find tags, using regular expressions.
  • Save diagram of classes as a picture to a file.
  • Push, Pop bookmarks.
  • Remember the bookmarks set in a file and re-sets them back if the file is opened later in MSDEV.
  • Bookmarks Manager.
  • Windows Manager (with explorer-like menu).
  • Sessions Manager.
  • Favourites Manager.
  • Building only needed projects.
  • Save files when switching tasks.
  • Auto inserting necessary headers.
  • Save MSDEV settings.
  • and much more...
  • That's all only in 85K dll

These screenshots explain features:

The code demonstrates the following techniques:

  • Many (nearly all) techniques that are used in other add-ins on codeproject.com
  • Expansive using of STL, MFC and WTL
  • Providing set of iterators to manipulate MSDEV DocIterator, ProjectIterator and others.
  • Using lexer grammar.
  • Abstract class and implementation for redirecting child process's STDOUT and STDIN.
  • Using Thread, Timers and critical sections.
  • Changing dialogs at run-time.
  • Adding buttons with tooltips to a window caption.
  • Using OCX controls.

Feedback

I am sorry I can't enumerate all the classes here and show how to use them, but I'll answer any questions anybody has about my classes.

Note

Make sure to check out the my web site which is more likely to have updates and betas:
http://www.zmike.net

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Mike Melnikov
Web Developer
Russian Federation Russian Federation
Member
Mike has been programming in C/C++ for 11 years and Visual C++/MFC for 4 years. His background includes pure and applied mathematics, engineering and physics, and he is currently based in Moscow, Russia.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Generalfeature requestmemberDanG28 Aug '01 - 16:19 
michael
 
now that i have excluded the macros it works great.
 
my next request would be to have not only 'parent/child' relationships but also 'uses/used by' relationships.
 
what do you think?
GeneralRe: feature requestmemberMike Melnikov29 Aug '01 - 20:15 
Hello
 
I've thought about it.
 
I can understand (in most cases) type of member variable of a class(struct). And make 'contains/contained by' relationship.
 
I tried to make much better parser for c++ grammar, but I've stoped this project because I am busy. I've started it just to parse functions body and manage defines, typedefs, namespaces and so on. If it would be done, I'll make not only 'uses/used by' but many other relationships.
 
Currently I am working at adding some more "watch variables during debug" capabilities. May be next step will be 'contains/contained by' relationships.
 
But 'uses/used by' - it is a distant future.
 
I am still looking for good ideas/features.
 
Mike
Questionhow to get the Tags List to recognize MacrosmemberDanG16 Aug '01 - 22:25 
i write alot of mfc dll code and have many classes declared similarly to the following:
 
class _UICOMMON_EXP_ CTimeRuler : public CRuler
{
....
};
 
unfortunately the tag list does not handle this well and i end up with a lot of classes called _UICOMMON_EXP_
 
if there is an easy way to fix this (i haven't looked at the source code yet) then i anticipate it being a very handy tool
AnswerRe: how to get the Tags List to recognize MacrosmemberMike Melnikov17 Aug '01 - 4:35 
I am getting this question so often...
I understand that reading of help file is not so interesting as using friendly interface Smile | :)
 
There is no obvious (can you suggest one?) way to do this task. Frown | :-(
 
But there are two easy ways to do it:
 
1. Use popup menu in Tags Managers on any item "_UICOMMON_EXP_" and select "Exclude"->
"Before class" (as described in help file in topic)
than rebuild information (command "Update Tags Info").
 
2. Or open Options->Exclude tags, press , type _UICOMMON_EXP_ and check "before class" (as described in help file in <Options> topic). than rebuld information.
 

GeneralRe: how to get the Tags List to recognize MacrosmemberDanG19 Aug '01 - 14:48 
mike
 
thanks. this solution is fine.
 
nevertheless, an automated solution might still be possible - feel free to correct me if i get anything wrong Wink | ;)
 
consider the following notional class definition:
 
    class/struct EXPORT_MACRO CClass [: public CBaseClass]
 
if a ':' is present the class name immediately preceeds it else the class name is the last item.
 
therefore any items between class/struct and the class name can be considered as macros.
 
now i'm basing this on experience rather than a clear knowledge of the c++ specification. however, it may still be a closer (better?) approximation than the current solution.
 
if i get some time i may well have a go myself, in which case i would appreciate some guidance on which classes i should focus on.
 
DanG

GeneralRe: how to get the Tags List to recognize MacrosmemberMike Melnikov22 Aug '01 - 4:17 
Hello DanG.
 
Your idea is good. I haven't think in this direction. And I'll try to describe, why.
 
I can write regular expression for class declaration and than apply your algorithm. But real parsers push in stack all tags they found and compare types of these tags with our grammar templates. The problem to understand type of a tag from its name. So we need to walk up and down our stack. And sometimes look "forward" for some steps (not all engines allow it). Engine I am using allow stack with fixed depth = 2. I am afraid I can't gather all words after keywords as class, struct and so on. I am not sure that you understand my muddled explanations but I hope understand main problem.
 
2 little examples:
I. templates:
class namespaceName::className1;
class className1::className2;
 
when we found "class A::B;" - A - is it class or namespace?
 
II. templates:
1. if (expression) expression1;
2. if (expression) expression1; else expression2;
 
when we find string "if (true) foo();" that coresponds template(1) should we add found statment or should we know about all other templates add found template(2) that have template(1) inside and continue parsing. If "else" not found we should return back for some steps.

Moreover my algorithm just remove known macros from scan process and we can have such macros anywhere in text. Parser just skip it.
 
I'll repeat again - your suggestion looks like easy to implement but regrettably it is not so.
Nevertheless, thank you for you attention.
 
Mike.
GeneralRe: how to get the Tags List to recognize MacrosmemberDanG28 Aug '01 - 16:18 
thanks for the explanation.
 

GeneralFiles are missingmemberAnonymous12 Aug '01 - 23:03 
I cannot compile, there are several files missing, at least:
- a complete project named BCL with unknown content
- a file named "save.bmp" - ok, I could handle this Smile | :)
Anybody out there who has a working source code version?
The .ru website is down for weeks now :(
GeneralMirror site and new sourcesmemberMike Melnikov13 Aug '01 - 3:08 
Sorry, I've tried to minimize size of archive Frown | :-( .
BCL project - is a new subproject and currently doesn't affect add-in.
 
New source files available at
 
http://zmanagers.chat.ru/
 
Mirror site (located in USA)
 
http://zmanagers.virtualave.net/
 
ZMike
GeneralFixed problem with CPU usage and some bugs - visit web site.sussMike Melnikov23 May '00 - 4:44 
visit http://zmanagers.chat.ru/ for new versio
GeneralRe: Fixed problem with CPU usage and some bugs - visit web site.memberPreston L. Bannister4 Jun '01 - 7:23 
Please note that your website is alternately *very* slow or completely inaccessible most (all?) of the time.
GeneralVery useful, but causes the CPU to max out at 100%sussPeter Kenyon21 May '00 - 17:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 12 Aug 2001
Article Copyright 2000 by Mike Melnikov
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid