[Home]
[Contents]
[Prev]
[Next]
7. Adding Look and Feel with Resources
Any application written for the Windows environment needs an
interface to the user that gives it the "look and feel" of a Windows
application. Various standard mechanisms are available to create this
look and feel, and resources are some of the most important of
these. Resources such as menus and dialog boxes define the
interface to an application.
ResourceStudio contains tools for creating and modifying the
resources you will need. This chapter defines the different types of
resources and explains how to use ResourceStudio to create three
basic resources— menus, dialog boxes, and bitmaps. The final
section describes how to work with the identifiers by which
resources are referenced in the source code.
For more information about ResourceStudio, see the "ResourceStudio
Reference." For more information on resources and programming
with resources, refer to the following texts:
° Programming Windows 3.1 by Charles Petzold
° Microsoft Windows Programmer's Reference, Volume 4:
Resources
What Are Resources?
Resources are structured data objects that define Windows user
interface elements. When you choose a command from a menu or
select options from a dialog box, for example, you are interacting
with an application's resources. Predefined resource types include
bitmaps, cursors, icons, fonts, dialog boxes, menus, accelerators,
strings, and version information.
An application's resources typically are defined in a resource script
file (. rc). Each resource definition contains information and data
relevant to that resource type, as well as the identifier by which the
resource is referenced in the source code. Resource script files are
created and edited with ResourceStudio.
Resources are compiled by a special resource compiler and are
linked to the Windows application separately from the application
code. This modular design enables you to modify the appearance of
an application without changing, or even accessing, the program
source code. Separating resources from code also makes it easier to
use the same resource definitions for multiple applications.
Resource Types
You can create and edit the following resource types in
ResourceStudio:
Bitmaps
Bitmaps are used by an application to display pictures on the screen.
Each bit, or group of bits, in a bitmap represents one pixel of the
image. Bitmaps may be any size you specify.
Cursors
Cursors are small bitmaps, usually 32 x 32 pixels in size, that
represent the mouse pointer. Cursor images may contain areas that
are transparent, allowing the screen background to show through
unused parts of the cursor image. Cursors also may contain inverted
areas in which the screen background color is reversed.
In addition to image information, a cursor resource also specifies the
cursor's hot spot, the exact pixel in the image that maps to the
mouse pointer's screen location.
Icons
Icons are small bitmaps, usually 32 x 32 or 16 x 32 pixels in size, that
represent applications or actions within an application. For example,
when you minimize a Windows application, an icon is displayed on
the screen to represent the minimized program. Like cursors, icons
may contain transparent and inverted areas.
Fonts
A font resource is a collection of up to 256 bitmaps of identical
height. A font typically represents a character set, but it also may be
used for more efficient management of bitmaps not representing
characters.
Dialog boxes
Dialog boxes are windows that communicate information and
receive user input. For example, a dialog box may let the user set
program options, or alert the user to an error and ask how to
proceed. To enter information and make selections in a dialog box, a
user manipulates graphical elements called controls. Commonly used
controls include buttons, check boxes, listboxes, textboxes, and
scroll bars.
A dialog box resource is a complex set of data describing each
control in detail, as well as general properties such as the dialog box
size and location.
Menus
Menus are hierarchical lists of program commands and options.
When a user chooses an item from a menu, either an action is taken
or another menu opens to provide additional commands. A menu
resource identifies the available commands, specifies their individual
styles and attributes, and determines the order in which they appear.
Accelerators
Accelerators are key combinations a user presses to perform a task in
an application and are frequently used as shortcuts to menu choices.
An accelerator resource contains a collection of key combinations
and associated commands.
Strings
Strings are text that an application may use in window titles, menus,
dialog boxes, error messages, and so on. A string resource is a table
of strings.
Version information
The Version Information resource contains version information for
Windows .exe and .dll files, such as version number, file
description, company name, and copyrights.
User-defined resources
User-defined resources contain data that you define and use in your
program in any manner you choose. For example, you may want to
attach a table of data or a block of text to your executable file.
ResourceStudio allows you to include these types of data in your
application's resources and to edit the data in hexadecimal format.
Using ResourceStudio
ResourceStudio can be used to:
° Create new resources in script or binary form
° Edit resources, even those already linked to an
executable or DLL
° Copy resources between files
This section explains how to start ResourceStudio and use it to create
resource files. Detailed steps are provided for creating three basic
resources: menus, dialog boxes, and bitmaps. This section also
outlines several useful features of ResourceStudio, such as drag and
drop.
Starting ResourceStudio
You can start ResourceStudio using any one of several commands
available in the IDDE's Resource menu:
° Edit opens the current project's resource (. rc) file for
editing.
° New opens the current project's resource file. A dialog
box then opens, allowing you to create a new resource.
° Open opens a dialog box from which you can select for
editing any file that contains resources.
° Settings opens ResourceStudio to the Settings dialog
box, but does not load any resource file.
You can also double-click on a resource file in the Project window
to open that file for editing with ResourceStudio.
To create a new resource file, choose Open from the Resource
menu, and in the File Open dialog box click Cancel. Then, double-click
on the ResourceStudio icon on the desktop. The Resource
Studio Shell window opens (Figure 7-1).
[Figure 7-1 Resource Studio Shell window]
The Shell window is ResourceStudio's main window and contains
the main menu and toolbar. From this window, you can create and
open resource files and set ResourceStudio preferences.
Another window that will open as you work is the Property Sheet.
The Property Sheet does not open immediately, but rather opens
when it is first needed. While creating and editing resources, you can
use the Property Sheet to view and edit properties of the currently
selected object. (In this context, "object" refers to either a resource as
a whole or to an element within a resource, such as a dialog box
control or a menu item.) Some types of objects have multiple pages
of properties; to switch between pages, simply click on the tabs.
Creating a new resource file
Resources are contained in resource files. You can use
ResourceStudio to create and edit most types of files that store
Windows resources. For example, you can edit the resources of
executable files even if you do not have the original source code.
To create a new resource file, choose New from the File menu. The
New File dialog box opens (Figure 7-2), listing the types of resource
files that can be created with ResourceStudio.
[Figure 7-2 New File dialog box]
Select the type of resource file you want to create (see Table 7-1).
Note that resource script (. rc) and binary resource (. res) files
usually contain more than one resource. If you are starting to create
resources for a new application, .rc is likely to be your choice of
file type. Resource scripts can contain any type of resource.
Table 7-1 Resource file types
File Type Contains
Resource script (.rc) Any type or combination of resources in
text format
Binary resource (.res) Any type or combination of resources in
binary format
Icon (.ico) A single icon resource in binary format
Cursor (.cur) A single cursor resource in binary format
Bitmap (.bmp) A single bitmap resource in binary format
Font (.fnt) A single font resource in binary format
Resources such as icons can be contained either in individual icon
resource files (. ico) or with other resources in a resource script file.
Some resources, such as dialog boxes and menus, are contained
only in .rc or .res files. Thus, these resource options do not
appear separately in the New File dialog box.
The Platform option in the New File dialog box lets you create
resource files that are compatible with Windows 3. 1, Windows NT,
or Windows 95. You can also elect to create resources for an MFC
application by checking Support MFC.
After selecting a type of resource file, click OK. The window that
opens next depends on the type of file you specified. If you selected
one of the file types containing a single resource (icon, cursor,
bitmap, or font), that resource type's editor opens in a separate
window.
If you selected Resource Script or Binary Resource, the Browser
window opens (Figure 7-3).
[Figure 7-3 Browser window]
The Browser window has three main areas:
° Resource Types: A listbox containing all the resource
types found in the current file.
° Resources: A listbox containing resources of the currently
selected type.
° Preview/ Edit: A display of the selected resource.
Resources also are opened for editing in this area when
created, or by choosing Edit Resource from the File
menu.
When a new resource file is first opened, the Resource Types and
Resources listboxes are both empty.
Note
ResourceStudio has several subprograms, each of
which is used to edit a particular resource type. In
this chapter, for example, you will use the Menu
editor, Dialog box editor, and Bitmap editor. Each
individual resource editor can either be opened in a
separate window or can use the right pane of the
Browser window from which it is launched. The
latter is the default behavior in most circumstances.
Editing a resource file
Besides the resource files listed in the previous section, you can edit
the resources of executable files, even though you don't have the
original source code. By choosing Open from the Shell window's
File menu, you can open files of any type listed in Table 7-1, plus
files of the following types:
° Windows executable (. exe): Bound resources of any
type
° Dynamic-link library (. dll): Bound resources of any
type
Warning Do not modify or save the resources of a running
application. Saving a resource usually changes the
locations of the resources within the file.
Creating a new menu resource
The main interface between the user and a Windows application is
generally the application's menu. The IDDE's Resource menu is a
good example, as shown in Figure 7-4.
[Figure 7-4 A typical menu]
A menu is a hierarchical structure containing pop-up items, menu
items, and separators.
° Pop-up items open a drop-down menu box containing
menu items and additional pop-ups. The top-level items
that are displayed on the window's menu bar are usually
pop-up items. A pop-up item can be thought of as a
container for other items (including other pop-ups).
° Menu items usually constitute the majority of items in
drop-down menus. When a menu item is chosen,
Windows sends a message containing the item's
command identifier to the application.
° Separators are lines that divide the menu into logical
groups.
To create a new menu resource, choose New Menu from the
Resource menu of the Browser window. The Menu editor opens in
the right pane of the Browser window (Figure 7-5).
[Figure 7-5 Menu editor open in Browser window]
Note
While a resource editor is open in the Browser
window, the Browser window's menu is replaced
by that of the particular resource editor. The editor's
toolbar is displayed at the top of the right pane,
below the Browser window's toolbar.
The new menu resource initially contains a single pop-up item and a
menu item. The list of items is indented to show the hierarchy. Pop-up
items are labeled POPUP, menu items are labeled MENUITEM,
and separators are labeled SEPARATOR. The currently selected item
is enclosed in a box; to select any item, click on it. The Property
Sheet shows properties of the selected item.
The Test menu window (Figure 7-6) opens at the same time. You
can test the menu in progress at any time in this window.
[Figure 7-6 Test menu window]
Adding a pop-up item
You can start creating a menu by adding a new pop-up item to the
menu bar. To do so, click on Menu at the head of the item list. Then
choose New Popup from the Menu menu. The new pop-up item is
inserted at the start of the list.
The Property Sheet displays the properties of the new pop-up item
(Figure 7-7). At this point, you probably want to change only the
menu name, which is contained in the Text field.
[Figure 7-7 Properties of a Pop-up menu]
When changing the menu name, you can also assign an activation
key to the menu. Put an ampersand (&) in front of the corresponding
letter in the text.
Adding a menu item
To add one or more menu items to a drop-down menu, first make
sure that the pop-up item is selected. Then choose New Item from
the Menu menu. The new menu item is inserted into the hierarchy.
The Property Sheet displays the properties of the new menu item
(Figure 7-8). You can change the item's text and add an activation
key. As with pop-up items, you add an activation key by typing an
ampersand (&) in front of the corresponding letter in the text.
[Figure 7-8 Properties of a menu Item]
The ID field contains the command ID, which is sent to the
application when the user chooses this menu item. New command
and resource IDs are assigned automatically to new objects when
they are created; you can also change ID names and numerical
values as desired. For more information on resource IDs, see the
section "Managing Resource IDs" later in this chapter.
Adding separators
Separators enhance the readability of menus. To insert a separator
after the currently selected item, choose New Separator from the
Menu menu.
Editing menus
The normal editing operations (cut, copy, paste, and delete) work
with items in a menu. Note that when you perform one of these
operations on a pop-up item, all of the items it contains are affected
as well.
You can rearrange menu items quickly by clicking and dragging. To
move an item, drag the item to the location where it should be
inserted. If you hold down the Control key while dragging, a copy of
the selected item is inserted. The copy is given a new, unique
resource ID.
You can also rearrange menus with the arrow keys. To move an item
up or down within its present level in the hierarchy, press Ctrl+ Up
Arrow or Ctrl+ Down Arrow. To move an item horizontally, use
Ctrl+ Right Arrow or the Ctrl+ Left Arrow.
Closing the menu editor
After you have arranged your new menu, close the Menu editor by
choosing Close Editing from the File menu. The Browser window
is updated to show the new resource (Figure 7-9).
[Figure 7-9 Browser window after creating menu resource]
The Resource Types list contains an entry called Menu to show that
you have at least one menu resource. The Resources list contains the
ID of your menu resource. The Preview/ Edit area shows a preview
of the new menu.
The Property Sheet displays the menu resource's ID and memory
options (Figure 7-10).
[Figure 7-10 Properties of a menu resource]
To edit a menu resource, double-click on its ID in the Resource list,
or select the resource and choose Edit Resource or Edit in
Separate Window from the File menu.
Creating menus with accelerators and item help
As you create menus, you usually want to assign accelerator key
combinations and item help strings at the same time. To do so, you
must set up the string and accelerator tables before adding menu
items, as outlined here:
1. Create a string table resource by choosing New String
Table from the Browser window's Resource menu.
2. Close the String Table editor by choosing Close Editing
from the File menu.
3. Create a new accelerator table resource by choosing
New Accelerator Table from the Browser window's
Resource menu.
4. Close the Accelerator Table editor by choosing Close
Editing from the File menu. Note the accelerator table's
resource ID.
5. Create a new menu resource by choosing New Menu
from the Browser window's Resource menu.
6. Make the new menu's resource ID the same as that of the
accelerator table resource. In the Property Sheet, select
the accelerator table resource's ID from the drop-down
list in the ID field. You now can add menu items with
accelerators and item help.
To set a menu item's accelerator, click on the Connect tab in the
Property Sheet, then click on the Next Key. You are prompted to
press the key combination that is used as the accelerator. When you
do so, the accelerator is stored in the associated accelerator table. To
set a menu item's help string, type the string into the Prompt field in
the Property Sheet. The string is automatically placed in the string
table.
To show which key combination is associated with each menu item,
add the accelerator to the item text. For readability, the accelerator is
usually separated from the command name with a tab. For example,
if you want Ctrl+ F to be the accelerator for a command called Find,
enter Find\ tCtrl+ F into the Text field of the menu item's
Property Sheet (Figure 7-11).
[Figure 7-11 Menu item text, showing accelerator]
Simple guidelines for creating menus
When creating a menu, keep in mind the following points:
° Place frequently chosen options near the top of the
menu to make them more accessible to the user.
° Group related options under specific menu titles.
° Follow standard conventions to make the application
easier to use.
Windows users are accustomed to certain menu arrangements. For
example, the File menu is usually the first menu in the menu bar
and contains commands such as New, Open, and Save. You can
choose commands from the Menu menu to quickly create standard
File, Edit, and Help menus.
Creating a new dialog resource
A dialog box is a window that communicates information and
receives user input. It contains graphical elements called "controls."
Figure 7-12 shows a typical dialog box.
[Figure 7-12 A typical dialog box]
The following types of controls can be included in your dialog
boxes:
° Push buttons send command codes to your application
when the user clicks on them. They trigger an immediate
action.
° Check boxes are rectangular buttons that turn options on
or off. Text describing the option is displayed to the left
or right.
° Radio buttons provide a set of options, only one of
which may be selected. They are generally arranged in
logical groups of two or more.
° Edit controls (or textboxes) are rectangular boxes used
for text entry.
° Listboxes contain a list of items, usually in text form. The
user can browse through the list and select one or more
items.
° Comboboxes combine the features of an edit control and
a listbox; they let the user select an item from a list or
type a selection into the textbox.
° Scroll bars let the user specify a numerical option with an
analog control. (Edit controls and listboxes have their
own scroll bars and do not need a stand-alone scroll
bar.)
° Group boxes are rectangular frames with an optional
caption, used to group other controls together visually.
° Static text is used to convey information or to label
controls that do not have captions (such as edit controls).
° Pictures are used for decorative purposes. Picture types
include empty frames, solid boxes, and icons.
° Custom controls are user-defined controls implemented
in a DLL.
° User controls are user-defined controls that are not
implemented in DLLs, or whose implementation is non-standard.
(ResourceStudio treats VBX controls as user
controls.)
° The following Windows 95 controls are supported:
Animate controls, Tab controls, Tree View controls, List
View controls, Hotkey controls, Track Bars, Progress
controls, and Up/ Down controls.
To create a new dialog box resource, choose New Dialog Box from
the Resource menu of the Browser window. The DialogExpress
dialog box opens (Figure 7-13).
[Figure 7-13 DialogExpress dialog box]
DialogExpress gives you several options for simple dialog boxes
that you may use as a starting point for your own dialog box. Select
Standard and click OK. The Dialog editor opens in the right pane of
the Browser window (Figure 7-14).
[Figure 7-14 Dialog editor open in Browser window]
At the same time, the Dialog editor toolbox (Figure 7-15) opens. This
toolbox provides shortcuts to commands in the Tool menu that let
you create the different types of dialog box control.
[Figure 7-15 Dialog editor toolbox]
The Property Sheet shows the General, Styles, and Look properties
of the dialog box (Figure 7-16). You may want to start by changing
the dialog box title.
Type the new title into the Text field of the General properties page.
[Figure 7-16 Properties of a dialog resource]
Adding a push button
Initially, a new Standard dialog has no controls. To create a new
push button:
1. Choose Push Button from the Tool menu or click on
the corresponding icon in the toolbox.
2. Click in the dialog box on the point at which you want
to position the upper-left corner of the new button. Hold
down the left mouse button and drag the cursor. A
rubber-band rectangle appears.
3. Release the left mouse button when the rectangle is the
proper size for the new button. A new push button is
placed in your dialog box (Figure 7-17).
[Figure 7-17 Dialog box resource with new push button]
The new push button is selected and highlighted. You can then
move and resize your new push button control with the mouse.
° To move a control, click and drag it to a new location.
° To resize a control, click and drag one of the eight
"handles" that appear along its edges.
You also may center the selected control in the dialog box. Choose
Vertical or Horizontal from the Center submenu of the Controls
menu.
The Property Sheet lets you modify push button properties (Figure
7-18). To change the button text, for example, change the Text field
to the desired text. As with items in menus, you can set the
activation key of a button or other control by typing an ampersand
(&) before the corresponding letter in the text.
[Figure 7-18 Properties of a push button control]
Adding static text
To add static text to a dialog box (for example, an informational
message), choose Text from the Tool menu or click on the
corresponding icon in the toolbox. Then click in your dialog box
and drag the rubber-band box to the desired size.
The Property Sheet shows the properties of the static text (Figure
7-19). To change the text, edit the Text field. After entering the text,
you can resize the static control to the size of the text by dragging
the handles.
[Figure 7-19 Properties of a static text control]
To center the text within the control, select Center from the drop-down
list in the Align/ Style property. You can center the control
within the dialog box by choosing Horizontal from the Center
submenu of the Controls menu.
A static text control may contain multiple lines of text. While typing
text into the Caption field, press Ctrl+ Enter to start a new line.
Likewise, insert tab characters by pressing Ctrl+ Tab.
Testing the dialog box
You can test your dialog box resource without leaving
ResourceStudio. To open the new dialog box for testing, choose Test
Dialog from the Dialog menu (Figure 7-20).
[Figure 7-20 Testing the new dialog box]
When you are testing the dialog box, ResourceStudio does not
function; you must close the test dialog box by pressing Alt+ F4
before continuing.
Aligning controls
Commands are available to align controls, to space them evenly, and
to make them the same size. The following steps illustrate the three
operations:
1. Add a few odd-sized buttons to your dialog box, using
the procedure described in the section "Adding a push
button" earlier in this chapter. Place them in a horizontal
row.
2. Select all the buttons at once by clicking on one, then
holding down either the Shift or Control key as you click
on the others. You can also choose Select from the Tool
menu and drag a rubber-band box around the controls.
3. Establish one button as the "standard." Hold down
Control and click on this button. The standard button is
highlighted in blue on your screen. Figure 7-21 shows
what your dialog box might look like. In the example,
the button labeled "# 2" has been selected as the
standard.
[Figure 7-21 Multiple selection of controls]
Now you can perform any of the following alignment operations
from the Controls menu:
° To make all the buttons the same size as the standard,
choose Both from the Make Same Size submenu.
° To align the tops of the buttons with the top of the
standard, choose Top from the Align submenu.
° To even out the horizontal spacing between the buttons,
choose Horizontal from the Space Evenly submenu.
You also can move the selected controls as a unit by holding down
the left mouse button and dragging them to a new location.
Closing the dialog box editor
After you finish working with a dialog box, close the Dialog editor
by choosing Close Editing from the File menu. The Browser
window is updated to show the new resource (Figure 7-22).
[Figure 7-22 Browser window after creating dialog box resource]
After creating a dialog box resource, you can use ClassExpress to
create a corresponding dialog box class, set up the class's message
map, and implement dynamic data exchange and validation.
ClassExpress can be run directly from the Browser window's File
menu. For further information, see Chapter 18, "More about
ClassExpress," as well as Chapter 13, "Lesson 4: Add Messages with
ClassExpress," and Chapter 14, "Lesson 5: Add a Dialog Box with
ClassExpress."
Creating a new bitmap resource
A bitmap is a picture that may be used for informational or
decorative purposes. The Bitmap editor contains the functionality of
a typical paint program, allowing you to create pictures of any size
in 2, 16, or 256 colors.
To create a new bitmap resource, choose New Bitmap from the
Resource menu of the Browser window. The BitmapExpress dialog
box opens (Figure 7-23).
[Figure 7-23 BitmapExpress dialog box]
BitmapExpress allows you to set the number of colors and the initial
size of the bitmap. If you are creating a bitmap for an MFC toolbar,
you also can specify the number of buttons. For now, accept the
defaults and click OK. The Bitmap editor opens in the right-most
pane of the Browser window (Figure 7-24).
[Figure 7-24 Bitmap editor open in Browser window]
The Bitmap editor window is divided into two panes. You can draw
in either. To change the relative sizes of the panes, click and drag
the bar separating the panes.
The Bitmap editor toolbox (Figure 7-25) also opens. This toolbox
lets you choose graphics tools (also available in the Tool menu), set
foreground and background colors, and select the line width and
background pattern.
[Figure 7-25 Bitmap editor toolbox]
The Property Sheet shows the General and Palette properties of the
bitmap (Figure 7-26). You can page between the two groups of
properties by clicking on the tabs. The File field specifies the bitmap
file; bitmaps are included in resource scripts by reference. If you
want to change the bitmap file's name, type a new name into the
File textbox.
[Figure 7-26 Properties of a bitmap resource]
Changing bitmap size
To change the bitmap size, change the width and height in the
Property Sheet or resize the bitmap directly by dragging one of the
handles along the right and bottom edges of the bitmap.
Selecting colors and patterns
You can select drawing color and patterns from the toolbox in the
following way:
° Foreground color: Click on the color in the color palette
with the left mouse button.
° Background color: Click on the color in the color palette
with the right mouse button.
° Line type: Click in the line type display and select a line
type from the pop-up menu.
° Background pattern: Click in the background pattern
display and select a pattern from the pop-up menu.
° Brush: Click in the brush display and select a paintbrush
or spray brush from the pop-up menu. The menu is only
available when the Paintbrush or Spray brush tool is
selected; it is also available by right-clicking on these
tools.
Drawing tools
The following drawing tools are available in the toolbox or in the
Tool menu:
° Eraser: Removes all or part of the image
° Pen: Draws individual pixels or freehand lines
° Selection tool: Selects a rectangle that may be cut,
copied, flipped, or inverted
° Brush: Paints freehand lines with the selected brush
° Spray brush: Paints patterns of pixels
° Paint can: Floods an area with color
° Line: Draws straight lines
° Eye-dropper: Picks up a color from the image
° Rectangles and ovals: Draw outlines or solid shapes
To select a drawing tool, click on the tool in the toolbox. To use a
tool, click or click and drag (as appropriate) with either the left or
the right mouse button. Tools make use of the current line type and
background pattern whenever possible. Using the right mouse
button to click or click and drag reverses the roles of foreground and
background colors.
Zoom and grid
You can work with an image at normal size or zoom by factors of 2,
4, or 8. To zoom, click in the pane containing the image, then
choose which Zoom command you want from the View menu. You
can set one image at normal size for reference and a second image at
a larger size for easier drawing.
To help finish the details of your image, you can display a pixel grid
in the image. A pixel grid can be displayed only when the zoom
factor is 4 or 8. To show a pixel grid, choose Grid from the View
menu.
Closing the bitmap editor
After you are finished with the bitmap, close the Bitmap editor by
choosing Close Editing from the File menu. The Browser window
is updated to show the new resource (Figure 7-27).
[Figure 7-27 Browser window, after creating bitmap resource]
Useful ResourceStudio features
You will find a number of ResourceStudio features useful as you
create and edit different resources. These include toolbars, the undo
and redo functions, and the dragging and dropping of items.
Toolbars and pop-up menus
ResourceStudio makes extensive use of toolbars. Toolbar icons offer
quick access to frequently used menu items. For a list of toolbar
commands, see the "ResourceStudio Reference."
In many parts of ResourceStudio, clicking with the right mouse
button opens a pop-up menu. The contents of the menu depend on
the item clicked and on the current mode or tool. Pop-up menus are
a convenient way to access commands available from the main
menu.
Undo and redo
In ResourceStudio, you can undo any operation you have performed
or redo any operation you have undone. To undo the previous
operation, choose Undo from the Edit menu or click on the Undo
icon in the toolbar. Notice that the operation that will be undone is
noted within the Undo menu item. If instead you want to redo an
action that you have just undone, choose Redo from the Edit menu.
Operations that you have performed are saved in lists. To set the
number of operations that are saved (and thus that can be undone or
redone), choose Preferences from the Shell window's Edit menu.
Each Browser window and each resource type's editor keeps its own
undo and redo list.
To view a list of stored operations, click the right mouse button on
the Undo or Redo toolbar icon. You can select one or more
operations from the list (see Figure 7-28).
[Figure 7-28 List of stored operations in Bitmap editor]
Clipboard and drag and drop
ResourceStudio supports cut, copy, and paste of resources and of
objects within resources, such as dialog box controls and menu
items.
ResourceStudio also supports drag and drop of all items that can be
cut, copied, and pasted. To move a resource or resource element,
click and drag it to the new location. For example, to move
resources from one file to another, open a Browser window for each
file, then drag the resources from the first file to the second. To copy
rather than move the element, hold down the Control key until you
have released the item.
Managing Resource IDs
Windows programs identify resources by a resource name, which
can be a string or a number. Windows programs also use numbers to
identify commands resulting from menu selections and accelerators
and to identify dialog box controls. The number of identifiers used in
a single application easily can run into the hundreds. One of the
major features of ResourceStudio is its ability to automatically create
and manage resource IDs.
Resource ID field
Many property pages contain an ID field for the current resource or
resource element. There are three types of resource IDs in
ResourceStudio:
° Textual
° Symbolic
° Numeric
Textual IDs
Textual IDs are allowed only for certain resource types. To specify a
textual ID, enclose the text in the ID field in double quotes.
ResourceStudio warns you if you try to assign a textual ID to a
resource type for which it is not allowed.
Symbolic IDs
Symbolic IDs are names that correspond to numbers. By using this
type of ID, you work with names that are meaningful, leaving
ResourceStudio to keep track of the numbers that match the names.
Symbols and their corresponding numbers are saved in the resource
header file as #define statements. Thus the same symbols can be
used to refer to the resources in your application code.
You can assign a symbolic ID either by typing the name into the ID
field or by selecting a pre-existing ID from the drop-down list. If you
enter a new symbol, ResourceStudio automatically assigns a unique
numeric value. If you want to specify the numeric value, follow the
symbolic name with an equal sign and the value (for example,
IDD_ TEST= 451). You can reassign the value of an existing symbol
in the same way.
Numeric IDs
Numeric IDs should not be used in new resource script (. rc) files;
use symbolic IDs instead. If you create a binary resource file (. res),
or edit the resources in an existing .exe or .dll file, you see the
resource IDs as numbers, because the symbolic information is not
saved for these file types. You can assign a numeric ID by typing the
number into the ID field.
Note
When editing resources in .exe or .dll files,
remember that the compiled source code refers to
resources and commands by the numeric (or
textual) ID; reassigning or changing IDs may result
in incorrect behavior.
Automatic creation of resource IDs
ResourceStudio automatically creates a new resource ID every time
one is needed. The new ID is unique within its context: for resource
elements, the ID is unique within the resource and, for resources,
unique within the resource file.
When assigning values to new symbols typed in by the user or
created automatically, ResourceStudio uses different ranges for
various purposes:
° Resource item range (100-1999): Used for resources
within a resource file
° User range (2000-2999): Used for resource IDs created by
the user from within the Resource ID Browser dialog
box (see below)
° Control range (3000-31999): Used by the Dialog editor
for dialog controls
° Command range (32000-65535): Used by menu and
accelerator editors for menu commands
Resource ID browsing
To browse and modify resource IDs, choose Edit Resource IDs
from the File menu.
The Resource ID Browser dialog box opens (Figure 7-29).
[Figure 7-29 Resource ID Browser dialog box]
The upper listbox shows all the symbolic resource IDs in the
resource file. Symbols can be sorted by name, value, or used/ unused
state. Click on an ID to show a list of resources using the ID in the
lower listbox. You can open a resource shown in the lower listbox
by double-clicking on it, or by selecting it and clicking View Usage.
The remaining buttons perform the following functions:
° New: Opens the New Resource ID dialog box. Here
you can create a new symbol and assign a value. By
default, the value is in the User range (2000-2999).
° Delete: Deletes the currently selected symbol. A symbol
may only be deleted if it is not in use.
° Change: Opens the Change Resource ID dialog box.
Here you can change the symbol name or value.
° Renumber: Performs a renumbering operation on all
symbolic IDs. Each symbol is examined and a new value
is assigned based on how it is used. If a symbol is used
by items whose values are usually in different ranges, a
dialog box asks you to decide the range in which to
place the value.