www.digitalmars.com [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.