Riverblade - ResOrg FAQ


ResOrg FAQ

On this page you will find answers to some common questions about ResOrg.

 

Which operating systems does ResOrg support?

ResOrg has been tested on Windows 2000 SP4, Windows Server 2003 (SP1 and R2), Windows XP (SP2 and SP3), Windows Vista (RTM and SP1/2), Windows Server 2008 and Windows 7. Both x86 and x64 installations are supported.

Please contact us if you have any queries about compatibility with a particular platform or service pack level.

 

Which versions of Visual Studio and Visual C++ is ResOrg compatible with?

The ResOrg plug-in for Visual Studio is compatible with Visual Studio 2002, 2003, 2005, 2008, 2010, 2012 and 2013 (excluding Express Editions, which are unable to load third party plug-ins).

In addition, the standalone ResOrg application is compatible with pretty much all Visual C++ generated projects, including those for Visual C++ 6.0 and eMbedded Visual C++ 4.0.

 

How does ResOrg pick the ranges to use for symbols when renumbering them?

In order to pick sensible ranges, ResOrg prescans the symbols in the resource file, to determine what ranges to use. It does this by dividing symbols into two types: resources (menus, dialogs, controls etc.) and commands, and computing an average value for each, based on the symbol values found. The suggested base values are basically the highest multiple of 1000 below the average value.

In most cases this works well. If however, the existing values of the symbols are widely separated in value, it may pick a value in the middle, which may not be what you expect! If this happens don't worry - simple type in your own values. The next time the file is renumbered, the Wizard will use your new values as the basis of its calculations, and should give a more accurate answer.

 

What happens when I renumber the symbols in a project?

Once the symbol ranges have been calculated (see the previous question for details on how this is done), the following sequence of operations occur:

Firstly, the symbols in the file are sorted into alphabetical order (in memory; nothing is written to the resource symbol file yet!). ResOrg will then allocate a value for each symbol, using the base values determined by the Wizard or specified by the user.

Assuming that the user chooses to save the changes, things get (unnecessarily) interesting. ResOrg has to deal with two issues here:

  1. In some cases (notably bitmaps in dialogs) the symbol IDs are stored in the .rc file as literal values. Thus, changing the symbol value outside of the IDE can break the project.
     
  2. When symbols are changed, Visual C++ may not rebuild the project correctly unless it is cleaned first.

The solutions to these issues are, respectively:

  1. Read and parse the .rc file and modify it. This is not for the faint hearted, but at least the file format is well documented (this operation is planned to be automated in a future version of ResOrg).
     
  2. Determine which projects are dependent upon the modified file and clean them. ResOrg does not yet do this, although we may add this capability at some point if there is sufficient demand.