home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pdd.zip
/
Manual.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1998-03-05
|
241KB
|
8,196 lines
ΓòÉΓòÉΓòÉ 1. Trademarks ΓòÉΓòÉΓòÉ
The following are trademarks of the IBM Corporation.
CUA
Common User Access
IBM
IBM C/2
IBM C Set++
IBM VisualAge C++
Operating System/2
OS/2
Presentation Manager
SAA
Systems Application Architecture
Workplace Shell
The following are trademarks of the Prominare Inc.
Prominare
The following are trademarks of the Borland International Inc.
Borland
The following are trademarks of the WATCOM International Inc.
WATCOM
WATCOM C/C++32
ΓòÉΓòÉΓòÉ 2. Copyright ΓòÉΓòÉΓòÉ
Copyright (c) 1989-1998 Prominare Inc. All Rights Reserved.
ΓòÉΓòÉΓòÉ 3. section one - Installation ΓòÉΓòÉΓòÉ
This sections explains how to install Prominare Designer and how to begin using
it to create and maintain graphical user interface applications.
Prominare Designer is a full functioning professional visual design tool
specifically designed to fit the needs of a professional programmer using the
OS/2 Presentation Manager environment. Not only does it allow you to visually
design your graphical user interface, it can also create the underlying source
code.
ΓòÉΓòÉΓòÉ 3.1. Installation ΓòÉΓòÉΓòÉ
To install Prominare Designer onto the hard disk of your computer, place the
first package diskette in Drive A:, start an OS/2 command prompt session, and
type the following:
a: <ΓöÿENTER
install <ΓöÿENTER
The installation program first displays the welcome panel.
It then displays the dialogue for the source drive from which the program files
will be read. If you wish, you can change the default to another diskette
drive.
After you press the <ΓöÿENTER key or click the mouse pointer on the Continue push
button, the User Registration dialogue where you enter your name and the name
of the company you work for appears.
Again, press the <ΓöÿENTER key or click the mouse pointer on the Continue push
button. This displays the Target Directories dialogue, in which you indicate
where to place the Prominare Designer files. The dialogue provides default
locations, which you can change if you wish. These locations are recorded so
that the next time you update the applications, those directories will be
automatically selected.
The entry fields are labeled as shown:
Entry Field Purpose
Application Location where application files will be placed. Default:
C:\PD5
Help Location where help files will be placed. Default: C:\PD5
DLL Location where .DLL files will be placed. If the DLLs
needed by Prominare Designer are placed in the same
directory as the application, the LIBPATH variable within
your CONFIG.SYS does not need to be updated for this
location although it is a good idea to do so. Default:
C:\PD5
Include Location where include header files will be placed. This
should be the location of your normal C include files.
Default: C:\PD5\Include
Library Location where library files will be placed. This should
be the location of your C run-time libraries for OS/2.
Default: C:\PD5\Lib
.INI Location where PDS.INI file will be placed. Default:
C:\PD5
Rules Location where source code rules will be placed. This is
optional; you may have a set of updated rules that you do
not want overwritten. Default: C:\PD5\Rules
Source Location where the sample and PMCX source code is to be
placed. Samples include PMCX controls and usage of
Prominare Designer. This is optional (more than 20% of the
space required for full installation is for the source
code samples). Default: C:\PD5\Source
ΓòÉΓòÉΓòÉ 3.2. Previous version ΓòÉΓòÉΓòÉ
If you have previously installed Prominare Designer and are installing this
version on the same level of operating system (i.e., the same operating system
from which you run the current Prominare Designer), the entry fields will
contain the location where the previous version was installed. Also, if the
directories are different, the installation process can copy the existing
PDS.INI file containing your current setup to the directory where you are
installing this version. If you are using the OS/2 Boot Manager and installing
to a different level of the operating system, previous paths are not displayed.
However, this does not preclude the file PDS.INI from being copied from its old
location to the new one specified.
ΓòÉΓòÉΓòÉ 3.3. Target directories ΓòÉΓòÉΓòÉ
From the Target Directories dialogue, you can create a program folder
containing Prominare Designer by selecting the Create new folder option. If a
folder already exists, the Prominare Designer icon will be placed in it.
Once you have finished entering or changing the destinations for the Prominare
Designer files, click on the Continue push button or press the <ΓöÿENTER key to
begin installation. The installation progress window displays the source and
destination of the files as they are copied. If a path cannot fit completely
within the displayed area, an abbreviated form of the full path is substituted.
Prominare Designer always tries to display the filename that is part of the
path.
The progress of the installation will be displayed through a status indicator
which shows the percent complete. During the process of unpacking and copying
the files to your hard drive, you can complete the online registration. The
online registration can be used in place of the mail-in registration.
The completed online registration form can be faxed to the number provided at
the top of the dialogue using fax software you may have installed, printed and
then faxed to the number. You can also save the information to the OS/2
clipboard and then paste it into a note that you can send to the e-mail address
provided below the fax number. Alternately, you can save the information to a
text file which is then placed within an e-mail note. When all files are copied
from a diskette, a message appears requesting the next disk. When all files are
copied to your system, the installation program checks your CONFIG.SYS file to
see if it needs to be updated for the location of the new files. If the
locations within PATH, LIBPATH, DPATH or HELP are incorrect, the Update
CONFIG.SYS dialogue appears.
This dialogue allows you to specify how the configuration information is
updated. The installation program then updates the CONFIG.SYS file, ensuring
that the locations are correct. Select the CONFIG.SYS file option in the Save
changes to group. When you select File named CONFIG.NEW, you must transfer the
changes from this file to CONFIG.SYS manually, otherwise Prominare Designer may
not operate correctly.
Once the CONFIG.SYS file is updated, the Reboot Advice dialogue appears
reminding you to reboot your machine. This is necessary because the DLLs needed
by Prominare Designer have been placed in a location other than the directory
of the application.
The Reboot Advice dialogue is informational and is not displayed if you place
the updated configuration information within the CONFIG.NEW file. Instead of
the Reboot Advice dialogue, the Revice CONFIG.SYS dialogue advises you to
update your CONFIG.SYS file. If you fail to do so, Prominare Designer will not
be able to find required files, specifically the DLLs. Before you exit
installation, this dialogue appears, allowing you to read on-line installation
documentation such as the ReadMe.Doc file.
ΓòÉΓòÉΓòÉ 3.4. How to Begin ΓòÉΓòÉΓòÉ
You can use Prominare Designer immediately after installation. A quick way to
become familiar with the program is to read section two, Using Prominare
Designer. It takes you through the step-by-step process of creating a simple
application.
ΓòÉΓòÉΓòÉ 3.5. Notational Conventions ΓòÉΓòÉΓòÉ
This manual uses the following notational conventions in defining program
usage, revisions, references, etc. and in presenting examples:
Convention Meaning
Bold type Item of special interest, menu item, or program name.
[ ] Option input values
drive: Drive designation
Esc Escape Key
<ΓöÿENTER Enter/return key
OS/2 IBM OS/2 Operating System/2
Operating System OS/2 unless specifically stated
DLL Dynamic-Link Library
dirname Directory name
filename Filename
control Control type such as push button, button, action bar
menu or sub-menu
button 1 Refers to button 1 on the mouse. Generally, the left
mouse button is button 1 unless the buttons have been
swapped through the control panel.
button 2 Refers to button 2 on the mouse. Generally, the
right mouse button is button 2 unless the buttons
have been swapped through the control panel.
shred Equivalent to delete or erase.
text Keyboard input or program display output
ΓòÉΓòÉΓòÉ 4. section two - Using Prominare Designer ΓòÉΓòÉΓòÉ
This section is a step-by-step explanation of how to use Prominare Designer to
design applications.
ΓòÉΓòÉΓòÉ 4.1. Process Outline ΓòÉΓòÉΓòÉ
The process of designing and building an application is fairly straightforward.
It follows the following steps:
Step Process
1 Design application interface and generate resource script file.
2 Add backing code for interface design and build application.
3 Execute initial prototype.
4 Add new elements to application.
5 Add additional backing code for interface design.
6 Rebuild application.
7 Execute new version of application.
Steps 4 through 7 become the general process while the application is under
further development. You can perform steps 4 and 5 at any point, when you add
new functionality to the application through new modules.
ΓòÉΓòÉΓòÉ 4.2. Starting the Process ΓòÉΓòÉΓòÉ
Double click on the Prominare Designer entry in the Prominare Designer folder.
This gets Prominare Designer started on creating the interface for your
application.
ΓòÉΓòÉΓòÉ 4.3. Step 1: Designing the Application ΓòÉΓòÉΓòÉ
To begin your design, select the Start new design option in the Prominare
Designer Startup dialogue. Prominare Designer will not allow you to create
dialogues or windows until a design has been defined. Prominare Designer
Startup dialogue
The New Design dialogue appears, containing preset initial options along with
those for you to complete. In the Basename entry field, enter the basename for
the application, Using. Notice that when you change the focus from the entry
field in the dialogue, Using.H appears in the Include entry field.
Make sure that the OS/2 Warp is selected in the Target OS group box; this
ensures that the correct script and resource conventions are selected.
Click the mouse pointer on the Save push button, informing Prominare Designer
that you are finished defining the project. Prominare Designer then
automatically sets up predefined information, such as program variables, that
will be used within the application. Now you are ready to begin designing the
application.
To use Prominare Designer most effectively, it is best to create the dialogues
before the main program window. This makes it easy to associate the dialogues
with their respective menus. Of course, you can create the main window first,
then the dialogues--and then go back and edit the menu items to add the
associated dialogues. But if you know the dialogues already, it is easier to
create them first.
ΓòÉΓòÉΓòÉ 4.3.1. Creating the Dialogues ΓòÉΓòÉΓòÉ
You will be presented with the New Dialogue/Window dialogue through which you
can create the first dialogue. Select the dialogue type you wish to create. In
this case, select the first item of the second row and then click on the Create
push button.
This displays the Window/Dialogue Styles dialogue, through which you define the
title bar text, ID symbol, and value, window, or dialogue styles.
Make sure that the Type combination box shows Dialogue. In the Relative
combination box, select Window to make the dialogue you are creating relative
to its parent window. The remaining combination boxes can be ignored, as they
are not relevant to the dialogue you are creating. Click in the Text multi-line
entry field and then select the text there by pointing to the first character,
clicking, and dragging the mouse to the right. Once all the text is selected,
press the delete key (as there is no title bar within the dialogue).
Next, click in the ID field and enter DLG_EXAMPLE. Select the value and change
it to 100. Set the style of the dialogue with the Style options group check
boxes so that only the Visible and Dialogue frame check boxes are selected. In
the Function entry field, enter the dialogue procedure name ExampleDlgProc. In
the Filename entry field enter ExampDlg.C.
Finally, click on the Enter push button to create the dialogue frame in the
lower left corner of Prominare Designer above the status window.
You can now move and size the dialogue frame. The suggested size is 145
dialogue units wide (cx) and 80 dialogue units high (cy). To do this, first
click on the dialogue and then place the mouse pointer on the top right-hand
corner of the dialogue sizing frame and, when the mouse pointer changes from an
arrow shape to the 45 double-headed arrow shape, press button 1 on the mouse.
While keeping the mouse button depressed, drag the sizing frame to the top
right of the Prominare Designer window until you achieve the desired size.
Select the Control menu, then the Icon item in the middle column of the menu.
Notice that the mouse pointer changes from an arrow to a positioning pointer
shape. As you move the mouse around, the [x,y] position at the bottom right in
the status window changes, indicating the position of the crosshair relative to
the lower left corner of the dialogue frame.
Move the mouse to relative position 58,50 and click mouse button 1. This tells
Prominare Designer where you want to place the icon.
A stylized icon and then the Icon Styles dialogue appears. In this dialogue,
enter ID_WINDOW in the ID field. For the value, enter 1. This symbol and value
will be used for both the icon and the main application window ID. Make sure
that the Visible option is selected in the Base styles group. If you do not
select this option, the icon will not be displayed in the dialogue when used by
the application. Finally, click on the Enter push button to exit the dialogue.
Before you exit, Prominare Designer checks to see if you have previously
defined an icon resource for the icon control just created. When no icon is
found, you are asked if you wish to define the icon resource. Select the Yes
push button to display the Bitmap, Font, Icon, and Pointer Resources dialogue,
through which you can define the icon resource to be used by the application.
Unless you define the icon, the dialogue will not appear in the actual
application. Make sure that the Icon radio button is selected and that the ID
is ID_WINDOW with a value of 1. The Bitmap, Font, Icon, and Pointer Resources
dialogue is used for five resource types. Select the Icon radio button and
enter the ID symbol and value for the icon. (As mentioned previously, the
symbol for the icon is ID_WINDOW, also the symbol for the main application
window.) Select the ID symbol and value using the ID field drop-down.
All that remains for the icon is the name of the file containing the icon,
which could have been created in the Icon Editor. In this case, enter
Example.Ico before clicking on the Add button. You will be asked if you want to
create the default icon, since the icon does not exist. Select the Yes button.
This icon can be edited at a later point to become the final application icon.
Now click on the Save button to exit the dialogue and save the definition.
Select the Control menu again and notice that a check mark has appeared beside
the Icon menu item. Prominare Designer always places a check mark beside the
menu item in the Control menu of the currently selected control.
You now want to place text in the dialogue; select the Text menu item in the
first column of the menu.
As with the icon you just created, the mouse pointer changes to the positioning
pointer . This time, move the mouse pointer to relative position 10,30. When
you press button 1 on the mouse, a dialogue is displayed, this time allowing
you to set the text styles.
In this dialogue, replace the default text with Example Dialogue Box. No ID
symbol is required; change the default ID value to -1 if you wish. In the Text
options group, select the Horz. centered style and click on the Enter button.
A message box is displayed regarding CUA Non-Compliance. This message alerts
you that secondary words in the entered text are capitalized. In this
situation, ignore the warning since you are using the text as a title.
Notice that the text that you entered is not completely visible. To correct
this, move the mouse pointer to the right side of the text sizing frame until
it changes to the double-headed horizontal arrow. Press button 1 of the mouse
and drag with the mouse button still depressed to the right of the dialogue,
while watching the [cx,cy] value in the status window. Continue dragging the
frame edge to the right until the [cx,cy] value is 125,8. Release the mouse
button. The text is now centered in the dialogue.
Finally, you need to create a push button to exit the dialogue.
Instead of using the Control menu to create the next control, use the Tools
window. Display it by selecting the Tools window button in the tool bar; the
Tools window will appear in the top right hand corner of the Prominare Designer
window. Notice the grid of control representations; you can click on the
control you wish to create instead of using the Control menu. Select the Push
Button control representation (top left button) in the Tools window and place
the push button starting at location 45,5. When the dialogue is displayed,
change the default text to OK. Now you need only add the ID symbol and value.
This time, you will do it differently from the way you created the previous two
controls.
You will probably have noticed the drop-down button in the ID field click on
the button that displays the drop-down list like that of a combination box.
This list contains all currently defined symbols; in it, notice the two symbols
you entered previously: DLG_EXAMPLE and ID_WINDOW. There are also additional ID
values, DID_OK and DID_CANCEL among others. These two symbols are predefined by
OS/2 Presentation Manager for use with push buttons. As the symbols are
labeled, one is usually associated with an OK push button and the other with a
Cancel push button. In this case, you want to use the DID_OK symbol. To select
the symbol, click once on the DID_OK symbol entry in the list.
Also, notice a combination box labeled Dialogue. This combination box allows
you to associate the push button with a dialogue displayed when the push button
is selected by the user. This is useful when you are prototyping an application
and want to demonstrate to others how the user would interact with it. Again,
since the push button is used only to exit the dialogue, you do not need to use
the combination box.
Before you click on the Enter push button, click the Default check box in the
Options group. This draws a heavy border around the button, which indicates the
default action when the user presses the <ΓöÿENTER key.
You have now created the first dialogue box.
ΓòÉΓòÉΓòÉ 4.3.2. Creating Application Windows ΓòÉΓòÉΓòÉ
Now that you've completed the dialogue, you need only to create the main
application window. Here you use the New... item in the Edit menu. Again, the
New Dialogue/Window dialogue is displayed. Instead of selecting one of the
dialogue types, select the window type--the bottom right image in the dialogue.
This time, when the Window/Dialogue Styles dialogue is displayed, select Parent
window in the Type combination box and the styles Title bar, System menu,
Visible, Size border, Menu, Min button, Max button, Accelerators, and Shell
position.
For the text, type Example Window; for the ID symbol and value, use the ID
field drop-down to select the ID_WINDOW. You do this because the icon used in
the dialogue is the same icon to be used for the main window. Usually, the main
window uses the ID of the icon. Enter Example Window in the entry field labeled
Description.
Notice that the main parent window fills most of the Prominare Designer window
but has no action bar; it will be displayed once you add an action bar menu
item. In the Function entry field, make sure that the window procedure name is
ExampleWndProc. In the Filename entry field, enter the filename ExampWnd.C.
ΓòÉΓòÉΓòÉ 4.3.3. Creating the Menus ΓòÉΓòÉΓòÉ
Select the Menu button in the Tools window. A message box appears indicating
that no menus exist for the window. It also asks if you want to select menus
from the standard menus. Click on the Yes push button to display the Standard
Menus dialogue.
This dialogue contains eight tabs, with each tab signifying different action
bar menus. Selecting the check box for the action bar item indicates that you
wish to include that item in the action bar. The menu items generally
associated with that item then become selectable. Select those that apply to
the window you are creating.
For this window, you want to include the File action bar item but none of the
standard menu items. Select the File tab, then click on the File action bar
menu check box. The sub- menu items associated with the File action bar menu
become selectable. It is impossible to have sub-menu items with no action bar
items.
Next, click on the Create button, creating the action bar menu item. The Menu
Styles dialogue is then displayed, showing in the list boxes the File action
bar item you selected in the Standard Menus dialogue. To add a formal ID
symbol, select the item in the top list box and enter IDM_FILE in the ID field.
Click on the Change button to update the item and add it to the list boxes.
Next, you could enter a new item or change the current one. An * is displayed
to the left of the text denoting the item as an action bar menu item; it is
coloured dark red, distinguishing it from the regular menu items. Select the
Menu item radio button to add the first menu item of the File menu. Enter
~Example dialogue... for the menu item text, IDM_EXAMPLE for the ID symbol, and
10 for the value. Since you previously created a dialogue (Example Dialogue),
associate the menu item you are creating with the dialogue. Click on the
Dialogue combination box arrow to display the dialogue list. First select the
WinDlgBox(...) item within the Method drop-down list. Then select the
DLG_EXAMPLE symbol and the combination box entry field will be completed for
you. The source code created that will invoke the dialogue when the menu item
is selected will be the standard WinDlgBox.
From the Menu styles group, select the Text radio button. Before you can add
the menu item to the list, you must associate the sub-menu item you are
entering with the action bar menu by clicking on the File entry in the list
box. This allows Prominare Designer to place the sub-menu into the correct
action bar menu. When more than one action bar menu has been defined, this
simplifies the process and prevents unnecessary arranging of menus later on.
Now click on the Add button to add it to the sub-menu list.
For the next menu item, select the Separator style and enter -1 in the ID entry
field. This time, you do not have to associate the separator to the File menu,
since it is already selected. Only when the sub-menu item that you are creating
has a different parent do you need to select the parent menu item in the list
box.
The final menu item to be added to the File menu is the exit command. The exit
command text should be E~xit\tF3; enter it in the Text field. Notice that an
accelerator is now associated with the menu item; it will be automatically
added to the accelerator table.
The ID symbol and value for the menu item should be IDM_EXIT and 11. Associate
the menu item with the File menu, select the Text style from the Menu styles
group, click on the Add button and then on the Save button to exit and save the
menu information. This also places the menu items within the window you are
designing. You can see this be clicking on the File menu item in the window you
are designing.
ΓòÉΓòÉΓòÉ 4.3.4. Saving and Generating the Resource Script files ΓòÉΓòÉΓòÉ
The design of the application is now complete; all you need to do is save the
project files with the Save item in the File menu. Prominare Designer prompts
you to Save the include (.H) file? Two push buttons appear, Yes and No. Since
you will need the header file to properly compile the source files, click Yes.
Prominare Designer then saves the design file (.PDF) and header include files
before generating the resource script (.RC) file for the application.
The application interface is now complete and almost ready for you to add the
backing code. Exit Prominare Designer by double clicking on the system menu;
you are returned to the Workplace desktop.
ΓòÉΓòÉΓòÉ 4.4. Step 2: Adding Backing Code ΓòÉΓòÉΓòÉ
Once the interface for the application is complete, you can create the
necessary C or C++ source files to handle the user's interaction requests.
ΓòÉΓòÉΓòÉ 4.5. Step 3: Execute Initial Prototype ΓòÉΓòÉΓòÉ
Now that you've completed the backing code and successfully built the new
application, you can test its interface by actually running the application.
ΓòÉΓòÉΓòÉ 4.6. Step 4: Adding New Elements ΓòÉΓòÉΓòÉ
In this step, you learn to add new elements by adding a new dialogue to the
application's design. Restart Prominare Designer and click on the Last opened
radio button in the Prominare Designer Startup dialogue. This enables the Last
opened drop-down, from which you can select the entry for the Using.Pdf file
from the drop-down list, to read in the design file for the application.
Now you'll create the Another Example Dialogue, which will eventually be
associated with the Another dialogue... item in the File menu.
First, select the Edit menu, then the New... item. Again, select the dialogue
type from the first item of the second row in the dialogue.
Make sure that Dialogue is selected in the Type combination box in the
Window/Dialogue Styles dialogue. Delete the default text in the multi-line
entry field (since the dialogue will not have a title bar) and click in the ID
entry field. Enter DLG_ANOTHER and then click in the value entry field and
enter 110. For the dialogue procedure name, enter AnotherDlgProc within the
Function entry field. Since you already have a source module defined the
dialogues, you only need to select it from the Filename drop-down, which in
this case would be ExampDlg.C.
Click on the Style group check boxes so that only the Visible and Dialogue
frame check boxes are selected. For the description, enter Another Example
Dialogue. Finally, click on the Enter push button to create the dialogue frame
in the lower left corner of Prominare Designer, above the status window.
You can now move and size the dialogue frame. The suggested size is 145
dialogue units wide (cx) and 80 dialogue units high (cy). Place the mouse
pointer on the top right hand corner of the dialogue sizing frame. When the
pointer changes to the 45 double-headed arrow, press mouse button 1 and drag
the sizing frame to the top right of the Prominare Designer window until you
achieve the desired size.
Now, select the Control menu and System icon item. Notice that the mouse
pointer changes from an arrow to a positioning pointer shape. Move the mouse to
relative position 58,50 and click mouse button 1. This tells Prominare Designer
that you want to place the icon in this location. First a system icon, the
actual mouse pointer arrow, and then the System Icon Styles dialogue is
displayed. In this dialogue, select fourth icon in the second row. Now click on
the Enter push button to exit the dialogue.
In the Tools window, select the Text button. As with the System icon you
previously created, the mouse pointer will change to the positioning pointer
shape. This time, move the pointer to relative position 10,30. When you press
button 1 on the mouse, a dialogue appears allowing you to set the text styles.
In the Static Styles dialogue, replace the default text with Another Example
Dialogue. No ID symbol is required; you can change the default ID value to -1
if you wish. In the Text options group, select Horz. centered before clicking
on the Enter button.
Notice that the text that you entered is not completely visible. To correct
this, move the mouse pointer to the right side of the text sizing frame until
it changes to the double-headed horizontal arrow. Press button 1 of the mouse
and drag with the mouse button still depressed to the right of the dialogue,
while watching the [cx,cy] value in the status window. Continue dragging the
frame edge to the right until the [cx,cy] value is 125,8. Release the mouse
button. The text is now centered in the dialogue.
Finally, you need to create a push button to allow the dialogue to be exited.
Select the Push button icon in the Tools window and place the push button
starting at location 45,5. When the Push Button Styles dialogue is displayed,
change the default text to OK. Now you need to add only the ID symbol and
value.
Select the ID drop-down, then select the DID_OK symbol from the drop-down list.
Before clicking on the Enter button, click the Default check box. With this
done, the dialogue is complete. Now you need to create a new menu item in the
File action bar menu, so you can display the dialogue from within the
application.
In the Window/dialogue combo box in the tool bar, select the ID_WINDOW item;
Prominare Designer displays the Example Window.
Now select the Menu button in the Tools window so you can add the new menu
item. In the dialogue, note the File entry with an * displayed to the left of
the text, denoting that the item is an action bar menu item. Enter ~Another
example dialogue... for the menu item text, IDM_ANOTHER for the ID symbol, and
12 for the value. Select Text in the Menu styles area.
Since you have a previously-created dialogue, (Another Example Dialogue), you
can associate the menu item you are creating with that dialogue. Select the
WinDlgBox(...) from the Method drop- down and then, select the dialogue ID from
the Dialogues drop down list.
Before clicking on the Add button, click on the File entry in the list box. You
must do this to associate the sub-menu item you are entering with the action
bar menu. This allows Prominare Designer to place the sub-menu into the correct
action bar menu. When more than one action bar menu item has been defined, this
simplifies the process, preventing unnecessary arranging of menus later on.
Notice that the new menu item was added below the Exit menu item. Since Exit
should be the last item in the menu, you need to rearrange the items.
Click on the Arrange... button to display the Arrange Menus dialogue. This is a
convenient way to access the Menu Styles dialogue. Alternately, when you are
not in the Menu Styles dialogue, access it by selecting Arrange menus... in the
Options action bar menu.
Select Another example dialogue... in the list box, then move the mouse pointer
to just above the Separator item. When the pointer changes from an arrow to a
bar over the entry, click mouse button 1 to move the selected menu item to this
location. Now that you've rearranged the order of the menus, click on the
Accept button. You can double check that the menu is correct by simply clicking
on the File menu of the Example window.
Now click on the Save button to exit the dialogue.
The second phase of the process is now complete and you can save the file.
Since you want to rebuild the application, double click on the Prominare
Designer system menu. You will be asked if you want to save the Using.Pdf file;
click on the Yes button. You will also be prompted to save the include header
file; again click Yes.
ΓòÉΓòÉΓòÉ 4.7. Step 5: Add Additional Backing Code ΓòÉΓòÉΓòÉ
Once you have exited Prominare Designer, you can add additional backing code to
the source files. The code will handle the additional interface elements.
ΓòÉΓòÉΓòÉ 4.8. Step 6: Rebuild the Application ΓòÉΓòÉΓòÉ
After adding the new code, you can rebuild the application for further testing.
ΓòÉΓòÉΓòÉ 4.9. Step 7: Execute New Version of Application ΓòÉΓòÉΓòÉ
Finally, having rebuilt the application, you can test it.
ΓòÉΓòÉΓòÉ 5. section three - Reference ΓòÉΓòÉΓòÉ
Prominare Designer is a full-function OS/2 Presentation Manager graphical
design environment specifically designed for development within the OS/2
Presentation Manager. It allows you to design a window including its menus and
associated dialogues and to create both resource script file and C source code.
Prominare Designer is similar in use to previous versions of the OS/2
Programmer's Toolkit Dialogue Box Editor; however, it is many times more
powerful.
Prominare Designer also introduces the PM Control Extension (PMCX). This
specification provides a well-defined mechanism that permits you to design and
implement custom controls similar to the default controls in OS/2 Presentation
Manager, within dynamic-link libraries. (section four, PM Control Extensions,
contains a full explanation of the PM Control Extension and shows how to create
custom controls that can be used within applications and Prominare Designer.)
ΓòÉΓòÉΓòÉ 5.1. Using Prominare Designer ΓòÉΓòÉΓòÉ
A Presentation Manager application is made up of menus, icons, strings, and
dialogues from a text file with a .rc extension along C or C++ source code.
This code controls the above items and provides interaction with the user. The
file is usually constructed with a text editor, along with dialogue script
output from the Dialogue Box Editor. Prominare Designer takes the place of this
process.
Prominare Designer can also read and write an include file (.h extension) that
defines the symbols used to construct the window and dialogue elements. From
within Prominare Designer, you define the symbol and value used to create
definitions within the include file. These definitions take the form of #define
directives. You can edit the include file to incorporate additional symbols and
comments.
ΓòÉΓòÉΓòÉ 5.2. Prominare Designer Appearance ΓòÉΓòÉΓòÉ
On launching Prominare Designer, you are presented with the Prominare Designer
window.
The title bar of the window shows the names of the .pdf and .h files you are
creating or editing. An asterisk (*) next to either name indicates that the
file has been changed since last being saved.
ΓòÉΓòÉΓòÉ 5.3. Tool bar ΓòÉΓòÉΓòÉ
The tool bar at the top of the window is used to select the window or dialogue
you wish to edit. You can also use it to perform actions such as moving groups
of controls and turning on duplicate mode.
Through the Window/Dialogue combo box in the tool bar, you can select the
window or dialogue you wish to view and edit. Use the Ctrl+V accelerator key to
display the ID list and select the desired window or dialogue, rather than
clicking on the combo box arrow.
View a window or dialogue by clicking on the item within the list box. The
selected item is displayed.
The operation of the tool bar buttons is straightforward. When the tool bar
button is up, a function or option is off; down and the function or option is
on. If the tool bar button is not available for use, it appears halftoned. The
tool bar buttons are used to perform the following actions:
Button Purpose
This button displays the New Design dialogue, which allows you to
create a new design for immediate use. Using the this tool bar
button is equivalent to selecting New design... from the File menu.
Pressing the Open existing design button displays the Open dialogue,
from which you can select an existing design file to edit. Selecting
this tool bar button is the equivalent to selecting the Open... menu
item in the File menu.
Pressing the Save design button saves the active design file. This
is equivalent to selecting Save on the File menu.
Pressing the Print displayed button allows you to print the
currently displayed window, dialogue, or pop-up menu. In the Print
Design dialogue, specify how it is to be printed. Selecting this
tool bar button is equivalent to selecting Print displayed... on the
File menu.
Pressing the Search button displays the Search dialogue. Selecting
this tool bar button is the equivalent to selecting Search... on
the Find menu.
To check the design for duplicate ID errors within the resources,
select the Scan design button in the tool bar. This scans the design
before the resources are saved to disk, either in resource script
file format or final resource format. The scanning routines
determine if all the resources specified within the design, such as
icon and bitmap files, are present and also if any of the major ID
values have been duplicated. Major ID values include dialogue IDs,
help table and sub-table IDs, icon, bitmap, and pointer IDs, and
menu and accelerator IDs.
Pressing the Cut button causes the current window, dialogue, or
selected controls to be copied to the clipboard and then deleted
from the design. You can then paste the item or items back into the
same design file or another one. Selecting this tool bar button is
equivalent to selecting Cut on the Edit menu.
Pressing the Copy button causes the current window, dialogue, or
selected controls to be copied to the clipboard. You can then paste
the item or items back into the same design file or another one.
Selecting this tool bar button is equivalent to selecting Copy on
the Edit menu.
Pressing the Paste button causes the window, dialogue, or controls
contained on the clipboard to be pasted into the current design.
Selecting this tool bar button is equivalent to selecting Paste on
the Edit menu.
Pressing the Resource distribution button allows you to select the
resource files and locations where the current window, dialogue, or
pop-up menu is to be placed.
Pressing the Notes button allows you to enter or edit design notes
for the displayed window or dialogue.
Pressing the Message button allows you to select the messages to be
handled by the window or dialogue procedure for the window or
dialogue that is currently displayed.
Pressing the New Dialogue/Window button allows you to create a new
window, dialogue, pop-up menu or tab.
To align a group of controls within a window or dialogue, use the
Align controls button. The Align Controls dialogue appears, allowing
you to apply the final alignment on the selected controls. If you
have selected a control that you do not want in the alignment group,
select it again with the mouse pointer to remove it from the group.
To replace a group of selected controls within a window or dialogue
with another type or style of control, select the Replace button.
The Replace Controls dialogue is then displayed, allowing you to
select the type of control you wish to use as the replacement. If
you have selected a control that you do not want in the group, just
select it again with the mouse pointer to remove it from the group.
To duplicate an existing control in a window or dialogue, select the
Duplicate control button which will cause the mouse to change to the
duplicate mode pointer. Click the mouse pointer on the control you
wish to duplicate; as long as you keep button 1 on the mouse down,
you can move the duplicated control to the desired location within
the window or dialogue. Once you release the button, the appropriate
styles dialogue appears for the control duplicated to allow you to
edit styles, text and ID values. To cancel the duplicate control
mode, reselect the Duplicate control button.
When you wish to design a dialogue to be positioned relative to the
mouse, select the Relative Position button. The mouse pointer
changes its shape to a relative position shape; select the point
from which the dialogue is to be positioned when it is created.
Relative position is measured from the lower left corner of the
dialogue and is displayed within the status window. If you want the
mouse pointer to appear at position 5, 10 (x, y) within the
dialogue, the relative position of the lower left corner of the
dialogue would be -5, -10. When you have selected the location with
the mouse pointer, click button 1 of the mouse. The Relative Mouse
Position dialogue is displayed confirming the location you have
clicked. You can then change the relative position if you desire.
This dialogue can also be displayed by double clicking button 2 of
the mouse while the mouse pointer is over the button.
To change the default focus from the first tab stop item within a
dialogue to a specific control that allows interaction, select the
Set initial focus button. When you move the mouse pointer over
controls, the shape of the mouse changes depending on the type of
control over which the pointer is located. When the pointer appears
as a four-headed arrow shape, you can select the control to receive
the initial focus; when it appears as a circle with a slash through
it, you cannot select the control to receive the initial focus,
because the control can never receive the focus.
To change the display order of the controls within a window or
dialogue, use the Arrange Controls button to display the Arrange
Controls dialogue. This is also known as setting the Z-order of the
controls.
The VGA template button is available for selection only on systems
that allow for windows 1024 x 768 or greater. When it is selected,
an outline of the relative size of a 640 x 480 window is displayed
within the Prominare Designer window. This helps to determine if the
window or dialogue you are designing is too large for VGA-type
systems.
The Tools window contains a grid of buttons representing the
different controls, arranged in similar to those in the Control
action bar menu. Display or hide the Tools window by selecting the
Tools window button. The Text/ID window can also be shown or hidden
with this button. The Tools window is placed within the Prominare
Designer window at the top right hand corner. You can move it to
another location within the window if you desire. The position of
the window is saved for the next time you start up Prominare
Designer. Use the Tools window in the same manner, but click on the
button representation of the control you wish to create instead of
clicking on the Control action bar and then the control menu item.
The Save window position button is used to save the current size and
position of the Prominare Designer window when exiting. The next
time you invoke Prominare Designer, the saved size and position of
the window will be used to place Prominare Designer on the display.
The Undo button is used to restore an editing or creation action
that you performed on a control or set of controls. The editing
actions for the dialogue or window will be saved only while that
dialogue or window is displayed. Once a different dialogue or window
is selected, the undo stack will be discarded.
The Redo button is used to restore an undo action that you performed
on a control or set of controls. The undo actions for the dialogue
or window will be saved only while that dialogue or window is
displayed. Once a different dialogue or window is selected, the undo
stack will be discarded.
Pressing the Test design button causes Prominare Designer to switch
from design mode to test mode. Prominare Designer allows you to test
the design in various ways. You can simply test the displayed
dialogue to check on its appearance and feel. You can also test
windows (except that if you have associated a dialogue with a menu
item and you select the menu item, the dialogue is invoked). It is
this aspect that makes Prominare Designer a valuable prototype and
demonstration tool. When you have finished testing the window or
dialogue, select the Test button a second time. During test mode,
most other menu items are unavailable, as they are provided for
design only.
When you want to change the font and colours for a group of controls
you have selected within a window or dialogue, select the Font &
colours tool bar button. This will cause the Font & Colours dialogue
to be displayed from which you can select the colours and fonts to
use for the controls.
To change the font for a control or group of controls within a
window or dialogue, select the Fonts button. This displays the Fonts
dialogue, from which you can select the font and size you desire.
Pressing the Pen options button displays the Pen Options dialogue,
from which you select the options for the pen-centric control or
controls.
Pressing the Bidirectional options button displays the Bidirectional
Support dialogue, from which you can choose bidirectional
characteristics for the selected control or controls.
To display the limits of the controls within a window or dialogue as
they may appear on a different display type, select the Show display
limits button. When you click on the button, each control is
outlined in a red or green border depicting its possible limits if
seen on the display type selected via the Dialogue Unit Limits
Selection dialogue. A red border indicates that the current size of
the control is too small for the target device and a green border
indicates that the current size is sufficient. Double clicking with
button 2 of the mouse displays the Dialogue Unit Definition
dialogue, where you can define the display types that can be chosen
in the Dialogue Unit Limits Selection dialogue.
To display the IDs of the controls within a window or dialogue,
select the Show IDs button. The symbol or ID value is displayed over
each control. Depending on the size of the control, the symbol or
value may be overlapped by other symbols or IDs, but the entire
symbol is shown where possible.
For more precise placement of controls within a window or dialogue,
the Grid button allows you to define and display a
placement/movement grid to which controls can adhere. Double click
on the button with button 2 of the mouse, and the Grid dialogue
provides entry fields that define which grid to use and whether or
not to snap new controls to the placement grid. Prominare Designer
saves grid values, ensuring that the same grid is used when you next
edit the design file.
The Generate source code button is used to generate source code for
the current design if you have specified such in the New Design or
Define Design dialogues.
The Save source button is used to enable or disable the generation
of the source code when saving the design. If the button is in the
down position, the source code will be generated otherwise if the
button is in the up position, the source code will not be generated.
The View source button is used to display the source code for the
dialogue or window you are currently editing. The source will be
displayed starting at the top of the dialogue or window procedure.
ΓòÉΓòÉΓòÉ 5.4. Status Window ΓòÉΓòÉΓòÉ
The status window at the bottom of the Prominare Designer window displays
information as you select items and make changes. Measurements within the
window are shown in dialogue units. Horizontally, one dialogue unit is equal to
one-quarter the width of an average character in the system font. Vertically,
one dialogue unit equals one-eighth the height of a character in the system
font.
The status window contains the following information:
Item Description
Mode Shows the current operating mode. Modes include selecting
menu items, creating, editing and deleting controls,
viewing, arranging and saving.
Groups Shows the number of controls contained within the
selection group.
Control Shows the type of control currently selected. This may be
Push Button, Auto Check Box, Check Box, etc. When a window
is selected, it displays Window. Likewise, when a dialogue
is selected, it displays Dialogue.
Relative Shows how the current selected window, dialogue, or
control is positioned. For windows or dialogues, the
relative position may be Window, Screen, or Mouse. For
controls, it will always be Window or Dialogue, depending
on the type in which it is placed.
[x, y] Shows the current position of the lower left corner of the
selected window, dialogue, or control.
Focus Displays the ID symbol or value of the control to receive
the initial focus within a dialogue. If a window is
displayed, the N/A symbol is displayed. If no control has
been selected, the Default symbol is displayed.
Value Shows the current ID symbol (or value if no symbol has
been defined) for the window, dialogue, or control
selected.
[cx, cy] Shows the current width and height of the selected window,
dialogue, or control.
Target OS Shows the target operating system for the current design.
The bottom area of the status window contains an area for additional messages
relating to the dialogue or window you are designing. When a PMCX control
cannot be located, an error message is displayed stating which control could
not be found. The status window is also used to display information regarding
a selected control. For example, the cell size of a value set control is
displayed. This helps with sizing a control that must accommodate bitmaps of a
given size. Next to this message area are a series of check indicators that
denote the environment under which the selected control can run. These are:
Item Environment
OS/2 1.x OS/2 1.x
OS/2 2.x OS/2 2.x or OS/2 Warp
MMPM/2 OS/2 Version 2.1 or Warp with MMPM/2 Version 1.1 or higher
installed
Pen for OS/2 OS/2 Version 2.1 with Pen for OS/2 Version 1.0 or higher
installed
Windows Microsoft Windows 3.1 or Microsoft Windows NT 3.1 or higher
ΓòÉΓòÉΓòÉ 5.5. Tools Window ΓòÉΓòÉΓòÉ
Prominare Designer provides a quick way to select controls to place within a
window or dialogue. Select the Tools window button in the tool bar and the
Tools window is displayed. The position is saved when you exit the application.
Select the control you wish to create by clicking on the button representing
the control you want.
ΓòÉΓòÉΓòÉ 5.6. Text/ID Symbol Definition Window ΓòÉΓòÉΓòÉ
Prominare Designer provides you with a quick way of changing the text and/or ID
symbol of a selected control, dialogue, or window. The Text/ID Symbol
Definition window is displayed when you select the Tools window button in the
tool bar. The position is saved when you exit the application
When you select a control, dialogue, or window, the text and ID symbol are
placed in the Text and ID fields. You can then change the text and/or ID symbol
and have the information recorded for the control, dialogue, or window by
clicking on the Update button. This is faster then double clicking on the
control, dialogue, or window to display a styles dialogue in which you can
change the text and/or ID symbol.
ΓòÉΓòÉΓòÉ 5.7. Menus ΓòÉΓòÉΓòÉ
The action bar contains the following menus:
Menu Contents
File Contains file-oriented operations such as New, Open, Import,
Include Open, Save, Save As, Include Save, Include Save As, and
Include View. These commands allow you to create, open and save
files.
Edit Contains editing operations that allow you to cut, copy, and
paste controls, dialogues, and windows, and edit or delete
displayed controls. Allows you to create a new window or
dialogue.
Find Contains search-oriented operations that allow you to search
for text, ID symbol, or value within the design.
Control Contains operations to create controls for placement in windows
or dialogues. Includes buttons, scroll bars, static items, and
menus.
Resource Contains operations to add resources to the application you are
creating or editing. Includes accelerators, strings, help
tables, icons, pointers, and custom resources.
Source Contains operations to edit source code generation rules.
Configure Contains operations to configure Prominare Designer.
Options Contains operations to arrange controls and menus and define
design information and resource distribution.
Help Contains operations to invoke help information for Prominare
Designer.
ΓòÉΓòÉΓòÉ 5.7.1. File Menu ΓòÉΓòÉΓòÉ
The File menu is used in conjunction with file operations. The File sub-menus
are:
Menu Item Purpose/Usage
New design Used to start a new design.
Open Used to open an existing design file.
Import Used to import an existing compiled resource script
file (.RES), or text script files (.RC), or to
extract the resource information from a .DLL or .EXE
and convert to a design file. Both OS/2 and Microsoft
Windows resources are acceptable.
Merge Used to merge an existing design file (.PDF)
contained on your system with an open, active design.
Include new Used to start a new include file. If the existing
include file has not been saved, Prominare Designer
asks if you want to save the file before starting a
new one. New include files are Initially untitled.
You can name the file using the Include Save as...
menu item.
Include open Used to open an existing include header file.
Save Used to save the design file being edited. If you are
saving a new design and a file by the same name
already exists, you will receive a message asking if
you want to replace the existing file with the new
one. Clicking Yes causes the existing file to be
replaced with the new one. Clicking No causes the
save request to be canceled.
Save as Used to name and save design file to disk as well as
edit history, comments, and version information
associated with the file.
Quick save Used to save the current design without updating the
.RC or .RES file(s).
Refresh .RES Used to update the .RES file(s) such that any changes
made to icons, bitmaps, etc. are reflected. You can
only do this if you have selected the option to save
to a .RES file instead of saving to a .RC file within
the New Design or Define Design dialogues.
Include save Used to save edited include header file to disk.
Include save as Used to save and name include header to disk.
Print Used to print the current window or dialogue or all
windows or dialogues within the design.
Printer setup Used to select and/or set up printer.
Save design Used to save the current window or dialogue to the
pre-designed library.
Delete design Used to delete a pre-designed window or dialogue from
the pre-designed library.
Include view/edit Used to view and/or edit include header file
definitions.
Information Displays a dialogue showing the current selected
window or dialogue information such as number of
controls, help items, etc..
Also shown at the bottom of the File menu are the last eight design files
edited. Selecting one of these entries loads that file as though you had
selected it from the Open dialogue.
ΓòÉΓòÉΓòÉ 5.7.1.1. Print menu ΓòÉΓòÉΓòÉ
The Print sub-menu is used to print either all windows or dialogues within the
current design, or just the currently displayed window or dialogue. The
sub-menu contains two menu items:
Menu Item Purpose/Usage
All Used to print all windows and dialogues within the
current design. The Print Design dialogue allows you
to specify where on the page the image is to be
printed, along with the size of the image.
Displayed Used to print the currently displayed window or
dialogue. The Print Design dialogue allows you to
specify where on the page the image is to be printed,
along with the size of the image.
ΓòÉΓòÉΓòÉ 5.7.2. Edit Menu ΓòÉΓòÉΓòÉ
The Edit menu is used in conjunction with edit operations. The Edit sub-menus
are:
Menu Item Purpose/Usage
Undo Used to restore an editing or creation action that
you performed on a control or set of controls. The
editing actions for the dialogue or window will be
saved only while that dialogue or window is
displayed. Once a different dialogue or window is
selected, the undo stack will be discarded.
Redo Used to restore an undo action that you performed on
a control or set of controls. The undo actions for
the dialogue or window will be saved only while that
dialogue or window is displayed. Once a different
dialogue or window is selected, the undo stack will
be discarded.
Cut Used to cut selected controls, windows, or dialogues
and place them on the clipboard. Retrieve cut items
by pasting the design information into another design
file or back into the current one. Note that when you
use Cut, you are essentially deleting the controls,
window, or dialogue from the current design file.
Copy Used to copy selected controls, windows, or dialogues
to the clipboard. Retrieve an item by pasting the
design information into another design file or back
into the current one. Unlike the Cut menu item, Copy
leaves the current version of the controls, window,
or dialogue in the design file.
Paste Used to paste controls, windows, or dialogues from
the clipboard into Prominare Designer. When you are
pasting either a window or dialogue, Prominare
Designer asks if it should paste over the displayed
item. Selecting Yes replaces the displayed window or
dialogue with the one on the clipboard. Selecting No
stores the displayed window or dialogue in memory
before pasting the window or dialogue on the
clipboard into the design file. If no window or
dialogue is displayed, the window or dialogue from
the clipboard is pasted into the design file and
immediately displayed. The original ID for the window
or dialogue is deleted and a new one used in its
place. Once a window or dialogue has been pasted,
Window/Dialogue Styles is displayed, allowing you to
enter the new ID symbol, function name, and other
information. When pasting, controls are pre-selected
as a group, making it easy to move them to a new
location if necessary.
Paste from file Used to paste selected window/dialogue, resource,
string/message, and association table items from a
selected design file. The Paste Open dialogue
appears; from here, select the design file to paste
from. The Paste From File dialogue is then displayed.
Select the elements you wish to paste into the
current design.
Delete Sub-menu that allows deletion of elements within
current.
New Used to create a new window, dialogue, or pop-up menu
or to retrieve a pre- designed window or dialogue.
The New Dialogue/Window dialogue lets you select
which type of window/dialogue to create.
Pop-up menu Used to edit pop-up menu.
Styles Used to edit the styles of a selected window,
dialogue, or control.
Properties Sub-menu used to define code page and--for OS/2 1.x
resources--memory properties of accelerators,
dialogues, messages, and strings.
ΓòÉΓòÉΓòÉ 5.7.2.1. Delete ΓòÉΓòÉΓòÉ
The Delete sub-menu item deletes items within the current window or dialogue.
It contains the following items:
Menu Item Purpose/Usage
Window/Dialogue Used to delete displayed window or dialogue.
Prominare Designer prompts for verification that you
want to delete the window or dialogue before actually
deleting it. All control and resource information
(such as accelerators, help sub- tables, etc.)
associated with the dialogue is also deleted from the
design file.
Control Used to delete selected controls or to choose
controls to delete from a window or dialogue.
Action bar menu Used to select action bar menus to delete from a
window. Any associated sub-menu items are deleted as
well.
Sub-menu item Used to select menu items to delete from a window.
Accelerator Used to select accelerators to delete.
Association item Used to select association table items to delete.
Bitmap Used to select bitmap resource definitions to delete.
Character table Used to select character table definitions to delete.
Font Used to select font resource definitions to delete.
Font directory Used to select font directory definitions to delete.
Help Sub-menu used to delete help definitions.
Icon Used to select icon resource definitions to delete.
Key table Used to select key table resource definitions to
delete.
Message Used to select message resources to delete.
Pointer Used to select pointer resource definitions to
delete.
Resource Used to select custom resource definitions to delete.
String Used to select string resources to delete.
Virtual key table Used to select virtual key table resources to delete.
ΓòÉΓòÉΓòÉ 5.7.2.2. Help ΓòÉΓòÉΓòÉ
The Help sub-menu item is used to delete help definitions:
Menu Item Purpose/Usage
Table Used to select help tables to delete.
Table item Used to select help table items to delete.
Sub-table Used to select help sub-tables to delete.
Sub-table item Used to select help sub-table items to delete.
ΓòÉΓòÉΓòÉ 5.7.2.3. Properties ΓòÉΓòÉΓòÉ
The Properties sub-menu is used to set memory properties. It contains five menu
items:
Menu Item Purpose/Usage
Accelerator Used to define memory options for accelerator table.
Dialogue Used to define memory options for current dialogue.
Menu Used to define memory options for menu.
Message Used to define memory options for message table.
String Used to define memory options for string table.
ΓòÉΓòÉΓòÉ 5.7.3. Find Menu ΓòÉΓòÉΓòÉ
The Find menu is used to locate a text string, symbol, or ID within the design.
The Find sub- menus provided are:
Menu Item Purpose/Usage
Search Search design for a symbol or text item.
Search next Search for the next occurrence of a symbol or text
item.
ΓòÉΓòÉΓòÉ 5.7.4. Control Menu ΓòÉΓòÉΓòÉ
The Control menu is used in conjunction with creating controls placed within a
window or dialogue. The Control sub-menus provided are:
Menu Item Purpose/Usage
Push button Used to create a push button control.
Check box Used to create a check box control.
Radio button Used to create a radio button control.
Horz. scroll Used to create a horizontal scroll bar control.
Vert. scroll Used to create a vertical scroll bar control.
List box Used to create a list box control.
Entry field Used to create an entry field control.
Group box Used to create a group box control.
Text Used to create a text control.
Frame Used to create a frame control.
Rectangle Used to create a rectangle control.
Icon Used to create a icon control.
Bitmap Used to create a bitmap control.
System icon Used to create a system icon control.
Combo box Used to create a combination box control.
Multi-line entry Used to create a multiple-line entry field control.
Spin button Used to create a spin button control.
Container Used to create a container control.
Slider Used to create a slider control.
Value set Used to create a value set control.
Notebook Used to create a notebook control.
User defined Used to create a user-defined control.
Circular slider Used to create a circular slider control.
Graphic button Used to create a graphic button control.
Handwriting Used to create a handwriting control.
Sketch Used to create a sketch control.
Window Used to create a window.
Menu Used to create or edit a menu including action bar
and sub-menu items.
ΓòÉΓòÉΓòÉ 5.7.5. Resource Menu ΓòÉΓòÉΓòÉ
The Resource menu is used to define application resources. The Resource
sub-menus provided are:
Menu Item Purpose/Usage
Accelerator Used to create, edit, or delete a keyboard
accelerator table items.
Association table Used to create, edit, or delete association table
items.
Bitmap Used to create, edit, or delete bitmap resource
definitions.
Character table Used to create, edit, or delete character table
resource items.
Font Used to create, edit, or delete font resource
definitions.
Font directory Used to create, edit, or delete font directory
resource items.
Help Sub-menu used to create help tables and sub-tables.
Icon Used to create, edit, or delete icon resource
definitions.
Key table Used to create, edit, or delete key table resource
items.
Message Used to create, edit, or delete message table
resource definitions.
Pointer Used to create, edit, or delete pointer resource
definitions.
Resource Used to create, edit, or delete custom defined
resource items.
String Used to create, edit, or delete string table resource
items.
Virtual key table Used to create, edit, or delete virtual key table
resource items.
ΓòÉΓòÉΓòÉ 5.7.5.1. Help sub-menu ΓòÉΓòÉΓòÉ
The Help menu item is used to define help definitions. It contains six menu
items:
Menu Item Purpose/Usage
Table Used to create, edit, or delete help tables.
Table item Used to create, edit, or delete help table items.
Sub-table Used to create, edit, or delete help sub-table.
Sub-table item Used to create, edit, or delete help sub-table items.
Build help table Used to build a help table.
Build help sub-table Used to build a help sub-table.
ΓòÉΓòÉΓòÉ 5.7.6. Source Menu ΓòÉΓòÉΓòÉ
The Source menu is used to define and edit default source code rules to be used
during source code generation. The Source sub-menus provided are:
Menu Item Purpose/Usage
Message Used to define the actual source code for window,
dialogue, and notification messages.
Source Used to define the module and header files start,
along with the standard window and dialogue
declarations. Commands Used to define the default
source code for various WM_COMMAND handling methods.
Layout Used to define the default layout rules for windows
and dialogues.
Export Used to export the source code rules to a flat ASCII
file which contains tags that are used to import the
file. The source code entries can be edited using a
standard text editor.
Import Used to import the source code rules that were
exported and edited using a standard text editor.
When you design for CA-CommonView, IBM User Interface Class Libraries, Borland
OWL, or ObjectPM, you have only two menus to select from: Source and Commands.
ΓòÉΓòÉΓòÉ 5.7.6.1. Message Sub-menu ΓòÉΓòÉΓòÉ
The Message sub-menu is used to define the default source code for window,
dialogue, and notification messages. The sub-menu contains three menu items:
ΓòÉΓòÉΓòÉ 5.7.6.2. Message sub-menu ΓòÉΓòÉΓòÉ
Menu Item Purpose/Usage
Window Used to define the default source code for window
messages.
Dialogue Used to define the default source code for dialogue
messages.
Notification Used to define the default source code for
notification messages.
ΓòÉΓòÉΓòÉ 5.7.6.3. Commands sub-menu ΓòÉΓòÉΓòÉ
The Commands sub-menu is used to define source rule methods for the handling of
WM_COMMAND messages. The sub-menu contains four menu items:
Menu Item Purpose/Usage
Menu Used to define the source code rule methods for menu
items that generate a WM_COMMAND message.
Push button Used to define the source code rule methods for push
buttons that generate a WM_COMMAND message.
User button Used to define the source code rule methods for user
buttons that generate a WM_COMMAND message.
User defined Used to define the source code rule methods for
user-defined items that generate a WM_COMMAND
message.
ΓòÉΓòÉΓòÉ 5.7.6.4. Layout sub-menu ΓòÉΓòÉΓòÉ
The Layout sub-menu is used to define source code layout rules for windows and
dialogues. It contains two menu items:
Menu Item Purpose/Usage
Window Used to define the layout rules for window procedures
in terms of which messages to handle within a typical
window procedure.
Dialogue Used to define the layout rules for dialogue
procedures in terms of which messages to handle
within a typical dialogue procedure.
PMCX window Used to define the layout rules for PMCX window
procedures in terms of which messages to handle
within a typical window procedure.
PMCX dialogue Used to define the layout rules for PMCX dialogue
procedures in terms of which messages to handle
within a typical dialogue procedure.
ΓòÉΓòÉΓòÉ 5.7.7. Configure Menu ΓòÉΓòÉΓòÉ
The Configure sub-menu is used to configure Prominare Designer to the way that
you work. It contains six menu items:
Menu Item Purpose/Usage
Creation options Used to define default control sizes, styles, and
text for when a control is added to a window or
dialogue.
CUA compliance Used to set the IBM Common User Access (CUA)
compliance rules.
Default usage Used to define default paths, grid size, and
autolabel prefixes, as well as key combinations for
the mouse.
.DFM registration Used to define additional display units and their
corresponding dialogue factors or to edit existing
definitions that can be used with the Show Limits
button.
PMCX and temporary controls (PMCX)Used to define custom controls that utilize
the PM Control Extension controls for use within
Prominare Designer.
ΓòÉΓòÉΓòÉ 5.7.8. Options Menu ΓòÉΓòÉΓòÉ
The Options menu is used in conjunction with miscellaneous operations. The
Options sub- menus provided are:
Menu Item Purpose/Usage
Arrange controls Used to arrange display order of controls, set groups
and tab stops.
Arrange menus Used to arrange order of action bar and sub-menu
items.
Define design Used to define and edit design associations.
Resource distribution Used to edit or add resource distribution items.
PMCX definition Used to define the PMCX control being designed.
ΓòÉΓòÉΓòÉ 5.7.9. Help Menu ΓòÉΓòÉΓòÉ
The Help menu provides you with access to on-line help for Prominare Designer.
The menu items available are:
Menu Item Purpose/Usage
Help index Displays the help index.
General help Displays general help for the application.
Using help Displays help for using the help.
Keys help Displays help for keys.
Support Used to submit either a problem report or suggestion.
Product information Displays information dialogue on Prominare Designer.
ΓòÉΓòÉΓòÉ 5.7.9.1. Support sub-menu ΓòÉΓòÉΓòÉ
The Support sub-menu provides you with an on-line method of requesting support
for Prominare Designer. Menu items are:
Menu Item Purpose/Usage
Submit problem Used to enter or edit a problem report that can be
printed or faxed.
Submit suggestion Used to enter or edit a suggestion that can be
printed or faxed.
ΓòÉΓòÉΓòÉ 5.7.10. Window-list Menu ΓòÉΓòÉΓòÉ
The Window-list menu allows you select other applications that are running or
folders that you have opened.
ΓòÉΓòÉΓòÉ 5.8. Startup dialogues ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.8.1. Prominare Designer Startup ΓòÉΓòÉΓòÉ
When Prominare Designer starts executing, it displays the Prominare Designer
Startup dialogue, which helps you begin using Prominare Designer immediately,
even if you are not completely familiar with the program. It provides five
basic options:
Option Purpose
Start new design Starts a new design through the New Design dialogue.
Open existing design Opens an existing design file through the Open
dialogue.
Import resource file Imports a binary or script resource file using the
Import dialogue. Can also be used to extract the
binary resources from an executable or dynamic link
library file.
Last opened Opens a recently edited file. Equivalent to selecting
one of the last edited entries within the File menu.
When this option is selected, the Last opened
drop-down below the radio buttons is enabled,
allowing you to select a file to open.
Display on startup Displays the Prominare Designer Startup dialogue on
startup. This option is the same as that in the
Prominare Designer Default Usage dialogue.
Once you have selected an action to perform, click on the Start button. In the
case of the first option, Start new design, the New Design dialogue appears;
from here, define the type of application you are creating along with the
source code options. The New Dialogue/Window dialogue appears next; here, you
begin to create your first window or dialogue. The equivalent menu steps are
File New... then Edit New... If you select the Open existing design option,
the Open dialogue is displayed; select a design file to open. Once the file is
read into memory, you can immediately make changes to the first window or
dialogue. The equivalent menu command is File Open...
ΓòÉΓòÉΓòÉ 5.9. Configuring Prominare Designer ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.9.1. Prominare Designer Default Usage ΓòÉΓòÉΓòÉ
You can configure various options within Prominare Designer through the
Prominare Designer Default Usage dialogue. The dialogue contains a set of tabs
which allow you to set the paths where rules and pre-design libraries are
located, install and edit custom control libraries, and define or edit the
symbol prefixes and labeling options.
The first tab, Paths, is used to enter the paths for the pre-designed library,
.INI location and the include files. The pre-designed library path is entered
through the Pre-designed library labeled entry field. It initially defaults to
the directory in which Prominare Designer was installed. For example, if you
installed Prominare Designer in Drive C, the path would be C:\PD5.
The entry fields for the include paths, OS/2 and Windows, are used to define
the location of the OS/2 and Windows headers. These are required by the import
routines when you import OS/2 or Microsoft Windows resource script files (.RC).
If you have defined an INCLUDE= environment variable, you need not complete
either entry field. Enter the paths either when the INCLUDE= environment
variable does not exist in your environment or when you dynamically set the
INCLUDE= each time you build your applications.
The second tab, Extensions, is used to define the extensions for the include
header, resource script, binary files, and object files. As it possible that
convention designations may change with time, this tab lets you set the
designations to conform to any changed designations. You can set the
designations for Windows 3.1 and Windows NT, where both areas are provided for
designating the file extensions when you import resources. The remaining areas,
OS/2 1.x and OS/2 2.x / Warp 3.0 / Warp 4.0, are used in both importing
resources and saving the design information as resources.
The third tab, Options, is used to enter the control alignment values, the
radix, and entry field clearing options.
The Auto size group is used to set the manner in which the auto size function
works within the Align Controls dialogue. When you select the option to auto
size the controls based on the text, the Use display limits target option
causes the targeted display font metrics to be used as the basis for sizing the
control. The User mode group allows you to specify the mode in which Prominare
Designer displays certain dialogues for starting a new design and controls.
When the Expert option is selected, the Advanced New Design dialogue will be
displayed allowing you to select more options when creating a new design. It
will also cause the Button Styles and Static Styles dialogues to be displayed
in place of the individual styles dialogue for buttons and static controls.
The Source code group allows you to specify whether or not the tab compression
character should be used within the source files saved and what the right
margin show be. The Autosave group allows you to specify the frequency in which
the automatic saving of the design file should be done. The Startup group
allows you to specify whether or not the initial startup dialogue, Prominare
Designer Startup, should be displayed.
The Margins group is used to set the left/right and top/bottom margins in which
the push buttons are inset when they are arranged. The Control spacings group
is used as the value between controls when they are spaced. The Grid values
group contains the grid spacing to be displayed. Selecting the Snap to grid
option causes the controls to snap to the grid points when created or moved.
Finally, the Push button spacing group contains the spacing that should occur
between the push buttons when they are arranged.
You can configure Prominare Designer to display the ID values for either
decimal or hexadecimal by selecting the radix type from one of the following:
Option Description
Decimal Sets the display of ID values in the status window
for decimal.
Hex Sets the display of ID values in the status window
for hexadecimal.
You can configure Prominare Designer to clear entry fields within dialogues
that allow multiple items to be entered. These options in the Clear entry
fields group are:
Option Description
On add Clears the entry fields of the dialogue when you add
an item with the Add push button.
On change Clears the entry fields of the dialogue when you
change an item with the Change push button.
If you wish, Prominare Designer can automatically generate the symbols for
you. The second to last tab, Symbols, allows you to tell Prominare Designer to
generate the control symbols automatically and to use pre-defined symbol
prefixes. You can also enable checking for duplicate symbol IDs within the
same window or dialogue.
The tab displays various entry fields for the different types of controls and
windows. These entry fields are used to designate the symbol prefix to be used
when a symbol is generated for that particular type of control, dialogue, or
window.
The prefixes that can be defined are:
Control Default Prefix
Push Button PB_
Check Box CB_
Radio Button RB_
Entry Field EF_
Group Box GB_
Text ST_
Frame FR_
Rectangle RE_
Combo Box CX_
Multi-line MLE_
Spin Button SPB_
Container CT_
Slider SLD_
Value set VS_
Notebook NB_
User defined UD_
User button UB_
Circular slider CSLD_
Graphic button GRB_
Handwriting HW_
Sketch SK_
Window WIN_
Dialogue DLG_
Menu IDM_
Sub-menu IDM_
Pop-up menu PUM_
Tab NBKP_
The tab provides three options that govern how automatic symbol generation
occurs. These options are:
Option Description
Auto generate Allows auto generation of symbols.
Use prefix When auto generation is allowed, this option causes
the defined prefix for the control being edited to be
used.
Check duplicates Causes Prominare Designer to check for duplicate IDs
used in the same window or dialogue.
When you allow auto generation, Prominare Designer uses the following methods
to generate the symbol. You must first edit the text of the control to its
final value. When you move from the Text entry field to the symbol entry field
in the dialogue, the symbol is generated. If you have selected the Use prefix
option, the prefix value for the type of control you are editing is used.
The text of the control is used as the symbol, along with a predefined prefix.
For example, if you have just created a new push button and you enter the text
for it as Show example, the symbol generated for the push button will be
SHOWEXAMPLE when you choose not to generate a prefix. If the prefix option is
allowed, and the prefix for push buttons is PB_, the symbol generated will be
PB_SHOWEXAMPLE.
Prominare Designer only generates a symbol when there is no value contained
within the symbol portion of the ID field. If a symbol is already set for the
control and you change the text of the control, Prominare Designer will not
generate a new symbol.
The last tab, Mouse, is used to define the key-mouse button combinations for
mouse operations. A grid of selections for the keys is presented along with a
grid of selections for the mouse buttons.
You can define the following mouse operations:
Option Default
Select control Left button click
Add/subtract group item Ctrl+Left button click
Move group Ctrl+Right button click and drag
Rubber band select Ctrl+Left button click and drag
Set group anchor Alt+Left button click
Select styles dialogue Left button double click
Show info Shift+Left button click
Control context menu Right button click
The second last operation, Show info, is used to display a control information
balloon like that shown below. The balloon contains the control type, text,
size (in both dialogue units and pixels), ID symbol or value, .RC statements,
and PRESPARAM statements.
ΓòÉΓòÉΓòÉ 5.9.2. Default Creation Options ΓòÉΓòÉΓòÉ
The Default Creation Options dialogue allows you to define the type of
window/dialogue created each time you use the New... item in the Edit menu, as
well as define the default text, styles and sizes for the OS/2 Presentation
Manager controls.
The dialogue allows you to customize the how Prominare Designer creates
controls, so you can spend time designing your windows and dialogues instead of
constantly adjusting the sizes and redefining the styles of controls created
through separate tabs.
The first tab allows you to define the default nature of the windows or
dialogues created in the New Dialogue/Window dialogue. The options in this
dialogue are generally the same as those in the Window/Dialogue Styles
dialogue. The values you select in this dialogue are initially used for the
Window/Dialogue Styles dialogue. The following options can be set through the
dialogue:
Option Description
Parent window Designates the default window to be created as the
parent window.
Child window Designates the default window to be created as a
child window.
Dialogue Designates the default window to be created as a
dialogue.
Decimal Sets the default display of values as decimal.
Hex Sets the default display of values as hexadecimal.
Title bar Includes a title bar in the default window or
dialogue.
System menu Includes a system menu in the default window or
dialogue.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
window or dialogue.
Vert. scroll bar Includes a vertical scroll bar at the right of the
window or dialogue.
Visible Indicates that the window or dialogue is to be
initially visible. Even if this option is not
selected, Prominare Designer will display the window
or dialogue.
Size border Includes a sizing border as the frame of the window
or dialogue.
Border Includes a simple border as the frame of the window
or dialogue.
Dialogue frame Includes a dialogue frame as the frame of the window
or dialogue.
System modal Makes the window or dialogue system modal. A system
modal window or dialogue, when used, does not allow
the focus to be directed to other windows that may be
active. This option should be used only when you need
the user's attention for a critical process; it
should be used sparingly.
Menu Includes an action bar menu in the window. This is
not available for dialogues.
Min box Includes a minimize box in the window or dialogue.
Max box Includes a maximize box in the window or dialogue.
Accelerators Allows accelerators within a window.
Standard Sets the window as standard. When this option is
used, all other selected options are ignored.
Window Sets the relative position of the dialogue display
position to that of its parent window.
Screen Sets the relative position of the dialogue display
position to that of the desktop.
Mouse Sets the relative position of the dialogue display
position to that of the mouse pointer.
The dialogue also allows you to define the defaults for the following controls
by selecting the Tabs:
Tab Description
Check box Allows default values, styles, and sizes to be set for
check boxes.
Circular slider Allows default values, styles, and sizes to be set for
circular sliders.
Combo box Allows default values, styles, and sizes to be set for
combination boxes.
Container Allows default values, styles, and sizes to be set for
containers.
Entry field Allows default values, styles, and sizes to be set for
entry fields.
Frame Allows default values, styles, and sizes to be set for
frames.
Graphic button Allows default values, styles, and sizes to be set for
graphic buttons.
Group box Allows default values and sizes to be set for group boxes.
Handwriting Allows default values, styles, and sizes to be set for
handwriting controls).
Horz. scroll Allows default sizes to be set for horizontal scroll bars.
List box Allows default styles and sizes to be set for list boxes.
Multi-line entry Allows default values, styles, and sizes to be set for
multiple-line entry fields.
Notebook Allows default values, styles, and sizes to be set for
notebooks.
Push button Allows default values, styles, and sizes to be set for
push buttons.
Radio button Allows default values, styles, and sizes to be set for
radio buttons.
Rectangle Allows default values, styles, and sizes to be set for
rectangles.
Sketch Allows default values, styles, and sizes to be set for
sketch controls.
Slider Allows default values, styles, and sizes to be set for
sliders.
Spin button Allows default values, styles, and sizes to be set for
spin buttons.
Text Allows default values, styles, and sizes to be set for
static text.
Value set Allows default values, styles, and sizes to be set for
value sets.
Vert. scroll Allows default sizes to be set for vertical scroll bars.
Selecting one of the above tabs will allow you to define the defaults for that
particular control. Each of the tabs is similar in appearance. They are
divided into four distinct areas:
Area Purpose
Size/Text Defines the control's default text, size, ID/symbol, and
control data.
Options Defines the control's default styles.
Base styles Defines the base styles common to all controls.
Example Displays an example of the control.
Each tab allows you to set the default size, text, and styles for check boxes
created by Prominare Designer through the Control menu or the Tools window.
The tab allows you to enter the size of the control in the entry fields
labeled Width (cx) and Height (cy). The values entered into these fields are
in dialogue units. Clicking on the Show push button at the bottom of the
dialogue allows you to see the new size entered. It also shows the default
text you entered in the Text entry field. You can also set the default ID
through the ID field.
To reset the control to the default size and styles, click on the Defaults
button. The following shows the defaults for each control (width and height
are in dialogue units):
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéControl ΓöéWidth ΓöéHeight ΓöéText Style Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCheck box Γöé38 Γöé10 ΓöéText Check box, Visible, Tab Γöé
Γöé Γöé Γöé Γöéstop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCircular SliderΓöé48 Γöé40 ΓöéText Visible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCombo box Γöé64 Γöé32 ΓöéText Simple, Visible, Group Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéContainer Γöé48 Γöé40 ΓöéSingle, Auto position, Γöé
Γöé Γöé Γöé ΓöéVisible, Tab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEntry field Γöé43 Γöé12 ΓöéText Left aligned, Visible, Γöé
Γöé Γöé Γöé ΓöéTab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéFrame Γöé16 Γöé12 ΓöéText Foreground, Visible, Γöé
Γöé Γöé Γöé ΓöéGroup Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGraphic button Γöé48 Γöé14 ΓöéText Visible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGroup box Γöé43 Γöé32 ΓöéText Visible, Group Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHandwriting Γöé48 Γöé40 ΓöéText Border, Visible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHorz. Scroll Γöé43 Γöé8 ΓöéVisible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéList box Γöé64 Γöé32 ΓöéNo adjust position, Visible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMLE Γöé64 Γöé32 ΓöéText Border, Ignore tab, Horz.Γöé
Γöé Γöé Γöé Γöéscroll bar, Vert. scroll bar, Γöé
Γöé Γöé Γöé ΓöéDisable undo, Visible, Tab Γöé
Γöé Γöé Γöé Γöéstop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéNotebook Γöé48 Γöé40 ΓöéBottom right, Major tab right,Γöé
Γöé Γöé Γöé ΓöéSquare, Left status text, LeftΓöé
Γöé Γöé Γöé Γöétab text, Solid binding, Γöé
Γöé Γöé Γöé ΓöéVisible, Tab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPush button Γöé38 Γöé12 ΓöéText Visible, Tab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRadio button Γöé38 Γöé10 ΓöéText Radio button, Visible, Γöé
Γöé Γöé Γöé ΓöéTab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRectangle Γöé16 Γöé12 ΓöéText Foreground, Visible, Γöé
Γöé Γöé Γöé ΓöéGroup Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSketch Γöé48 Γöé40 ΓöéBorder, Visible Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSlider Γöé64 Γöé16 ΓöéHorizontal, Top, Left button Γöé
Γöé Γöé Γöé Γöéplacement, Left home position,Γöé
Γöé Γöé Γöé ΓöéScale 1, Visible, Tab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSpin button Γöé43 Γöé12 ΓöéText Master, Right, Visible, Γöé
Γöé Γöé Γöé ΓöéTab stop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéText Γöé20 Γöé8 ΓöéText Left aligned, Top Γöé
Γöé Γöé Γöé Γöéaligned, Visible, Group Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéValue set Γöé48 Γöé40 ΓöéText, Border, Visible, Tab Γöé
Γöé Γöé Γöé Γöéstop Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVert. Scroll Γöé11 Γöé32 ΓöéVisible Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
The following outlines the different options provided for each tab.
Note: The circular slider and graphic button controls require MMPM/2 Version
1.1 or higher, along with the MMPM/2 Version 1.1 or higher Toolkit. The
handwriting and sketch controls require Pen for OS/2 Version 1.0 or
higher, along with the Pen for OS/2 Version 1.0 or higher Toolkit.
ΓòÉΓòÉΓòÉ 5.9.2.1. Check box tab ΓòÉΓòÉΓòÉ
To set the default styles of the check box, select from the following options:
Option Description
Check box Designates the check box as a simple check box. The
check box will not be toggled when selected.
Auto check box Designates the check box as a toggling check box. The
check will be toggled when selected.
3 state Designates the check box as a complex check box. The
check box will not be toggled when selected but can
have three states: unchecked, checked, and
indeterminate. An indeterminate check box is shown
with the interior of the box grayed.
Auto 3 state Designates the check box as a toggled complex check
box. The check box will be toggled when selected
between three states, in order: unchecked, checked,
and indeterminate.
No focus Prevents the check box from receiving focus when
selected.
Autosize Automatically sizes the check box control to the
text.
ΓòÉΓòÉΓòÉ 5.9.2.2. Circular slider tab ΓòÉΓòÉΓòÉ
To set the default styles of the circular slider, select from the following
options:
Option Description
Mid-point tick Enlarges the mid-point and end tick marks on the
dial.
No value buttons Excludes the + and - buttons.
No dial numbers Excludes the dial numeric value.
No dial text Excludes text below the dial.
Direct manipulation Allows direct manipulation of the dial value with the
mouse.
360┬░ scroll range Makes the scroll range 360 .
Proportional ticks Makes the ticks of the dial proportional.
No ticks Prevents the ticks that would appear on the dial from
being shown.
Circular value Makes the indicator on the turning dial an indented
dot instead of a tick mark.
ΓòÉΓòÉΓòÉ 5.9.2.3. Combo box tab ΓòÉΓòÉΓòÉ
To set the default styles of the combination box, select from the following
options:
Option Description
Simple Designates the combination box as a simple
combination box that always displays its list box.
The entry field of the combination box can be edited
by the user or completed by selecting items in the
displayed list box.
Drop down Designates the combination box as a combination box
that only displays the list box when the user clicks
on the drop-down button at the right of the entry
field. When the user selects an item in the list box,
the entry field is completed with the item selected
and the list box hidden. If the user clicks the
drop-down button a second time, the list box is also
hidden. The user can edit the entry field as with the
simple combination box.
Drop down list Designates the combination box as a drop-down list.
This is similar in operation to the drop down
combination box except that the entry field cannot be
edited by the user.
Any Allows the entry field to contain a mixture of
double-byte and single-byte characters.
SBCS Makes the entry field accept single-byte characters
only.
DBCS Makes the entry field accept double-byte characters
only.
Mixed Allows the entry field to accept a mixture of single-
and double-byte characters. Unlike the Any option,
this allows ASCII DBCS data to be converted to EBCDIC
DBCS data without causing an overflow error.
Horz. scroll Causes the text within the entry field to be scrolled
when it is entered by the user.
ΓòÉΓòÉΓòÉ 5.9.2.4. Container tab ΓòÉΓòÉΓòÉ
To set the default styles of the container, select from the following options:
Option Description
Single Allows only one container item to be selected at a
time. Single selection is valid for all views and is
the only type supported for the tree view.
Extended Allows one or more container items to be selected in
any combination. Extended selection is valid for all
views except the tree view.
Multiple Allows the selection of none, some, or all of the
container items. It is valid for all view except the
tree view.
Auto position Allows the container items to be arranged
automatically when the window size changes, an item
is inserted, removed, sorted, invalidated, or
filtered, or when the font or font size changes. It
is only valid with the icon view.
Mini record Causes the container to allocate records smaller than
they would otherwise be. The MINIRECORDCORE data
structure is used instead of the RECORDCORE data
structure.
Verify pointer Verifies that the application pointers are members of
the container's linked list before they are used.
Generally, the Verify pointer style is used when
developing the application.
Read only Makes the entire container read only, preventing the
user from editing the container item text.
Mini-icons Allows the use of mini-icons in the MINIRECORDCORE
structure.
No control pointer Prevents the container from sending the
WM_CONTROLPOINTER message to the window or dialogue
owning the control.
ΓòÉΓòÉΓòÉ 5.9.2.5. Entry field tab ΓòÉΓòÉΓòÉ
To set the default styles of the entry field, select from the following
options:
Option Description
Left aligned Aligns the text in the entry field with the left
edge. Text entered by the user will shift right
within the entry field.
Centered Centers the text in the entry field. When text is
entered by the user, the contents of the entry field
will shift left and right, keeping the text centered
within the field.
Right aligned Aligns the text in the entry field with the right
edge. Text entered by the user will shift left within
the entry field.
Auto horz. scroll Causes the text within the entry field to scroll when
entered by the user.
Margin Displays a margin denoting the actual limits of the
entry field.
Auto tab Causes the entry field to tab to the next control
when the user is entering text and the limit of the
entry field has been reached.
Read only Prevents the entry field from accepting text input by
the user.
Command Denotes the entry field as a command entry field.
This information is used by the Help Manager to
provide command help if the user requests help for
the field. Not more than one entry field in the
window or dialogue should use this style.
Unreadable Shows all input into the entry field as asterisks
(*). This option is useful for entry fields such as
passwords, in which the contents of the entry field
must be prevented from being determined visually.
Any Causes the entry field to contain a mixture of
double-byte and single-byte characters.
SBCS Causes the entry field to accept single-byte
characters only.
DBCS Causes the entry field to accept double-byte
characters only.
Mixed Causes the entry field to accept a mixture of single-
and double-byte characters. Unlike the Any option,
allows ASCII DBCS data to be converted to EBCDIC DBCS
data without causing an overflow error.
Autosize Automatically sizes the entry field to the text.
ΓòÉΓòÉΓòÉ 5.9.2.6. Frame tab ΓòÉΓòÉΓòÉ
To set the default styles of the frame, select from the following options:
Option Description
Foreground Designates the frame as a foreground frame.
Halftone Designates the frame as a half-tone frame.
Background Designates the frame as a background frame.
Autosize Automatically sizes the frame to the text.
ΓòÉΓòÉΓòÉ 5.9.2.7. Graphic button tab ΓòÉΓòÉΓòÉ
To set the default styles of the graphic button, select from the following
options:
Option Description
2 state Gives the graphic button two states: up and down. The
button state must be controlled by the owner such
that when the user presses the button, the owner of
the button must send a message to the button to set
the state of the button as down if the button is to
remain down.
Auto 2 state Gives the graphic button two states that toggle from
up to down and from down to up. The owner of the
button is not required to send messages to the button
to change the state when the button is selected by
the user.
Animation Triggers animation on the button face using a series
of supplied bitmaps. The owner of the button must
make the animation start and stop.
Auto animation Starts and stops the animation on the button face
when the user selects the button. The animation is
provided through a series of bitmaps supplied as IDs
with the button.
Hilite bitmap Makes the graphic button display a different bitmap
when highlighted.
Disable bitmap Makes the graphic button display a different bitmap
when disabled.
3D recessed text Makes the graphic button display the button text
within a recessed area of the button.
3D raised text Makes the graphic button display the button text
within a raised area of the button.
ΓòÉΓòÉΓòÉ 5.9.2.8. Groupbox tab ΓòÉΓòÉΓòÉ
To set the default styles of the group boxes, select from the following
options:
Option Description
Auto size Allows the group box to be automatically sized
depending on the text in it.
ΓòÉΓòÉΓòÉ 5.9.2.9. Handwriting tab ΓòÉΓòÉΓòÉ
To set the default styles of the handwriting control, select from the following
options:
Option Description
Border Displays a border around the handwriting control
input area.
3D border Displays a 3D border around the handwriting control
input area.
ΓòÉΓòÉΓòÉ 5.9.2.10. Horz. Scroll tab ΓòÉΓòÉΓòÉ
To set the default styles of the horizontal scroll bar, select from the
following options:
Option Description
Thumb size Allows setting of the scroll bar slider size.
Auto track Allows tracking of the actual slider instead of an
outline.
Autosize Changes the scroll size to reflect the amount of data
in a window or dialogue.
You can also set default control values through the scroll bar range, item
count, and visible count.
ΓòÉΓòÉΓòÉ 5.9.2.11. List box tab ΓòÉΓòÉΓòÉ
To set the default styles of the list box, select from the following options:
Option Description
Multiple selection Designates the list box as able to handle multiple
selections of items within it. By default, a list box
allows only one selection at any given time.
No adjust position Indicates that the list box should not adjust its
height to a multiple number of items contained within
it.
User redraw Indicates that the window or dialogue owning the list
box is to draw each item within the list box.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
list box that allows the contents of the list box to
be scrolled horizontally when the items displayed in
the list box are wider than the list box itself.
Extended selection Designates the list box as able to handle multiple
selections of the items within it, using a
combination of the mouse and keyboard where groups
can be selected quickly. By default, a list box
allows only one selection at any given time.
ΓòÉΓòÉΓòÉ 5.9.2.12. MLE tab ΓòÉΓòÉΓòÉ
To set the default styles of the multiple-line entry fields, select from the
following options:
Option Description
None Indicates no import/export preference.
Text Indicates text import/export format.
No translate Indicates no translation of CR/LF combinations for
import/ export.
Windows format Indicates that Windows CR/LF translation should be
used for import/export.
Limit horz. Indicates that the formatting rectangle should be
limited horizontally.
Limit vert. Indicates that the formatting rectangle should be
limited vertically.
Match window Indicates that the formatting rectangle should match
the window limits.
Border Draws a border around the multiple-line entry field.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
multiple-line entry field, allowing the user to
scroll the contents horizontally.
Vert. scroll bar Includes a vertical scroll bar to the right of the
multiple-line entry field, allowing the user to
scroll the contents vertically.
Ignore tab Prevents the multiple-line entry field from acting on
the TAB key.
Read only Prevents the multiple-line entry field from allowing
the user to enter text in it.
Word wrap Causes the multiple-line entry field to break lines
longer than its width into more than one line. The
text will be broken from one line to the next at a
space, tab, or line-break.
Disable undo Prevents the creation of undo buffers (total 128 KB).
This reduces the memory required for the control,
making it faster.
You can specify the size of the MLE via the Size
entry field. The value entered is used to set the
total number of characters that the MLE can accept. A
-1 indicates unbounded input. The starting and ending
selection points for the MLE are specified in the
Start and End entry fields and the formatting
rectangle is defined in the Width and Height entry
fields. Note that the values for the formatting
rectangle are in pixels and not dialogue units.
ΓòÉΓòÉΓòÉ 5.9.2.13. Notebook tab ΓòÉΓòÉΓòÉ
To set the notebook default styles, select from the following options:
Option Description
Bottom right Makes the back pages appear on the bottom right.
Bottom left Makes the back pages appear on the bottom left.
Top right Makes the back pages appear on the top right.
Top left Makes the back pages appear on the top left.
Bottom Places the major tabs on the bottom of the notebook.
Top Places the major tabs on the top of the notebook.
Left Places the major tabs on the left of the notebook.
Right Places the major tabs on the right of the notebook.
Square Gives the tabs square edges.
Polygon Gives the tabs polygon edges.
Rounded Gives the tabs rounded edges.
Left Left justifies the status text.
Center Centers the status text.
Right Right justifies the status text.
Left Left justifies the tab text.
Center Centers the tab text.
Right Right justifies the tab text.
ΓòÉΓòÉΓòÉ 5.9.2.14. Push button tab ΓòÉΓòÉΓòÉ
To set the default styles of the push button, you can select from the following
options:
Option Description
Default Indicates that the push button should contain the
default emphasis and should be selected when the user
presses the <ΓöÿENTER key.
Icon Indicates that the push button contain an icon image
within the face of the button.
Help Indicates that the push button is used to invoke
help.
SYSCOMMAND Indicates that the push button is used to invoke a
WM_SYSCOMMAND message.
No border Indicates that the push button should not be drawn
with a border.
No focus Indicates that the push button should not receive the
focus when selected.
Autosize Automatically sizes the button to the text.
Bitmap Indicates that the push button is to contain a bitmap
image within the face of the button.
Text Indicates that the push button is able to accept text
with the icon image.
Mini-icon Indicates that the push button is to use a smaller
size of the icon when an icon image is to be used
within the push button.
ΓòÉΓòÉΓòÉ 5.9.2.15. Radio button tab ΓòÉΓòÉΓòÉ
To set the default styles of the radio button, select from the following
options:
Option Description
Radio button Designates the radio button as simple. The
application must provide the necessary logic to
deselect other radio buttons in its group.
Auto radio button Designates the radio button as auto selected within a
group of radio buttons. When the button is selected,
it automatically highlights itself and deselects any
other button in its group.
No focus Indicates that the check box is not to receive the
focus when selected.
No pointer select Prevents an auto radio button from being
automatically selected when the user moves the cursor
to the button with the cursor-movement keys.
Autosize Automatically sizes the radio button to the text.
ΓòÉΓòÉΓòÉ 5.9.2.16. Rectangle tab ΓòÉΓòÉΓòÉ
To set the default styles of the rectangle, select from the following options:
Option Description
Foreground Designates the rectangle as a foreground rectangle.
Halftone Designates the rectangle as a half-tone rectangle.
Background Designates the rectangle as a background rectangle.
Autosize Automatically sizes the rectangle to the text.
ΓòÉΓòÉΓòÉ 5.9.2.17. Sketch tab ΓòÉΓòÉΓòÉ
To set the default styles of the sketch control, select from the following
options:
Option Description
Border Displays a border around the sketch control input
area.
3D border Displays a 3D border around the sketch control input
area.
ΓòÉΓòÉΓòÉ 5.9.2.18. Slider tab ΓòÉΓòÉΓòÉ
To set the default styles, select from the following options:
Option Description
Horizontal Orients the slider horizontally.
Vertical Orients the slider vertically.
Center Centers the slider in the slider window.
Bottom Positions the slider at the bottom of the slider
window. This is valid only for horizontal sliders.
Top Positions the slider at the top of the slider window.
This is valid only for horizontal sliders.
Left Positions the slider at the left of the slider
window. This is valid only for vertical sliders.
Right Positions the slider at the right of the slider
window. This is valid only for vertical sliders.
Left Locates the incremental buttons to the left of the
slider shaft. This is valid only for horizontal
sliders.
Right Locates the incremental buttons to the right of the
slider shaft. This is valid only for horizontal
sliders.
Bottom Locates the incremental buttons to the bottom of the
slider shaft. This is valid only for vertical
sliders.
Top Locates the incremental buttons to the bottom of the
slider shaft. This is valid only for vertical
sliders.
Bottom Causes the slider to use the bottom edge as the base
value for incrementing. This is valid only for
vertical sliders.
Top Causes the slider to use the top edge as the base
value for incrementing. This is valid only for
vertical sliders.
Left Causes the slider to use the left edge as the base
value for incrementing. This is valid only for
horizontal sliders.
Right Causes the slider to use the right edge as the base
value for incrementing. This is valid only for
horizontal sliders.
Snap to increment Causes the slider arm to move to the nearest
increment when it is between two tick marks.
Owner draw Notifies the application when the slider shaft,
ribbon strip, and slider background are to be drawn.
Read only Prevents the user from interacting with the slider.
Generally, this provides a visual indication of the
percentage of an operation completed.
Ribbon strip Fills the slider shaft with a colour different from
that of the shaft, giving an appearance similar to
that of the mercury in a thermometer between the home
position of the slider and the slider arm.
Scale 1 Causes the slider to use the increment spacing
specified for scale 1 as the incremental value for
positioning the slider arm. For horizontal sliders it
is displayed above the slider and for vertical
sliders, to the right.
Scale 2 Causes the slider to use the increment spacing
specified for scale 2 as the incremental value for
the positioning the slider arm. For horizontal
sliders it is displayed below the slider and for
vertical sliders, to the left.
ΓòÉΓòÉΓòÉ 5.9.2.19. Spin button tab ΓòÉΓòÉΓòÉ
To set the default styles of the spin buttons, select from the following
options:
Option Description
Master Designates the spin button as the master component of
the button.
Servant Designates the spin button as the servant component
of the button.
Left Aligns the text in the spin field against the left
border of the field.
Center Centers the text in the spin field.
Right Aligns the text in the spin field against the right
border of the field.
All characters Allows the spin button to accept all character input.
Numeric only Causes the spin button to accept numeric input only.
Read only Prevents the spin button from allowing the user to
enter text in it. This option can be used when
lengthy items of static text must be displayed within
a window or dialogue.
No border Draws the spin button without a border around the
spin fields.
Fast spin Allows the fast spinning of numbers in the spin
field. The control skips over numbers to create the
fast spinning effect.
Zero pad Pads the number in the spin field with zeros.
You can set the entry area width of the spin button field via the Size entry
field. Set the starting and ending values of the spin button in the Lower and
Upper entry fields. The values are recognized only if you have selected the
Numeric only style.
ΓòÉΓòÉΓòÉ 5.9.2.20. Text tab ΓòÉΓòÉΓòÉ
To set the default styles of the static text, select from the following
options:
Option Description
Left aligned Displays the text left aligned within the limits of
its display rectangle, as determined by its width and
height.
Horz. centered Displays the text horizontally centered within the
limits of its display rectangle, as determined by its
width and height.
Right aligned Displays the text right aligned within the limits of
its display rectangle, as determined by its width and
height.
Top aligned Displays the text top aligned within the limits of
its display rectangle, as determined by its width and
height.
Vert. centered Displays the text centered vertically within the
limits of its display rectangle, as determined by its
width and height.
Bottom aligned Displays the text bottom aligned within the limits of
its display rectangle, as determined by its width and
height.
Word wrap Breaks the text into two or more lines at a space or
word break to fit within the limits of its display
rectangle, as determined by its width and height.
Halftone Shows the text in half-tone.
Mnemonic Allows a mnemonic association for the text. The
mnemonic is denoted by the tilde character (~) before
the letter to act as the mnemonic. It will appear
underlined when displayed.
Autosize Automatically sizes the static text to the text.
ΓòÉΓòÉΓòÉ 5.9.2.21. Value set tab ΓòÉΓòÉΓòÉ
To set the value set default styles, select from the following options:
Option Description
Bitmap Designates the value set items as bitmaps.
Icon Designates the value set items as icons.
Text Designates the value set items as text.
Colour info Designates the value set items as RGB colours.
Colour indices Designates the value set items as index colours.
Border Draws a border around the value set, delineating the
extent of the value set control.
Item border Draws a border around each value set item.
Scale bitmaps Scales bitmaps to the value set item size. This is
used only with the Bitmap option.
Right to left ordering Causes the value to interpret the column orientation
as right to left ordering, instead of the default
left to right. The right column becomes number 1,
counting up as you move left.
Owner draw Causes the owning window or dialogue set to draw the
value.
ΓòÉΓòÉΓòÉ 5.9.2.22. Vert Scroll tab ΓòÉΓòÉΓòÉ
To set the default styles of the vertical scroll bar, select from the following
options:
Option Description
Thumb size Allows setting of the scroll bar slider size.
Auto track Allows tracking of the actual slider instead of an
outline.
Autosize Changes the scroll size to reflect the amount of data
in a window or dialogue.
You can also set default control values through the scroll bar range, item
count, and visible count.
ΓòÉΓòÉΓòÉ 5.9.3. CUA Compliance ΓòÉΓòÉΓòÉ
To allow you to design to IBM's Common User Access, Prominare Designer lets you
set the level of adherence to Common User Access (CUA) compliance that you
desire. The CUA Compliance dialogue allows you to select the CUA items that you
want Prominare Designer to inform on non-compliance.
The dialogue is divided into four areas: Action bars, Pull-downs, Dialogues,
and Controls. Each area contains CUA guideline items for which Prominare
Designer can provide automatic checking. If Prominare Designer determines that
a selected CUA compliance area has been violated, a message is be displayed
stating the non-compliance.
You can set the following CUA compliance checking options:
Option Description
Number menus Causes Prominare Designer to check those action bar
menu items that start with a number.
Capitalization Causes Prominare Designer to check that the first
letter in the action bar menu item is capitalized.
Mnemonic selection Causes Prominare Designer to check that action bar
menu item contain a mnemonic selection. The mnemonic
selection is denoted by a tilde(~) before the letter
to act as the mnemonic selection.
Ordering Causes Prominare Designer to check that the order of
the action bar menu items follows the suggested
guidelines of CUA. For example, it is suggested that
the action bar start with File, then Edit, ... and
end with Help.
Double-words Causes Prominare Designer to check that action bar
menu items are a single word.
Numbered menus Causes Prominare Designer to check that pull-down
menu items do not begin with a numeric character.
Capitalization Causes Prominare Designer to check that the first
letter in the pull-down menu item is capitalized and
that the remaining words in the menu item text begin
with lower case characters.
Mnemonic selection Causes Prominare Designer to check that the pull-down
menu item contains a mnemonic selection. The mnemonic
selection is denoted by a tilde (~) before the letter
to act as the mnemonic selection.
System menu Causes Prominare Designer to check that a system menu
is included in a dialogue when a title bar is
contained in that dialogue.
Push button ellipsis Causes Prominare Designer to check that push buttons
that contain an ellipsis (...) to denote another
dialogue are invoked when the push button is
selected, and that there is not a space between the
last character of the push button description and the
ellipsis.
Push button mnemonic Causes Prominare Designer to check that a mnemonic
selection is included in the push button. The
mnemonic selection is denoted by a tilde (~) before
the letter to act as the mnemonic selection.
Capitalization Causes Prominare Designer to check that the first
letter in the control is capitalized and the
remaining words in the control text begin with lower
case characters.
Mnemonic selection Causes Prominare Designer to check that the control
contains a mnemonic selection. The mnemonic selection
is denoted by a tilde (~) before the letter to act as
the mnemonic selection.
ΓòÉΓòÉΓòÉ 5.9.4. Dialogue Unit Definition ΓòÉΓòÉΓòÉ
The Dialogue Unit Definition dialogue is used to register dialogue font metrics
created with the DFM.Exe utility. The dialogue font metrics are an enumeration
of the fonts for a given display type. Prominare Designer uses this
information, along with the dialogue font metrics, for the display that you use
to determine the clipping rectangle for controls. This allows you to design
your application on a higher resolution display and see what effect a lower
resolution display will have on the elements in each window or dialogue. The
usual problem encountered when using higher resolution displays for designing
is that controls that appear properly displayed at the higher resolution may be
clipped at the lower, as shown below:
To alleviate the problem of trying to visualize the clipping effect of one
display type while working on another display type, Prominare Designer allows
you to register the dialogue font metrics in the Dialogue Unit Definition
dialogue, which can be used in conjunction with the Show display limits button.
This way, the display limits can be estimated and displayed for a current
dialogue or window.
The following table outlines different dialogue unit factors for the stated
displays and video configuration:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéDevice ΓöéResolution ΓöéColours Γöé% Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéIBM VGA Γöé640 x 480 Γöé16 Γöé100 Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéIBM XGA - 8514 Γöé1024 x 768 Γöé256 Γöé95 Γöé
ΓöéMonitor Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéIBM XGA - 8515 Γöé1024 x 768 Γöé256 Γöé93 Γöé
ΓöéMonitor Γöé Γöé Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
As shown in the chart, if you were working on the IBM XGA and an 8514 monitor,
creating an image to appear on the IBM VGA display type, the image would appear
at 95% of its original size on the VGA system. If you were working on the IBM
XGA and an 8515 monitor, the image would appear on the IBM VGA system at 93%.
Note that this does not alleviate the need to test dialogue and window designs
on the target display; this method is at best an approximation. It only allows
you to get within a close range of what would be displayed, so you can develop
on a higher-resolution system and then distribute more accurate preliminary
code.
The Dialogue Unit Definition dialogue allows you to define additional devices
you need to support. A utility provided with Prominare Designer, DFM.Exe, can
run on any target system running OS/2 2.x, Warp 3.0 or Warp 4.0. DFM.Exe
displays a message panel showing information about the system. It also records
the font metrics for that display type in a file. You take this file, which
should have an extension of .DFM, and register it with the Dialogue Unit
Definition dialogue. Enter the name of the file in the entry field labeled .DFM
file, or select it from the Files list box. Make sure that you have included a
device label in the Device label entry field; this will make it easier to
understand the target device against which you are testing. This label is
displayed within the Dialogue Unit Limits Selection dialogue; to register the
information, click on the Add button.
You can change the metrics information by selecting the entry in the Defined
list box and clicking on the Replace button. To delete a registration, select
an entry in the Defined list box and click on the Delete button.
ΓòÉΓòÉΓòÉ 5.9.5. DFM.Exe Utility ΓòÉΓòÉΓòÉ
The DFM.Exe utility is used in conjunction with the Dialogue Unit Definition
dialogue, where the font metrics enumerated on a target display by the DFM.Exe
utility are registered.
You can enter a device label in the entry field labeled Device label. This
should be a descriptive label of the target device, as it will be displayed in
the Dialogue Unit Limits Selection dialogue. The name of the dialogue font
metrics file is entered in the entry field labeled .DFM filename.
Once you have entered the necessary information, click on the Save button. This
enumerates the fonts for the display device on the target system and saves them
in the file specified. Then register this file in the Dialogue Unit Definition
dialogue.
ΓòÉΓòÉΓòÉ 5.9.6. PMCX/Temporary Control Definition ΓòÉΓòÉΓòÉ
The PMCX/Temporary Control Definition dialogue is used to enter and edit the
custom control libraries you have added to Prominare Designer. Through the PM
Control Extension (PMCX), described in the section four PM Control Extension
(PMCX), you can create custom controls to be included in your final
application. So Prominare Designer can properly incorporate the custom control
within a design, first register the custom control with Prominare Designer. The
custom controls provided as examples are automatically registered by Prominare
Designer.
The entry field, labeled Name, is where the full path of the custom control DLL
should be entered. The control can be one of the following types:
Option Purpose
PMCX control Designates the custom control DLL as private to each
application that use it and based on the PMCX design.
Temporary control Creates a temporary control with the necessary coding
within the actual application for its display and
operation.
Use the list boxes to locate the custom control DLL you wish to use. The path
for the custom control DLL is displayed above the entry field labeled Name;
the name of the DLL appears in the entry field.
When defining a temporary control, select the Temporary control radio button
and type the name for the control in the Name entry field.
Click on the Add button to display the custom control DLL, or the temporary
control will be registered internally within Prominare Designer and you will
be able to select the custom or temporary control from the User define... item
in the Controls menu.
When you have defined a custom or temporary control and wish to edit or delete
it, use the dialogue to edit the location or delete the control registration
from Prominare Designer. Upon selecting one of the entries in the list box,
you can delete it by pressing the Delete push button.
When you delete a custom control, you are only de-registering it from
Prominare Designer; not deleting it from the system. With a temporary control,
you are also de-registering it from Prominare Designer.
To edit the control, edit either the path of the custom control or the name of
the temporary control. When you select the control name in the list box, the
entry field labeled Name will contain either the path or the name of the
control, depending on its type as selected in the Options group box.
You can use the list boxes to locate the custom control DLL you wish to use.
The path for the custom control DLL is displayed above the entry field labeled
Name and the name of the DLL appears in the entry field. When you edit a
temporary control, the Temporary control radio button will be selected and you
will be able to edit the name for the control in the Name entry field.
Click on the Change push button to display the custom control DLL, or the
temporary control will be re-registered internally within Prominare Designer.
You can select the custom or temporary control from the User define... menu
item in the Controls menu or the Tools window.
ΓòÉΓòÉΓòÉ 5.10. Starting a new design ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.10.1. New Design ΓòÉΓòÉΓòÉ
When you start a new design, enter information in this dialogue to set up
Prominare Designer for the type of design you desire. Choices here include
target operating environment and save options.
The New Design dialogue allows you to define the basename of the design, the
include file name, and the name of the .IPF file.
In the first entry field, Basename, enter the basename of the design. Prominare
Designer uses this entry as the name for the design and include files, as well
as the base for some design variables used by the main window of the
application and the base for the main() function filename. In the second entry
field, Include, enter the full filename of the include file. In the third entry
field, main(), enter the full filename of the source code module that will
contain the main() function. The following options allow you to specify how
Prominare Designer should be used for the project:
Option Description
Windows Selecting this option causes the design to be
oriented around the Microsoft Windows 3.x
environment. Resource script file and source code
will be based on the Microsoft Windows 3.x APIs.
Windows NT Selecting this option causes the design to be
oriented around the Microsoft Windows NT environment.
Resource script file and source code will be based on
the Microsoft Windows NT APIs.
OS/2 1.x Selecting this option causes the design to be
oriented around the OS/2 1.x Presentation Manager
environment. The resource script file will be based
on the OS/2 1.x Presentation Manager.
OS/2 2.x Selecting this option causes the design to be
oriented around the OS/2 2.x Presentation Manager
environment. The resource script file will be based
on the OS/2 2.x Presentation Manager.
OS/2 3.0 Selecting this option causes the design to be
oriented around the OS/2 Warp 3.0 Presentation
Manager environment. The resource script file will be
based on the OS/2 3.0 Warp Presentation Manager.
OS/2 4.0 Selecting this option causes the design to be
oriented around the OS/2 Warp 4.0 Presentation
Manager environment. The resource script file will be
based on the OS/2 4.0 Warp Presentation Manager.
C Selects C as the language used for source code
generation.
C++ Selects C++ as the language used for source code
generation.
CommonView Selects CommonView class libraries as the source code
generation technique.
IBM UI Classes Selects IBM User Interface class libraries as the source code
generation technique.
Borland OWL Selects Borland OWL class libraries as the source
code generation technique.
ObjectPM Selects ObjectPM class libraries as the source code
generation technique.
ΓòÉΓòÉΓòÉ 5.10.2. Advanced New Design ΓòÉΓòÉΓòÉ
When you start a new design, enter information in this dialogue to set up
Prominare Designer for the type of design you desire. Choices here include
target operating environment and save options.
The Advanced New Design dialogue allows you to define the basename of the
design, the include file name, and the name of the .IPF file.
Seven tabs are provided in the notebook contained within the dialogue. In the
first entry field, Basename, enter the basename of the design. Prominare
Designer uses this entry as the name for the design and include files, as well
as the base for some design variables used by the main window of the
application and the base for the main() function filename. In the second entry
field, Include, enter the full filename of the include file. In the third entry
field, main(), enter the full filename of the source code module that will
contain the main() function. The next set of tabs each contain one entry field,
Base source directory, used to record the base source directory for the source
files generated for the environment indicated on the tab. You can enter the
base source directory for OS/2 2.x, OS/2 1.x, Windows NT, and Windows 3.1. The
entry fields can either be left empty (if the current directory is the location
where the source files are to be placed) or it can be a valid path to another
location within your system or network.
The last tab, Other, provides three entry fields. The first entry field, .IPF
name, contains the name for the .IPF file that will be used to created the help
file. Help filename, contains the name of the final help file (.HLP). In the
last entry field, Window list, enter the text that will appear in the OS/2
Window list when you run the final application.
You can specify the methods to be used each time the design file is saved
through the File Save menu item. The following options allow you to specify how
Prominare Designer should be used for the project:
Option Description
.RES Selecting this option causes the OS/2 resources to be
saved directly to a .RES file instead of to a
resource script file (.RC), which must be compiled
with the Resource Compiler. The major advantage here
is this feature is inherently faster than the
resource compiler. It also allows for features
specific to resources, such as the control focus
feature, to be enabled.
.RC Selecting this option causes the resources to be
saved to a resource script file that must be compiled
by the Resource Compiler.
Borland .RC Selecting this option causes the resources to be
saved to a resource script file that must be compiled
by the Borland Resource Compiler.
Use master When you select this option, all source code is
generated using the master rules contained in the
directory specified through the Prominare Designer
Default Usage dialogue.
Use project To use rules for generating source code specific to
the project you are creating, select this option. A
copy of the master rules is copied into the project
subdirectory, allowing you to edit the default source
code rules through the Source menu.
Include header file Selecting this option causes Prominare Designer to
save the include file (.H) when symbols have been
added.
Source code files Selecting this option causes Prominare Designer to
save source files each time the design file is saved
through the File Save or File Save As menus. If no
source files exist, they are created; if the existing
source files are found, any new design information
added to the design file is incorporated into the
source files.
.IPF file Selecting this option causes Prominare Designer to
update .IPF files each time the design file is saved
through the File Save or File Save As menus. If no
.IPF file exists, one is created. If an existing .IPF
file is found, any new design information added to
the design file is incorporated into the .IPF file.
None Prevents advanced deletion control: items deleted or
renamed in the design are properly deleted or renamed
within the resource script, include header, and .IPF
files.
Don't verify Enables advanced deletion control: items deleted or
renamed are properly deleted or renamed in the design
within the resource script, include header, and .IPF
files.
Verify on save When you save a design, displays a dialogue showing
all items that have been deleted or renamed, allowing
you to ensure that they are properly deleted within
the resource script, include header, and .IPF files.
(See Edit Deletion List)
Windows Selecting this option causes the design to be
oriented around the Microsoft Windows 3.x
environment. Resource script file and source code
will be based on the Microsoft Windows 3.x APIs.
Windows NT Selecting this option causes the design to be
oriented around the Microsoft Windows NT environment.
Resource script file and source code will be based on
the Microsoft Windows NT APIs.
OS/2 1.x Selecting this option causes the design to be
oriented around the OS/2 1.x Presentation Manager
environment. The resource script file will be based
on the OS/2 1.x Presentation Manager.
OS/2 2.x Selecting this option causes the design to be
oriented around the OS/2 2.x Presentation Manager
environment. The resource script file will be based
on the OS/2 2.x Presentation Manager.
OS/2 3.0 Selecting this option causes the design to be
oriented around the OS/2 Warp 3.0 Presentation
Manager environment. The resource script file will be
based on the OS/2 3.0 Warp Presentation Manager.
OS/2 4.0 Selecting this option causes the design to be
oriented around the OS/2 Warp 4.0 Presentation
Manager environment. The resource script file will be
based on the OS/2 4.0 Warp Presentation Manager.
C Selects C as the language used for source code
generation.
C++ Selects C++ as the language used for source code
generation.
CommonView Selects CommonView class libraries as the source code
generation technique.
IBM UI Classes Selects IBM User Interface class libraries as the
source code generation technique.
Borland OWL Selects Borland OWL class libraries as the source
code generation technique.
ObjectPM Selects ObjectPM class libraries as the source code
generation technique.
Presentation Manager Bases the design on a normal OS/2 Presentation
Manager-type application.
Workplace Bases the design on a Workplace Shell-type
application.
PMCX control Bases the design on a PMCX control.
DLL Bases the design on a DLL where not main() function
is generated.
The Notes tab allows you to enter or edit design notes for the design file.
These notes are similar to those for each window or dialogue that you create,
except that they reside at the overall design level.
The tab contains a notebook in which each page displays an entry field labeled
Title, where the note title can be entered. Your name is automatically placed
in the entry field labeled Author. Enter notes in the multiple-line entry
field labeled Entry. The page shows date and time for the note beside the
entry fields. You can select the following options:
Option Usage
Word wrap Causes word wrapping when note text encroaches on the
right border of the multiple-line entry field. This
helps ensure that the contents of the note are
visible.
The Distribution tab allows you to define the resource files in which the
resources for a dialogue and tables are placed. The tab provided in the
dialogue contains two selections, .RC/.RES and Tables.
The .RC/.RES tab allows you to enter the location and names for the .RC and
.RES files that can be saved through Prominare Designer. You can add new
locations in the entry fields labeled .RC and .RES, or by clicking on the Add
push button. Change an entry by selecting the item in the list box and
changing the values in the entry fields, then clicking on the Change button.
Delete entries by selecting the item in the list box and clicking on the
Delete button.
The second tab, Tables, allows you to enter the location in which Prominare
Designer should place the association, message, and string tables. Since each
of these resource types resides in a single table, they cannot be distributed
among different resources.
ΓòÉΓòÉΓòÉ 5.10.3. Locate ΓòÉΓòÉΓòÉ
The Locate dialogue allows you to select the .RES or .RC file to be used.
Depending on the entry field containing the cursor, the dialogue will display
either .RES or .RC files. Through the Drives/Directories list box, you can
navigate to the location of the .RES or .RC file you wish to use as the target.
Once there, double click on the file in the Files list box or select the file
and then click on the Select button.
ΓòÉΓòÉΓòÉ 5.10.4. Define Design ΓòÉΓòÉΓòÉ
The Define Design dialogue allows you to make changes to the values in the New
Design dialogue or the Advanced New Design dialogue, those you initially used
to create the design you are working on. The options contained within the
Advanced New Design dialogue are similar to those in the Define Design
dialogue.
ΓòÉΓòÉΓòÉ 5.11. Opening, importing and merging files ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.11.1. Open ΓòÉΓòÉΓòÉ
The Open dialogue is used to open an existing design file for viewing or
editing. The dialogue allows you to select files from the current directory or
to select another drive/directory. You can select only design files (.PDF) from
within this dialogue.
The dialogue displays the current path; an entry field labeled Filename is used
to enter the name of the file you wish to open. Alternately, you can
double-click on the file in the Files list box to open the required file. After
the design file is read into memory, the list of dialogues and windows is
placed within the Window/dialogue drop down in the tool bar. The first entry
within the list is automatically selected and displayed.
ΓòÉΓòÉΓòÉ 5.11.2. Import ΓòÉΓòÉΓòÉ
Prominare Designer allows you to import an existing resource file that was
either compiled using the OS/2 Resource Compiler or created by the Dialogue Box
Editor. The Import dialogue is similar to the Open dialogue, except it only
lets you import compiled resource files (.RES) and resource script files (.RC),
or extract the resources from .DLL or .EXE files. Resources can be either OS/2
or Microsoft Windows.
Depending on the type of resource you wish to import, you must select the
appropriate environment and resource type from the dialogue. The following
options are available:
Option Usage
OS/2 Designates that resources are OS/2 format.
Windows 3.1 Designates that resources are Microsoft Windows 3.1
format.
Windows NT Designates that resources are Microsoft Windows NT
format.
.RES file Indicates that a .RES should be used as the import
file.
.RC Indicates that a .RC should be used as the import
file.
Borland .RC Indicates that a Borland .RC should be used as the
import file.
.EXE Indicates that a executable file should be used as
the import file.
.DLL Indicates that a dynamic link library file should be
used as the import file.
Once you have selected a resource file to open, the program will ask if you
wish to correlate the ID values within the resource file to values within the
include file. This is where symbols with the same value as the resource ID
being imported are matched. This process makes it easier to relate the
imported information to the actual application.
If Prominare Designer determines that you have not opened an include file and
have asked for correlation, you are prompted to open an include header file.
The Include Open dialogue is displayed; from here, select an include header
file.
Prominare Designer will try to match items within the resource file with
values from the include file. If there are items, such as menus and dialogues,
that use the same ID value, you may find that the actual ID symbol of an item
is not the same as you had originally defined. It is suggested that you view
each window and dialogue, checking each control value to ensure that the ID
symbols are the ones you want.
When importing script resources, make sure that you either have the INCLUDE=
variable within the environment set properly or you have set the appropriate
paths within the Prominare Designer Default Usage dialogue. Without the proper
include paths, errors will occur in trying to include header files specified.
At the present time, Prominare Designer imports only the following OS/2
resource items:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéControl ΓöéRestrictions Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéButtons, List Boxes, ΓöéIncluded in parent dialogue. Γöé
ΓöéGroup Boxes, Scroll Bars,Γöé Γöé
ΓöéSpin Buttons, Static Γöé Γöé
ΓöéItems, Sliders, Value Γöé Γöé
Γöésets, Notebooks, Γöé Γöé
ΓöéContainers, Circular Γöé Γöé
Γöésliders, Graphic buttons,Γöé Γöé
ΓöéHandwriting, Sketch Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAction Bar ΓöéIncluded in a new window in the design Γöé
Γöé Γöéfile, unless an existing window with theΓöé
Γöé Γöésame ID as the menu is found. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSub-Menu ΓöéIncluded in the same window as its Γöé
Γöé Γöéaction bar parent. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDialogues ΓöéImported without any restrictions. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBitmaps, Fonts, Icons, ΓöéThe definition for the bitmap, font, Γöé
ΓöéPointers Γöéicon or pointer is correctly imported. Γöé
Γöé ΓöéBitmaps, icons and pointers are Γöé
Γöé Γöéextracted from .RES files and saved backΓöé
Γöé Γöéto disk using the hexadecimal ID values Γöé
Γöé Γöéunder which they were referenced. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMessages, Strings ΓöéImported without any restrictions. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCustom Resources ΓöéOnly the definition is recorded; it is Γöé
Γöé Γöéextracted from .RES files and saved backΓöé
Γöé Γöéto disk using the hexadecimal ID values Γöé
Γöé Γöéunder which it was referenced. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAccelerators ΓöéDefinitions are placed within the windowΓöé
Γöé Γöéassociated with the accelerator table. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHelp Tables, Help ΓöéImported and assigned to appropriate Γöé
ΓöéSub-Tables Γöédialogues or windows. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
At the present time, Prominare Designer imports only the following Microsoft
Windows resource items:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéControl ΓöéRestrictions Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéButtons, List Boxes, ΓöéIncluded in parent dialogue. Γöé
ΓöéGroup Boxes, Scroll Bars,Γöé Γöé
ΓöéStatic Items Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAction Bar ΓöéIncluded in a new window in the design Γöé
Γöé Γöéfile. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSub-Menu ΓöéIncluded in the same window as its Γöé
Γöé Γöéaction bar parent. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDialogues ΓöéImported without any restrictions. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBitmaps, Cursors, Fonts, ΓöéThe definition for the bitmap, font, Γöé
ΓöéIcons Γöéicon or pointer is correctly imported. Γöé
Γöé ΓöéWindows bitmaps, icons and cursors Γöé
Γöé Γöé(pointers) are converted to a compatibleΓöé
Γöé ΓöéOS/2 2.x format and saved back to disk Γöé
Γöé Γöéusing the hexadecimal ID values under Γöé
Γöé Γöéwhich they were referenced. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéStrings ΓöéImported without any restrictions. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCustom Resources ΓöéThe definition is recorded; it is Γöé
Γöé Γöéextracted from .RES files and saved backΓöé
Γöé Γöéto disk using the hexadecimal ID values Γöé
Γöé Γöéunder which it was referenced. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAccelerators ΓöéDefinitions are placed within the windowΓöé
Γöé Γöéassociated with the accelerator table. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 5.11.3. Merge ΓòÉΓòÉΓòÉ
Prominare Designer allows you to merge an existing design file with the design
on which you are currently working. The Merge dialogue allows you to select
files from the current directory or to select another drive/directory. You can
select only design files (.PDF) from within this dialogue.
The dialogue displays the current path. Enter the name of the file you wish to
merge in the entry field labeled Filename. Alternately, double click in the
Files list box to merge the required file.
If the header file associated with the design file selected is different than
the current header file, you will be asked if it should be retrieved and merged
with the current header file. Prominare Designer will try to match up items
within the design file with values from the current ID list. If there are
items, such as menus and dialogues, that use the same ID value, you may find
that the actual ID symbol of an item is not the same as you had originally
defined it. It is suggested that you view each window and dialogue, checking
each control value to ensure that the ID symbols are the ones you want.
Once the design file is read into memory, the list of dialogues and windows is
placed in the Window/dialogue drop down in the tool bar. The first entry in the
list is automatically selected and displayed.
ΓòÉΓòÉΓòÉ 5.11.4. File Save As ΓòÉΓòÉΓòÉ
The File Save As dialogue is used to save the design file currently being
edited. It allows you to enter a new name for the file; specify if the include
(.H) and .IPF files should be automatically saved; and update or edit the
history, comments, and version information.
The entry field labeled Filename uses the current design filename as the
default to save under unless the current file is an untitled design file. In
this case, you can edit the name under which you wish to save the design file.
You do not need to include the design file extension (.PDF) when entering or
editing the name.
The multiple-line entry field labeled History is used to enter historical
information on the file, such as changes made to the design and date and
initiator of those changes.
Comments regarding the design can be entered in the multiple-line entry field
labeled Comments. The version number or name can be entered in the entry field
labeled Version.
You can specify whether or not the include file and source code files should be
saved each time the design file is saved, using the File Save menu item or this
dialogue. The following controls allow you to specify how Prominare Designer
should save the files:
Option Description
.RES Causes the resource information to be written
directly to the final resource file, bypassing the
Resource Compiler. This is significantly faster that
saving to a resource script file and then compiling
it with the Resource Compiler.
.RC Causes the resource information to be written to a
resource script, which must be compiled to the final
resource format by the Resource Compiler.
Include file Saves the include file (.H) each time symbols are
added. Uses the name of the file unless the include
file was just created--in which case Prominare
Designer prompts you for the name.
.IPF file Saves the .IPF file each time the design file is
saved. If no .IPF file exists, one is created. If an
existing .IPF file is found, any new design
information is incorporated into the .IPF file.
If you try to save a new design and a file by the same name already exists,
you will receive a message asking if you want to replace the existing file
with the new one. Clicking Yes replaces the existing file with the new one.
Clicking No cancels the save request.
ΓòÉΓòÉΓòÉ 5.12. Include files ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.12.1. Include Open ΓòÉΓòÉΓòÉ
The Include Open dialogue is used to open an existing include file (.H) on your
hard disk. It is similar to the Open dialogue except that it lets you open only
include files (.H). If you have not saved the current include file, you may be
prompted to save it before the Include Open dialogue is displayed. This occurs
only when symbols have been added to the include file since it was last saved
or opened.
ΓòÉΓòÉΓòÉ 5.12.2. Include Save As ΓòÉΓòÉΓòÉ
The Include Save As dialogue is used to save the include file currently being
edited. It also allows you to enter a new name for a file. The Filename entry
field automatically uses the current include name as the default name to save
under, unless the include file is untitled. You can edit the name under which
you wish to save the include file here.
ΓòÉΓòÉΓòÉ 5.12.3. Include View/Edit ΓòÉΓòÉΓòÉ
The Include View/Edit dialogue allows you to edit all the include symbols you
have defined. Two entry fields contained within the dialogue allow you to enter
or edit the include symbols. The entry field labeled Symbol is used for the
actual include symbol; the Value entry field is used for the symbol value.
The dialogue provides the following options to aid you:
Option Description
Decimal Changes the displayed ID symbol values in the list
box from hexadecimal to decimal. This also causes the
values displayed with the status window to be shown
in decimal as well.
Hex Changes the displayed ID symbol values in the list
box from decimal to hexadecimal. This also causes the
values displayed with the status window to be shown
in hexadecimal as well.
ΓòÉΓòÉΓòÉ 5.13. Printing ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.13.1. Print Design ΓòÉΓòÉΓòÉ
When printing the current window or dialogue (or all windows or dialogues), the
Print Design dialogue is used to specify how the output is to be formatted on
the page.
The dialogue allows you to position the output on the page vertically or
horizontally. Select the placement image for the desired effect. You can also
specify that the details of the window or dialogue be printed using a selected
font.
You can scale the output through the spin button labeled Percent scaling.
Default scaling is 100%, or 1:1. If you want output to be half size, enter 50.
Conversely, if you want to double the size of the output, enter 200. The
minimum is 10% and the maximum is 500%.
ΓòÉΓòÉΓòÉ 5.13.2. Printer Setup ΓòÉΓòÉΓòÉ
The Printer Setup dialogue allows you to select the destination device for
printed output, as well as to set up the device.
Select a printer or output device from the list box. You can set up the device
with the Setup... button; device-specific dialogues that let you configure the
device or select device options then appear.
ΓòÉΓòÉΓòÉ 5.14. Pre-designed dialogues ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.14.1. File Save Window/Dialogue Design ΓòÉΓòÉΓòÉ
The File Save Window/Dialogue Design dialogue allows you to enter a name under
which you can save the window or dialogue you are designing in the pre-designed
window/dialogue library. Through the pre-designed item in the New
Dialogue/Window dialogue, you can retrieve a window or dialogue to include in
your current design.
Enter the name for the file in the entry field labeled Filename. If you have
saved a previous window or dialogue under the same name, it will be replaced
with the new window or dialogue.
ΓòÉΓòÉΓòÉ 5.14.2. Delete Pre-designed Window/Dialogue ΓòÉΓòÉΓòÉ
The Delete Pre-designed Window/Dialogue dialogue allows you to select designs
to be deleted from the pre-design window/dialogue library.
You can delete more than one design by clicking on the pre-designed
window/dialogue description. Clicking the Delete button deletes your selections
from the library.
ΓòÉΓòÉΓòÉ 5.15. Searching and scanning ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.15.1. Search ΓòÉΓòÉΓòÉ
You can use the Search dialogue to search for text or symbols within the
current design. Enter the item you wish to search for in the appropriate entry
field, labeled Text or Symbol. You can search for either text or a symbol but
not for both at the same time.
The options provided within this dialogue are:
Option Usage
Case sensitive Causes search text to be case sensitive, matching
exactly with a target string.
Search help tables Used to search the help tables for the symbol
entered. This option is used only when a symbol is
being searched for, as help tables do not contain
text elements.
When you have entered the text or symbol and selected any options required,
click on the Search push button. Prominare Designer will search through the
file from the beginning until it finds the first occurrence. If it finds a
dialogue or window containing the item searched for, it displays it and
highlights the item if possible. If the item is located within a menu item or
help table, it still tries to show the dialogue or window, but instead of
highlighting a control it denotes the location (either a menu or a help table)
where the match was made.
To search for the next occurrence of the item, either select the Search next
menu item in the Find menu or press F4.
ΓòÉΓòÉΓòÉ 5.15.2. Scanning ΓòÉΓòÉΓòÉ
You can scan for errors at any time by double clicking button 2 when the mouse
pointer is over the Scan design button. If any errors are detected, a message
pops up. Selecting the Yes push button displays the Design Errors dialogue.
The Design Errors dialogue displays all detected errors in a list box. When you
click on an item within the list, the error information is displayed in the
dialogue below the list boxes.
To immediately jump to the problem window or dialogue, just double click on the
entry in the list box. The dialogue remains displayed while you make the
correction, allowing you to select the next problem you wish to correct.
The dialogue is also displayed during the resource save stage if you allow
scanning for errors. Note that if the dialogue is displayed during this stage,
the resource script or binary files are not updated, as they would be in error.
You need to make the corrections to the problems listed within the Design
Errors dialogue and then save the design information once again.
ΓòÉΓòÉΓòÉ 5.16. Creating windows or dialogues, notebook pages and pop-up menus ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.16.1. New Dialogue/Window ΓòÉΓòÉΓòÉ
The New Dialogue/Window dialogue allows you to select the type of dialogue,
notebook, settings notebook, pop-up menu, pre-designed window or dialogue, or
window you wish to create.
Each type is represented by a graphical image. The first four are for
dialogues; you can select the dialogue type with or without buttons, as
follows:
Symbol Usage
Dialogue with buttons aligned at bottom
Dialogue with buttons aligned at right
Dialogue with one button at the bottom
Dialogue with no buttons
Notebook page
Notebook settings page
Pop-up menu
Pre-designed dialogue or window
Window
The notebook type is used to create a page for notebooks contained within a
window or dialogue. It is only available when you have placed a notebook
control within a window or dialogue. Once you have selected the type, a
secondary dialogue, Notebook Parent, is displayed. From here you can select
the dialogue or window containing the notebook, as well as the notebook the
page is to reside within. This allows Prominare Designer to display the proper
size of the notebook. The settings notebook type is used to create a Workplace
Settings page. It is only available once you have selected the Workplace
option in the New Design or Define Design dialogues. The pop-up menu type is
used to create a pop-up menu through the Pop-up Menu dialogue. The pre-
designed window/dialogue type displays the Pre-designed Window/Dialogue
dialogue. Select the window or dialogue to retrieve from the list presented.
If no windows or dialogues are predefined, the type is disabled.
ΓòÉΓòÉΓòÉ 5.16.2. Window/Dialogue Styles ΓòÉΓòÉΓòÉ
The Window/Dialogue Styles dialogue allows you to select the following options:
Option Description
Type Used to select the window or dialogue type. Valid
types are:
Type Purpose
Dialogue Designates that a dialogue is to
be created.
Parent window Designates that a parent window
is to be created.
Child window Designates that a child window is
to be created.
Notebook page Designates that a notebook page
is to be created.
Notetab page Designates that a notetab page is
to be created.
PMCX window Designates that the window is a
PMCX control.
WP settings page Designates a panel as a Workplace
settings page.
Option Description
Relative Selects the relative position from which the dialogue
should orient itself. Valid positions are:
Type Purpose
Window Sets the position of the dialogue
display relative to that of its
parent window. You can select
this option only when the
dialogue option is active.
Screen Sets the position of the dialogue
display relative to that of the
desktop. You can select this
option only when the dialogue
option is active.
Mouse Sets the position of the dialogue
display relative to that of the
mouse pointer. You can select
this option only when the
dialogue option is active.
Parent Selects the parent of the child window. Valid parents
are:
Type Purpose
Desktop Designates that the window being
created is a descendent of the
desktop. This is the default for
parent windows.
Main window Designates that the window being
created is a descendent of the
main parent window of the
application. Windows created
using this option can reside only
within the parent window confines
and cannot be moved to the
desktop.
Object window Designates that the window being
created is an object window.
Code page Selects the code page the window or dialogue template
should use. Different sets of code pages are
available depending on the target environment. The
code page is not used with the Borland Resource
Compiler.
Generate code Allows you to generate code for the window or
dialogue procedure. (There may be cases where you do
not want to generate code for the window or dialogue
procedure.)
Method Determines where the window is created. Can be one of
the following:
Type Purpose
None Indicates that the window
creation will be placed within
the source code at a later point;
Prominare Designer should not
provide code to create the
window.
main() Designates that the window being
created should be created within
the main() function.
WM_CREATE Designates the window being
created should be created within
the WM_CREATE of another window,
selected through the Associated
drop down list (which contains
the IDs). The list is down only
when the window in the Associated
list is first being created. If
you select this option after the
associated window has been
created, the creation code will
not be placed in the WM_CREATE
due to Prominare Designer's code
generation rules.
Parent Selects the parent dialogue or window in which the
tab is to be used.
Notebook Selects the window in which the notebook is to be
used. This allows proper sizing of the page and
proper placement of the controls within it.
Auto-update Allows the auto-help feature to use the help
sub-table and panel definitions, automatically
generating the help sub-table item entries for the
window or dialogue. Only interactive controls that
can receive focus are included in the help sub-table.
Only once you have selected the style dialogue for
the control and selected the Enter button in the
dialogue will the help information be updated.
Title bar Includes a title bar in the window or dialogue.
System menu Includes a system menu in the window or dialogue.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
window or dialogue.
Vert. scroll bar Includes a vertical scroll bar at the right of the
window or dialogue.
Visible Designates the window or dialogue as initially
visible. Even if this option is not selected,
Prominare Designer will display the window or
dialogue.
Size border Includes a sizing border as the frame of the window
or dialogue.
Border Includes a simple border as the frame of the window
or dialogue.
Dialogue frame Includes a dialogue frame as the frame of the window
or dialogue.
System modal Makes the window or dialogue system modal. A system
modal window or dialogue, when used, does not allow
the focus to be directed to other active windows.
This option should be used sparingly--only when you
need the user's attention for a critical process.
Menu Includes an action bar menu in the window. This
option is not available for dialogues.
Min box Includes a minimize box in the window or dialogue.
Max box Includes a maximize box in the window or dialogue.
Hide button Includes a hide button in the window or dialogue.
Used in place of the Min box.
Accelerators Allows accelerators within a window.
Standard Sets the window as standard. When this option is
used, all other options selected are ignored.
Standard windows are based on the following options:
Accelerators, Icon, Menu, Min box, Max Box, Shell
position, Size board, System menu, Task list, and
Title bar.
Shell position Designates that window size and position should be
determined by the system when it is created. Auto
icon Prevents the WM_PAINT message from being sent to
the window when it is minimized. Generally used to
increase performance.
DBCS status Causes a DBCS status line to be added to the bottom
of the window when the application is being executed
on a DBCS system.
Close button Causes a close button to be included within the title
bar. This style option is available only on OS/2
Warp Version 4 and above.
Task list Adds the window or dialogue title to the application
entries within the OS/2 Task list.
The dialogue also contains fields that allow you to define the window or
dialogue you are creating. The MLE, Title, is used to show the user displayed
title bar text. Enter the text of the title bar in this field.
The second field, ID, is used for the ID symbol of the window or dialogue.
Enter the ID symbol and value or select it from the drop-down list. If the
values you enter are not defined in the include header file, they are added
automatically.
Initially, the ID field contains a number. Each window or dialogue must
contain an ID value between 1 and 65,535. Providing a symbolic value makes it
easy to reference the window or dialogue in the source code. The symbolic
value is usually a simple description of the topic of the window or dialogue.
For example, DLG_FILEOPEN describes the symbolic value for a File Open
dialogue. If the symbol and value you want to use are already defined in the
include header file, you can select the value from the drop-down list.
The next entry field, Function, is used to define the function name for the
window or dialogue. It is used in conjunction with the Filename combination
box, where the function will be located. If you are using Prominare Designer
to generate and update the source modules according the windows and dialogues
within the design file, you must complete these two entry fields.
The Filename combination box contains a list of source modules you've defined.
Select one to place the code generated for the window. Enter the name of the
file where the source code is to be placed, or select an entry from the
combination box drop-down list box. The final entry field, Description,
provides a short description of the window or dialogue. This information must
be entered.
The Distribution tab contains four Tabs: Dialogue, Menu, Accelerator Table,
and Help tables. The Window or Dialogue tab shows the possible resource files
you have defined through the Distribution tab of the Advanced New Design or
Define Design dialogues. Select the resource file location of the dialogue,
window, menu, accelerator or help table by selecting the item from the list
box within the page.
If you are using the OS/2 Resource Compiler to both compile and bind the
resources, you will only be able to bind the first resource file found to the
executable or dynamic link library. The Messages tab allows you to select the
messages to be included within the generated source code for a window or
dialogue procedure. The tab contains a list box from which the possible
messages can be selected.
The messages selected through the Source Code Layout dialogue for a window or
dialogue are pre-selected within the list. If you do not want to include the
message within the window or dialogue procedure, you need only deselect the
item from the list. Add messages by clicking on the message within the list.
Once the source code is generated for the window or dialogue procedure, the
code generator checks to see if the message is contained within the procedure.
If it isn't, the message and the code defined for it are added. When you
create a new window or child window, you need to provide information regarding
storage variables for information returned back to the application by OS/2
Presentation Manager. This information can be created by selecting the
Definitions tab in the dialogue where you are defining the window or child
window.
The Definitions tab contains entry fields for various items. These entry
fields are:
Entry Field Description
Base Defines the base variable name. By entering the base
name, you can use the Update definitions push button
to create the default names for most of the other
entry fields. For example, if you are calling the
program Test, enter Test in the entry field.
Queue Used for the message queue handle variable name. With
the example name used in the Base entry field, the
message queue variable would become hmqTest when the
Update definitions push button is used to generate
the variable names.
Frame Used for the window frame handle variable name. With
the example name used in the Base entry field, the
window frame handle variable would become
hwndTestFrame when the Update definitions push button
is used to generate the variable names.
Client Used for the window client handle variable name. With
the example name used in the Base entry field, the
window client handle variable would become hwndTest
when the Update definitions push button is used to
generate the variable names.
Menu Used for the window menu handle variable name. With
the example name used in the Base entry field, the
window menu handle variable would become hmenuTest
when the Update definitions push button is used to
generate the variable names.
Name Used for the window class name. With the example name
used in the Base entry field, the window class name
would become Test when the Update definitions push
button is used to generate the variable names.
Definition Used for the window class name variable name. With
the example name used in the Base entry field, the
window class name variable would become
pszTestClassName when the Update definitions push
button is used to generate the variable names.
You can ensure that variable names are always user defined with the following
option:
Option Description
User define Used to prevent the Update definitions push button
from overriding entered values.
When you use this option, you must enter the various variable name
definitions.
ΓòÉΓòÉΓòÉ 5.16.3. Notebook Parent ΓòÉΓòÉΓòÉ
The Notebook Parent dialogue is used to select the notebook for which a page is
created. The parent of the notebook, namely the window or dialogue that
contains the target notebook, must first be selected from the Parent drop-down
list. The notebooks contained within the window or dialogue selected are listed
in the Notebook drop-down list. Select the notebook for which the page is to be
created for from this list.
ΓòÉΓòÉΓòÉ 5.16.4. Pre-designed Window/Dialogue ΓòÉΓòÉΓòÉ
The Pre-designed Window/Dialogue dialogue shows a list of selectable windows
and dialogues that have been saved to the pre-designed library.
The dialogue list box shows descriptions of the window or dialogue instead of
IDs. This lets you fully utilize the pre-design facility, since some of the
pre-designed windows or dialogues can be very abstract.
Select a window or dialogue by clicking on the entry in the list box and then
clicking on the Retrieve button. The window or dialogue selected is then
displayed, allowing you to make changes or create another window or dialogue.
Care should be exercised with the window or dialogue retrieved, especially if
it contains pre-defined ID symbols. Prominare Designer will try to resolve the
symbols with ones currently defined, but if the symbol does not yet exist
within the current design, it will be added to the include header information.
ΓòÉΓòÉΓòÉ 5.16.5. Pop-up Menu ΓòÉΓòÉΓòÉ
The Pop-up Menu dialogue allows you to enter the ID symbol and value for the
pop-up menu. If the symbol and value you want to use are already defined in the
include header file, you can easily select the value from the drop-down list.
Once you have created the pop-up menu, use the Control menu item or the Tools
window to add menu items.
ΓòÉΓòÉΓòÉ 5.17. Creating and editing controls ΓòÉΓòÉΓòÉ
Each styles dialogue allows you to enter the text to be used with the control
(if text is used with a control), ID symbol, and value, along with the control
styles. Enter the text for the control in the Text MLE and the ID symbol and
value through the ID field. Initially, the ID field will contain a value
automatically generated by Prominare Designer. This value is chosen by
determining the highest control value within the design file and increasing
that value by one.
You can edit the symbolic ID and the value for the button control. If the
symbol and value you want to use are already defined in the include header
file, you can easily select it from the drop-down list.
It is also possible to set font and colours for the button control. Font and
colours control the way the control is displayed within the window or dialogue.
Click on the Font & Colours tab, which allows you to set the colours and the
font for the button control.
If you need to provide bidirectional support for the control, you can use the
Bidi tab. The bidirectional options contained within the tab will be used with
the control on systems that support bidirectional languages.
Also, if you are enabling your application to be pen aware, the Pen tab will be
available if you have Pen for OS/2 installed on your system and are designing
an application for OS/2 Warp and above. The Pen tab will contain a series of
tabs that can be used to define the capabilities to pen awareness for the
control. The only controls for which the Pen tab will be available are: Entry
field, Combo box, MLE, Spin Button and Handwriting.
Note: Options (radio buttons and check boxes) in the following dialogues that
are coloured black are common between OS/2 Presentation Manager and
Microsoft Windows. Options coloured dark red are unique to the target
environment for which you are designing. Bright red options in the OS/2
styles dialogues indicate OS/2 2.x-specific options. Bright green
options in the OS/2 styles dialogues indicate MMPM/2 or Pen for OS/2
options. Bright purple options in the OS/2 styles dialogues indicate
OS/2 Warp-specific options.
ΓòÉΓòÉΓòÉ 5.17.1. Button Styles (expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Push button Designates the control being created as a push
button.
Check box Designates the control being created as a simple
check box. The check box will not be toggled when
selected. Auto check box Designates the control being
created as a toggling check box. The check box will
be toggled when selected.
Radio button Designates the control being created as a simple
radio button. The application must provide the
necessary logic to deselect other radio buttons
within the group the button belongs to.
Auto radio button Designates the control being created as an
auto-selected radio button within a group of radio
buttons. When the radio button is selected, it
automatically highlights itself and deselects any
other radio button within its group.
3 state Designates the control being created as a complex
check box. The check box will not be toggled when
selected but can have three states: unchecked,
checked, and indeterminate. An indeterminate check
box is shown with the interior of the box grayed.
Auto 3 state Designates the control being created as a toggled
complex check box. The check box will be toggled in
order between three states: unchecked, checked, and
indeterminate.
User button Designates the control being created as a user
button. The application must provide the necessary
logic to handle the painting, inverting, or disabling
of the button. The parent is notified when the button
is selected.
Notebook button Designates the control being created as a notebook
button. The button is only used in conjunction with
the OS/2 Warp Version 4 tabbed notebooks.
Default Designates that the push button should contain the
default emphasis.
SYSCOMMAND Designates that the push button is used to invoke a
WM_SYSCOMMAND message.
No pointer select Prevents an auto radio button from being
automatically selected when a user moves the cursor
to the button with the cursor-movement keys.
Checked Sets the check state of a radio button, check box, or
three-state check box. Selecting the option causes
the button to be selected when the dialogue is first
displayed.
Autosize Causes the button to be automatically sized to the
text.
Bitmap Designates that the push button be able to accept a
bitmap image.
Icon Designates that the push button be able to accept an
icon image.
Help Designates that the push button is used to invoke
help.
No border Designates that the push button be drawn without a
border.
No focus Designates that the button control should not receive
the focus when selected.
Hilighted Sets the highlight state of a push button.
Text Designates that the push button be able to accept
text with the icon image.
Mini-icon Designates that the push button use a smaller size of
the icon when an icon image is used within the push
button.
When creating push button controls, you should be aware of two predefined
values in OS/2 Presentation Manager that you can use. The first, defined as
DID_OK, is usually associated with the OK push button. The second value,
defined as DID_CANCEL, is generally associated with the Cancel push button.
Prominare Designer allows you to select either value from the ID field but
will not place the definitions within the include header file, since they are
already defined within the OS/2 Presentation Manager include header files.
ΓòÉΓòÉΓòÉ 5.17.2. Push Button Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Default Designates that the push button should contain the
default emphasis.
SYSCOMMAND Designates that the push button is used to invoke a
WM_SYSCOMMAND message.
Autosize Causes the button to be automatically sized to the
text.
Bitmap Designates that the push button be able to accept a
bitmap image.
Icon Designates that the push button be able to accept an
icon image.
Help Designates that the push button is used to invoke
help.
No border Designates that the push button be drawn without a
border.
No focus Designates that the button control should not receive
the focus when selected.
Hilighted Sets the highlight state of a push button.
Text Designates that the push button be able to accept
text with the icon image.
Mini-icon Designates that the push button use a smaller size of
the icon when an icon image is used within the push
button.
When creating push button controls, you should be aware of two predefined
values in OS/2 Presentation Manager that you can use. The first, defined as
DID_OK, is usually associated with the OK push button. The second value,
defined as DID_CANCEL, is generally associated with the Cancel push button.
Prominare Designer allows you to select either value from the ID field but
will not place the definitions within the include header file, since they are
already defined within the OS/2 Presentation Manager include header files.
ΓòÉΓòÉΓòÉ 5.17.3. Check Box Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Auto Designates the control being created as a toggling
check box. The check box will be toggled when
selected.
3 state Designates the control being created as a complex
check box. The check box will not be toggled when
selected but can have three states: unchecked,
checked, and indeterminate. An indeterminate check
box is shown with the interior of the box grayed.
No pointer select Prevents an auto radio button from being
automatically selected when a user moves the cursor
to the button with the cursor-movement keys.
Checked Sets the check state of a radio button, check box, or
three-state check box. Selecting the option causes
the button to be selected when the dialogue is first
displayed.
No focus Designates that the button control should not receive
the focus when selected.
Autosize Causes the button to be automatically sized to the
text.
ΓòÉΓòÉΓòÉ 5.17.4. Radio Button Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Auto Designates the control being created as an
auto-selected radio button within a group of radio
buttons. When the radio button is selected, it
automatically highlights itself and deselects any
other radio button within its group.
No pointer select Prevents an auto radio button from being
automatically selected when a user moves the cursor
to the button with the cursor-movement keys.
Checked Sets the check state of a radio button, check box, or
three-state check box. Selecting the option causes
the button to be selected when the dialogue is first
displayed.
Autosize Causes the button to be automatically sized to the
text.
No focus Designates that the button control should not receive
the focus when selected.
Hilighted Sets the highlight state of a push button.
ΓòÉΓòÉΓòÉ 5.17.5. Scroll Bar Styles ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Thumb size Sets the size of the scroll bar slider. When you use
this style, you must complete the entry fields for
slider range and size.
Auto track Allows the scroll bar slider to move when selected by
the mouse pointer. Used instead of an outline
representation.
Autosize Causes the scroll to change size to reflect the
amount of data within a window or dialogue.
When selecting the Thumb size option, you must enter the range and size of the
scroll bar slider. Enter the low limit of the range in the Low range entry
field and the top limit in the High range entry field.
The actual size of the scroll bar slider is determined by the value entered in
the Visible entry field. Enter the total number of items that the scroll bar
is to handle in the Total entry field.
ΓòÉΓòÉΓòÉ 5.17.6. List Box Styles ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Multiple selection Designates the list box as able to handle multiple
selections of items within it. By default, a list box
allows only one selection at any given time.
User redraw Designates that the application program is to draw
each item within the list box. No adjust position
Designates that the list box should not adjust its
height to a multiple number of items contained within
it.
Horz. scroll Includes a horizontal scroll bar at the bottom of the
list box. The bar allows the contents of the list box
to be scrolled horizontally when the items displayed
in the list box are wider than the list box itself.
Extended selection Designates the list box as able to handle multiple
selections of items within it, using a combination of
the mouse and keyboard where groups can be selected
quickly. By default, a list box allows only one
selection at any given time.
ΓòÉΓòÉΓòÉ 5.17.7. Entry Field Styles ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Left aligned Aligns the text in the entry field with the left
edge. Text entered by the user will shift right
within the entry field.
Centered Centers the text in the entry field. When text is
entered, the contents of the entry field will shift
left and right, keeping the middle point of the text
centered in the entry field.
Right aligned Aligns the text in the entry field with the right
edge. Text entered by the user will shift left within
the entry field.
Auto horz. scroll Causes text in the entry field to be scrolled when
entered by the user.
Margin Displays a margin denoting the actual limits of the
entry field.
Auto tab Causes the entry field to tab to the next control
when the user is entering text and the limit of the
entry field has been reached.
Read only Prevents the entry field from accepting text input by
the user.
Command Denotes the entry field as a command entry field.
This information is used by the Help Manager to
provide command help on user request. No more than
one entry field in the window or dialogue should use
this style.
Unreadable Shows all input into the entry field as asterisks
(*). This option is useful for entry fields such as
passwords, in which the contents should be prevented
from being determined visually.
Autosize Automatically sizes the entry field to the text.
Any Causes the entry field to contain a mixture of
double-byte and single-byte
SBCS Makes the entry field accept single-byte characters
only.
DBCS Makes the entry field accept double-byte characters
only.
Mixed Makes the entry field accept a mixture of single- and
double-byte characters. Unlike the Any option, this
allows ASCII DBCS data to be converted to EBCDIC DBCS
data without causing an overflow error.
The Start and End labeled entry fields allow you to enter the starting and
ending index positions (zero indexed) of the text to be selected. For example,
if you set the maximum number of characters in the Size entry field to 25, you
can select the entire entry field by entering 0 in the Start entry field and
25 in the End entry field. You can also select portions of the text within the
entry field by setting the appropriate values.
It is possible to set the maximum number of characters that the entry field
can accept by entering the desired value in the Size entry field. In this
case, you need not include any logic within the dialogue procedure to set the
size.
ΓòÉΓòÉΓòÉ 5.17.8. Static Styles (expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Text Designates the control as static text.
Group box Designates the control as a group box.
Icon Designates the control as an icon.
Bitmap Designates the control as a bitmap.
System icon Designates the control as a system icon.
Autosize Sizes the control area to the control text
automatically.
Foreground rect. Designates the control as a foreground rectangle.
Halftone rect. Designates the control as a halftone rectangle.
Background rect. Designates the control as a background rectangle.
Foreground frame Designates the control as a foreground frame.
Halftone frame Designates the control as a halftone frame.
Background frame Designates the control as a background frame.
Left aligned Displays the static text left aligned within the
limits of its display rectangle, as determined by its
width and height.
Horz. centered Displays the static text horizontally centered within
the limits of its display rectangle, as determined by
its width and height.
Right aligned Displays the static text right aligned within the
limits of its display rectangle, as determined by its
width and height.
Top aligned Displays the static text top aligned within the
limits of its display rectangle, as determined by its
width and height.
Vert. centered Displays the static text centered vertically within
the limits of its display rectangle, as determined by
its width and height.
Bottom aligned Displays the static text bottom aligned within the
limits of its display rectangle, as determined by its
width and height.
Word wrap Breaks the static text into two or more lines at a
space or word break, to fit within the limits of its
display rectangle as determined by its width and
height. You should also select the Top aligned option
if you want the word to break as intended.
Halftone Shows the static text in halftone.
Mnemonic Allows a mnemonic association for the static text.
The mnemonic is denoted by the tilde character (~)
before the letter that is to act as the mnemonic. It
will appear underlined when drawn.
When you use the Word wrap style, you can force a break in the entered text
using either \n or \r where the word break is to occur. Or press the <ΓöÿENTER
key at that point.
Static Control Restrictions
Text None.
Group box Contents of group box will not use font and colours selected.
Frame Text font and colours do not apply.
Rectangle Text font and colours do not apply.
ΓòÉΓòÉΓòÉ 5.17.9. Group Box Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Halftone Shows the group box text in halftone.
Mnemonic Allows a mnemonic association for the group box text.
The mnemonic is denoted by the tilde character (~)
before the letter that is to act as the mnemonic. It
will appear underlined when drawn.
ΓòÉΓòÉΓòÉ 5.17.10. Text Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Left aligned Displays the static text left aligned within the
limits of its display rectangle, as determined by its
width and height.
Horz. centered Displays the static text horizontally centered within
the limits of its display rectangle, as determined by
its width and height.
Right aligned Displays the static text right aligned within the
limits of its display rectangle, as determined by its
width and height.
Top aligned Displays the static text top aligned within the
limits of its display rectangle, as determined by its
width and height.
Option Description
Vert. centered Displays the static text centered vertically within
the limits of its display rectangle, as determined by
its width and height.
Bottom aligned Displays the static text bottom aligned within the
limits of its display rectangle, as determined by its
width and height. Word wrap Breaks the static text
into two or more lines at a space or word break, to
fit within the limits of its display rectangle as
determined by its width and height. You should also
select the Top aligned option if you want the word to
break as intended.
Halftone Shows the static text in halftone.
Mnemonic Allows a mnemonic association for the static text.
The mnemonic is denoted by the tilde character (~)
before the letter that is to act as the mnemonic. It
will appear underlined when drawn.
Autosize Sizes the control area to the control text
automatically.
When you use the Word wrap style, you can force a break in the entered text
using either \n or \r where the word break is to occur. Or press the <ΓöÿENTER
key at that point.
ΓòÉΓòÉΓòÉ 5.17.11. Icon Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The value for the icon should be a value that you have used for an icon defined
through the Bitmap, Font, Icon and Pointer dialogue. By doing so, OS/2 PM will
properly load and display the icon within the final dialogue.
ΓòÉΓòÉΓòÉ 5.17.12. Bitmap Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The value for the bitmap should be a value that you have used for a bitmap
defined through the Bitmap, Font, Icon and Pointer dialogue. By doing so, OS/2
PM will properly load and display the bitmap within the final dialogue.
ΓòÉΓòÉΓòÉ 5.17.13. Frame Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Foreground frame Designates the control as a foreground frame.
Halftone frame Designates the control as a halftone frame.
Background frame Designates the control as a background frame.
ΓòÉΓòÉΓòÉ 5.17.14. Rectangle Styles (non-expert mode) ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Foreground rect. Designates the control as a foreground rectangle.
Halftone rect. Designates the control as a halftone rectangle.
Background rect. Designates the control as a background rectangle.
ΓòÉΓòÉΓòÉ 5.17.15. System Icon Styles ΓòÉΓòÉΓòÉ
You select from the displayed system icons the image to use.
ΓòÉΓòÉΓòÉ 5.17.16. Combo Box Styles ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
Simple Designates the combination box as a simple
combination box that always displays its list box.
The entry field of the combination box can be edited
by the user or can be completed by selecting items
within the displayed list box.
Drop down Designates the combination box as a combination box
that displays the list box only when the user clicks
on the drop-down button at the right end of the entry
field. When the user selects an item within the list
box, the entry field is completed with the item
selected and the list box hidden. If the user clicks
the drop-down button a second time, the list box is
also hidden. The user can edit the entry field like
as in the simple combination box.
Drop down list Designates the combination box as a drop-down list,
similar in operation to the drop down combination box
except that the entry field cannot be edited by the
user.
Any Causes the entry field to contain a mixture of
double-byte and single-byte characters
SBCS Causes the entry field to accept single-byte
characters only.
DBCS Causes the entry field to accept double-byte
characters only.
Mixed Causes the entry field to accept a mixture of single-
and double-byte characters. Unlike the Any option,
this allows ASCII DBCS data to be converted to EBCDIC
DBCS data without causing an overflow error.
Horz. scroll Causes the text within the entry field to scroll when
it is entered by the user.
ΓòÉΓòÉΓòÉ 5.17.17. Multi-line Entry Styles ΓòÉΓòÉΓòÉ
The following options are available for the styles:
Option Description
None Indicates no import/export preference.
Text Indicates text import/export format.
No translate Indicates no translation of CR/LF combinations for
import/ export.
Windows format Indicates that Windows CR/LF translation should be
used for import/export.
Limit horz. Indicates that the formatting rectangle should be
limited horizontally.
Limit vert. Indicates that the formatting rectangle should be
limited vertically.
Match window Indicates that the formatting rectangle should match
the window limits.
Border Draws a border around the multiple-line entry field.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
multiple-line entry field, allowing the user to
scroll the contents of the multiple-line entry field
horizontally.
Vert. scroll bar Includes a vertical scroll bar at the right of the
multiple-line entry field, allowing the user to
scroll the contents of the multiple-line entry field
vertically.
Ignore tab Prevents the multiple-line entry field from acting on
the TAB and Shift+TAB keys.
Read only Prevents the user from entering text in the
multiple-line entry field. This option can be used
when lengthy items of static text must be displayed
within a window or dialogue.
Word wrap Causes the multiple-line entry field to break lines
longer than the width of the multiple-line entry
field into more than one line. The text is broken
from one line to the next at a space, tab, or
line-break.
Disable undo Prevents undo buffers (total 128 KB) from being
created for the multiple-line entry field. This
reduces the memory required for the control and makes
it faster.
Limit vertical scroll Used to display the last MLE line at the bottom of
the screen page. When this style is not used, the MLE
control shows an empty space between the last MLE
line and the bottom of the screen page.
You can also specify the size of the MLE in the Size entry field. The value
entered is used to set the total number of characters that the MLE can accept.
A value of -1 indicates unbounded input. The starting and ending selection
points for the MLE are specified via the Start and End entry fields. The
formatting rectangle is defined in the Width and Height entry fields. Note
that the values for the formatting rectangle are in pixels and not dialogue
units.
ΓòÉΓòÉΓòÉ 5.17.18. Spin Button Styles ΓòÉΓòÉΓòÉ
Note: This control is only available with OS/2 Version 1.3 and above. You need
the IBM OS/2 1.3, 2.x or Warp Toolkit to use it in your final
application.
The following options are available for the styles:
Option Description
Master Designates the spin button as the master consisting
of at least one single spin field.
Servant Creates a multi-field spin button by spinning
servants from the master.
Left Left justifies text input.
Centered Centers text input.
Right Right justifies text input.
All characters Allows any character to be entered in the spin field.
Numeric only Allows only numeric values to be entered in the spin
field
Read only Prevents values from being typed into the spin field.
No border Creates a spin field without a border
Fast spin Enables the spin button to increase the spin speed
with time. (The spin speed doubles every two
seconds.)
Zero pad Pads the output number at the front with zeroes
between the first non-zero digit number and the field
width, or with 11 characters (whichever is lesser).
You can set the entry area width of the spin button field in the Size entry
field. Set the starting and ending values of the spin button in the Lower and
Upper entry fields. The values are recognized only if you have selected the
Numeric only style. If the spin button is a servant, you can specify the
master Id of the owning spin button through the Master ID drop-down.
Depending on the level of the operating system with which you are using
Prominare Designer, you may be able to set the width of the entry area, lower
and upper numerical limit, and ID of the master spin button.
ΓòÉΓòÉΓòÉ 5.17.19. Container Styles ΓòÉΓòÉΓòÉ
Note: The following control, Container, is only available with OS/2 Version
2.x and above. You need the OS/2 2.x or Warp Toolkit to use these in
your final application.
The following options are available for the styles:
Option Description
Single Allows only one container item to be selected at a
time. Single selection is valid for all views and is
the only type supported for the tree view.
Extended Allows one or more container items to be selected in
any combination. Extended selection is valid for all
views except the tree view.
Multiple Allows the selection of none, some, or all of the
container items. Valid for all views except the tree
view.
Auto position Allows the container items to be automatically
arranged when the window size changes, an item is
inserted, removed, sorted, invalidated, or filtered,
or when the font or font size changes. Valid only
with the icon view.
Verify pointer Verifies that the application pointers are members of
the container's linked list before they are used.
Generally, the Verify pointer style is used when
developing the application.
Read only Makes the entire container read only. Prevents a user
from editing the container item text.
Mini record Causes the container to allocate records as smaller
than they would otherwise be. The MINIRECORDCORE data
structure is used instead of RECORDCORE.
Mini-icons Allows the use of mini-icons in the MINIRECORDCORE
structure.
No control pointer Prevents the container from sending the
WM_CONTROLPOINTER message to the window or dialogue
owning the control.
ΓòÉΓòÉΓòÉ 5.17.20. Slider Styles ΓòÉΓòÉΓòÉ
Note: The following control, Slider, is only available with OS/2 Version 2.x
and above. You need the OS/2 2.x or Warp Toolkit to use these in your
final application.
The following options are available for the styles:
Option Description
Horizontal Orients the slider horizontally.
Vertical Orients the slider vertically.
Center Centers the slider in the slider window.
Bottom Positions the slider at the bottom of the slider
window. This is valid only for horizontal sliders.
Top Positions the slider at the top of the slider window.
This is valid only for horizontal sliders.
Left Positions the slider at the left of the slider
window. This is valid only for vertical sliders.
Right Positions the slider at the right of the slider
window. This is valid only for vertical sliders.
Left Locates the incremental buttons to the left of the
slider shaft. This is valid only for horizontal
sliders.
Right Locates the incremental buttons to the right of the
slider shaft. This is valid only for horizontal
sliders.
Bottom Locates the incremental buttons to the bottom of the
slider shaft. This is valid only for vertical
sliders.
Top Locates the incremental buttons to the bottom of the
slider shaft. This is valid only for vertical
sliders.
Bottom Causes the slider to use the bottom edge as the base
value for incrementing. This is valid only for
vertical sliders.
Top Causes the slider to use the top edge as the base
value for incrementing. This is valid only for
vertical sliders.
Left Causes the slider to use the left edge as the base
value for incrementing. This is valid only for
horizontal sliders.
Right Causes the slider to use the right edge as the base
value for incrementing. This is valid only for
horizontal sliders.
Snap to increment Causes the slider arm to move to the nearest
increment when it is between two tick marks.
Owner draw Notifies the application when the slider shaft,
ribbon strip, and slider background are to be drawn.
Read only Prevents the user from interacting with the slider.
Generally, this is provides a visual indication of
the percentage of an operation completed.
Ribbon strip Fills the strip with a colour different from that of
the slider shaft between the home position of the
slider and the slider arm, giving the appearance of
the mercury in a thermometer.
Scale 1 Uses the increment spacing specified for scale 1 as
the incremental value for positioning the slider arm.
For horizontal sliders, displayed above the slider
and for vertical sliders to the right.
Scale 2 Uses the increment spacing specified for scale 2 as
the incremental value for positioning the slider arm.
For horizontal sliders, displayed below the slider
and for vertical sliders to the left.
ΓòÉΓòÉΓòÉ 5.17.21. Value Set Styles ΓòÉΓòÉΓòÉ
Note: The following control, Value Set, is only available with OS/2 Version
2.x and above. You need the OS/2 2.x or Warp Toolkit to use these in
your final application.
The following options are available for the styles:
Option Description
Bitmap Designates the value set items as bitmaps.
Icon Designates the value set items as icons.
Text Designates the value set items as text.
Colour info Designates the value set items as RGB colours
Colour indices Designates the value set items as colour indices.
Border Draws a border around the value set to delineate the
extents of the value set control.
Item border Draws borders around each value set item.
Scale bitmaps Scales bitmaps to the value set item size. This is
only used with the Bitmap option
Right to left ordering Causes the value set to interpret the column
orientation as right to left ordering instead of the
default left to right ordering. This causes the right
column to be number 1, counting up as you move to the
left.
Owner draw Draws the value set by the owning window or dialogue.
ΓòÉΓòÉΓòÉ 5.17.22. Notebook Styles ΓòÉΓòÉΓòÉ
Note: The following control, Notebook, is only available with OS/2 Version 2.x
and above. You need the OS/2 2.x or Warp Toolkit to use these in your
final application.
The following options are available for the styles:
Option Description
Bottom right Causes the back pages to appear on the bottom right.
Bottom left Causes the back pages to appear on the bottom left.
Top right Causes the back pages to appear on the top right.
Top left Causes the back pages to appear on the top left.
Bottom Places the major tabs on the bottom of the notebook.
Top Places the major tabs on the top of the notebook.
Left Places the major tabs on the left of the notebook.
Right Places the major tabs on the right of the notebook.
Square Gives the tabs square edges.
Polygon Gives the tabs polygon edges.
Rounded Gives the tabs rounded edges.
Left Left justifies the status text.
Center Centers the status text.
Right Right justifies the status text.
Left Left justifies the tab text.
Center Centers the tab text.
Right Right justifies the tab text.
Spiral Gives the notebook a spiral binding.
Solid Gives the notebook a solid binding.
Tabbed Gives the notebook a tabbed look and feel instead of
the normal bound or spiral notebook. This style is
only available for use in OS/2 Warp Version 4 and
above.
Button area Gives the notebook a button area for push buttons.
This style is only available for use in OS/2 Warp
Version 4 and above.
ΓòÉΓòÉΓòÉ 5.17.23. Circular Slider Styles ΓòÉΓòÉΓòÉ
Note: The following control, Circular Slider, is available only with
MultiMedia PM/2 Version 1.1 (MMPM/2 Version 1.1) and above. You need the
IBM OS/2 2.1 or Warp Toolkit along with the MMPM/2 Version 1.1 or Warp
Toolkit to use these in your final application.
The following options are available for the styles:
Option Description
Mid-point tick Enlarges the mid-point and end tick marks on the
dial.
No value buttons Excludes the + and - buttons.
No dial numbers Excludes the dial numeric value.
No dial text Excludes text below the dial.
Direct manipulation Allows the direct manipulation of the dial value with
the mouse.
360┬░ scroll range Makes the scroll range 360 .
Proportional ticks Makes the ticks of the dial proportional.
No ticks Prevents ticks from appearing on the dial.
Circular value Makes the indicator on the turning dial an indented
dot instead of a tick mark.
ΓòÉΓòÉΓòÉ 5.17.24. Graphic Button Styles ΓòÉΓòÉΓòÉ
Note: The following control, Graphic Button, is available only with MultiMedia
PM/2 Version 1.1 (MMPM/2 Version 1.1) and above. You need the IBM OS/2
2.1 or Warp Toolkit along with the MMPM/2 Version 1.1 or Warp Toolkit to
use these in your final application.
The following options are available for the styles:
Option Description
2 state Gives graphic button two states, up and down. The
button state must be controlled by the owner such
that when the user presses the button, the owner of
the button must send a message to the button to set
the state as down if the button is to remain down.
Auto 2 state Gives graphic button two states that toggle from up
to down and down to up. The owner of the button is
not required to send messages to the button to change
the state when the button is selected by the user.
Animation Triggers animation on the button face using a series
of supplied bitmaps. The owner of the button must
cause the animation to start and stop.
Auto animation Starts and stops animation on the button face when
the user selects the button. The animation is
provided through a series of bitmaps supplied as IDs
with the button.
Hilite bitmap Displays a different bitmap when the graphic button
is highlighted.
Disable bitmap Displays a different bitmap when the graphic button
is disabled.
3D recessed text Displays the button text in a recessed area of the
button.
3D raised text Displays the button text in a raised area of the
button.
ΓòÉΓòÉΓòÉ 5.17.25. Handwriting Styles ΓòÉΓòÉΓòÉ
Note: The following control, Handwriting, is available only with Pen for OS/2.
You need the Pen for OS/2 Toolkit to use these in your final
application.
The following options are available for the styles:
Option Description
Border Displays a border around the input area.
3D border Displays a 3D border around the input area.
ΓòÉΓòÉΓòÉ 5.17.26. Sketch Styles ΓòÉΓòÉΓòÉ
Note: The following control, Sketch, is available only with Pen for OS/2. You
need the Pen for OS/2 Toolkit to use these in your final application.
The following options are available for the styles:
Option Description
Border Displays a border around the input area.
3D border Displays a 3D border around the input area.
ΓòÉΓòÉΓòÉ 5.17.27. PMCX/Temporary Control Selection ΓòÉΓòÉΓòÉ
The PMCX/Temporary Control Selection dialogue allows you to select from both
temporary and PM Control Extension (PMCX) custom control dynamic-link libraries
that have been defined through the PMCX/Temporary Control Definition dialogue.
In the dialogue, select the control you wish to use by clicking on the control
name in the list box. An example of the control is displayed in the Example
group box, allowing you to ascertain that the correct control has been
selected.
When you click on the Select button to display, the mouse pointer changes its
shape from an arrow to a cross hair. Alternately, you can double-click on the
control name within the list box.
Once you have selected the location where you want to place the control, press
button 1 on the mouse to create the custom or temporary control. Depending on
the type being created, either the dialogue for the custom control or the User
Defined Temporary Control dialogue will be displayed, allowing you to enter
the classname of the control in the entry field labeled Classname.
In the case of the custom control styles dialogue, enter the text via the style
dialogue if one is provided. The ID symbol and value are entered via the ID
field, which resembles that of a normal OS/2 Presentation Manager control.
Initially, the ID field contains a value automatically generated by Prominare
Designer.
If the symbol and value you want to use are already defined in the include
header file, you can select them from the drop-down list.
ΓòÉΓòÉΓòÉ 5.17.28. User Defined Temporary Control ΓòÉΓòÉΓòÉ
In the case of the User Defined Temporary Control dialogue, enter the text for
the control in the Text MLE. The ID symbol and value are entered via the ID
field. Initially, the ID field contains a value automatically generated by
Prominare Designer.
If the symbol and value you want to use are already defined in the include
header file, you can select them from the drop-down list.
ΓòÉΓòÉΓòÉ 5.17.29. Child Window Styles ΓòÉΓòÉΓòÉ
Through the Child Window Styles dialogue, you can enter the title, ID symbol,
and value for the child window, along with selecting the following styles:
Option Description
Title bar Includes a title bar in the window.
System menu Includes a system menu in the window.
Horz. scroll bar Includes a horizontal scroll bar at the bottom of the
window.
Vert. scroll bar Includes a vertical scroll bar at the right of the
window.
Visible Designates the window as initially visible. Even if
this option is not selected, Prominare Designer will
display the window to allow you to design it
properly.
Size border Includes a sizing border as the frame of the window.
Border Includes a simple border as the frame of the window.
Dialogue frame Includes a dialogue frame as the frame of the window.
System modal Makes the window system modal. A system modal window
or dialogue, when used, does not allow the focus to
be directed to other windows that may be active. This
option should be used only when you need the user's
attention for a critical process. It should be used
sparingly.
Min box Includes a minimize box in the window.
Max box Includes a maximize box in the window.
Auto icon Prevents the WM_PAINT message from being sent to the
window when it is minimized. It is generally used to
increase performance.
The dialogue also contains entry fields that allow you to define the child
window you are creating. The MLE, Title, is used for the title bar text. Enter
the text of the title bar in this entry field, giving the window a title when
it is displayed to the user.
The second field, ID, is used for the ID symbol of the window. In it, enter
the ID symbol and value between 1 and 65,535. If the values you enter are not
defined in the include header file, they will be automatically added.
Initially, the ID field contains a number. Each window must contain an ID
value.
Generally, providing a symbolic value lets you easily reference the window
within the source code. It usually provides a simple description of the topic
of the window. For example, ID_CHILDWINDOW describes the symbolic value for
the child window. If the symbol and value you want to use are already defined
in the include header file, you can select them from the drop-down list.
The next entry field, Function, is used to define the function name for the
window. It is used in conjunction with the Filename combination box, where the
function is located. If you are using Prominare Designer to generate and
update the source modules according to the windows and dialogues within the
design file, you must complete the two entry fields. The Filename combination
box contains a list of source modules you have defined, which you can select
to place the code generated for the window within.
To create another window or dialogue during the initialization of the child
window, enter or select the symbolic ID or value in the Associated combination
box. You can also select the invocation method for the window or dialogue by
selecting the method from the Method combination box. Valid methods are:
Method Comments
None Indicates that the window creation will be placed
within the source code at a later point and that
Prominare Designer should not provide the code to
create the window.
main() Designates that the window being created is to be
created within the main() function.
WM_CREATE Designates that a window is to be created within the
WM_CREATE of another window, which is selected
through the Associated drop down list that contains
the IDs. This is done only when the window in the
Associated list is first created. If you select this
option after the associated window has been created,
the creation code will not be placed in the WM_CREATE
due to Prominare Designer's code generation rules.
ΓòÉΓòÉΓòÉ 5.18. Formatting controls ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.18.1. Align Controls ΓòÉΓòÉΓòÉ
To align controls within a window or dialogue, adjust the spacing between them,
or make them the same size, use the Align controls button in the tool bar once
you have selected the group of controls in the dialogue or window.
The Align Controls dialogue is divided into four Tabs: Alignment, Spacing,
Size, and Push buttons. Each page contains images representing the type of
alignment that can be applied to the selected controls.
The first tab, Alignment, contains two sets of alignment options. The top row
is used to align the controls with a vertical reference line formed by the left
edge of the controls, the centre points of the controls, or the right edge.
Select the type of alignment you wish, and Prominare Designer will
automatically align the controls.
The bottom row is used to align the controls with a horizontal reference line
formed by the top edge, centre points, or right edge of the controls.
The Spacing tab allows you to space the selected controls using the spacing
values defined through the Prominare Designer Default Usage dialogue.
The Size tab allows two type of sizing operations for the selected controls.
The first lets you autosize controls that have text as a major component
including check boxes, radio buttons, and static text. The control will be
sized exactly for the text and button contained. Selecting the Use display
limits target option, the target display metrics will be used.
The second sizing method uses the highlighted control as the basis of the
sizing. The first control in the group of controls selected is highlighted
automatically when you first create the group. To change the highlighted
control, simply click button 2 with the Alt key pressed when the mouse pointer
is over a control within the group.
The Push buttons tab aligns the push buttons within the group of controls
selected either at the bottom of the dialogue or along the right edge, using
the spacing values defined in the Prominare Designer Default Usage dialogue.
The last tab, Shift, allows you to shift the group of controls to the location
selected. Depending on the shift type selected, the group of controls will be
shifted such that they start from the edge or corner selected. This is a fast
way of shifting controls to a specific starting point within a window or
dialogue. The margins you have previously defined through the Prominare
Designer Default Usage dialogue will be used.
ΓòÉΓòÉΓòÉ 5.18.2. Arrange Controls ΓòÉΓòÉΓòÉ
Controls are presented within a dialogue or window in the order that you create
them. OS/2 Presentation Manager records this order internally so it can perform
enumeration and indexing functions. However, instead of querying the check
state of each radio button, you can ask OS/2 Presentation Manager to return the
check index. To do this properly, you need to arrange the controls and set up
groups.
The Arrange Controls dialogue shows all the controls defined in the window or
dialogue within a list box. The list box is divided into three columns: Control
Text, IDs, and Control Type. Each control is shown with its text, ID, and
control type. If the entry is preceded by an , this indicates that the control
can be selected using the TAB key. If the line contains the word Group Marker,
the control below it is the beginning of a group.
By selecting an entry within the list box, you can perform various tasks. When
you select an entry, it is displayed above the list box, allowing you to view
the item you have selected. This is especially useful if the list box contains
many items and you want to move an entry from the bottom of the list to the
top.
Once you have selected the desired item in the list box, you will notice that
as you move the mouse pointer within the list box, its shape changes from the
normal arrow to a bar. When the mouse pointer is in the lower half of an entry,
it appears as an arrow to allow you to select that particular item. Conversely,
when it is in the upper half of an entry, its bar shape indicates that you can
move the selected entry to this position.
It is also possible to select groups of controls with the Shift/Ctrl/button 1
list box selection interface. The controls are moved to a new location in order
of appearance even if you are skipping controls.
If the entry selected contains the artwork name='\designer\images\tabable.bmp'
runin. preface, a push button labeled Delete tab appears at the bottom right of
the dialogue. Selecting this button removes the TAB indicator from the control.
Conversely, if the control is not preceded by an asterisk, a push button,
labeled Tab, allows you to put a TAB indicator on the control.
Selecting a Group Marker entry in the list box allows you to delete the group
marker by selecting the Delete group push button in the lower right corner of
the dialogue. To add a group marker in front of a control, select the control
where you want to place the group marker and press the Group marker button.
ΓòÉΓòÉΓòÉ 5.19. Formatting controls ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.19.1. Font and Colours ΓòÉΓòÉΓòÉ
Many of the control styles dialogues allow you to set font and display colours
when you select the Font & Colours tab in the invoking dialogue or select the
Font & Colours tool bar button. This dialogue is divided into four areas:
Dialogues/Menus tabs, Index colours/RGB colours tabs, Fonts, and Font example.
The display area tab allows you to set colours for the control or menu. The
available options for controls are:
Option Description
Foreground Used to set the foreground colour of the control.
Background Used to set the background colour of the control.
Hilight foreground Used to set the highlight foreground colour of the
control.
Hilight background Used to set the highlight background colour of the
control.
Disabled foreground Used to set the disabled foreground colour of the
control.
Disabled background Used to set the disabled background colour of the
control.
Border Used to set the border colour of the control.
Active colour Used to set the active colour of the control.
Inactive colour Used to set the inactive colour of the control.
Active text foreground Used to set the active text foreground colour of the
control.
Active text background Used to set the active text background colour of the
control.
Inactive text foreground Used to set the inactive text background colour of
the control.
Inactive text foreground Used to set the inactive text background colour of
the control.
Shadow Used to set the shadow colour of the control.
Shadow text Used to set the shadow colour of the text of a
container control.
Shadow hilight Used to set the foreground shadow highlight colour of
a container control. foreground
Shadow hilight Used to set the background shadow highlight colour of
a container control. background
Icon text background Used to set the icon text background colour of the
control.
To the right of each check box option is a button showing the current colour
selection. Click the appropriate button in the Dialogues/Menus tab. The Index
colours tab contains boxes with each of the are index mode colours you can
use. Alternately, you can select the RGB colours tab, which contains a RGB
colour selector. Select the colour from the RGB colour circle or by entering
the RGB values in the spin button areas. When you click on one of the colour
buttons, the button colour in the display area you had previously selected
change its colour to that selected.
When setting font and colours for menus, the available options are:
Option Description
Foreground Used to set the foreground colour of the menu.
Background Used to set the background colour of the menu.
Hilight foreground Used to set the highlight foreground colour of the
menu.
Hilight background Used to set the highlight background colour of the
menu.
Disabled foreground Used to set the disabled foreground colour of the
menu.
Disabled background Used to set the disabled background colour of the
menu.
Instead of a font sample, a sample menu is displayed.
When you want to change the font or font size of a control, use the Fonts
area. When you select a font different from that in the Font example area, the
new font is displayed. Change the font size in the Sizes list box.
Once you have selected the desired colour and font, click on the Set button to
cause the selections to be applied to the control or controls selected.
ΓòÉΓòÉΓòÉ 5.19.2. Fonts ΓòÉΓòÉΓòÉ
The Fonts dialogue is invoked when you select the Fonts tool bar button. Use
the Fonts area to select the desired font and size. When you select a font
different from that shown in the Font example area, the new font is displayed.
Change the font size in the Sizes list box.
Once you have selected the font for the control, click on the Set push button.
ΓòÉΓòÉΓòÉ 5.19.3. Pen Options ΓòÉΓòÉΓòÉ
The Pen Options dialogue allows you to set the Pen for OS/2 Version 1.03
handwriting options for various input controls. Depending on the version of
OS/2 you are using, you may be able to define pen options for the combo box,
entry field, multiple-line entry field, and spin button. You can also define
options for the handwriting control.
The dialogue contains a set of five Tabs: Layouts/resources, Options, Inks,
Symbol sets, and Include/Exclude. Depending on the type of control for which
you are setting the pen options, you may be able to select only certain
options. Options that do not apply to the particular control you are editing
are disabled.
The first tab, Layouts/resources, allows you to specify the name of the DLL in
which the pointer resources can reside. If you have placed these resources
within the executable, you can leave the name empty. To provide a background
bitmap, proximity, or writing pointer, select ID from the ID symbol drop-down
boxes.
Specify the size of the box handwriting control by entering the width and
height in the entry fields of the Box layout group. You can also specify the
colour. For all other controls, you can specify line width and spacing in the
Line layout group. Selecting the Default check box selects the default layout
sizes for box width and height and line width.
The second tab, Options, is used to define various usage options. These
include:
Option Description
Exit proximity Causes recognition to start when proximity is exited.
Liftoff Causes recognition to start when liftoff of pen
occurs.
Timeout Causes recognition to start when timeout occurs.
Focus lost Causes recognition to start when focus is lost.
Word case Advises recognition on all upper case, all lower
case, or the first letter capitalized.
Sentence case Advises recognition on proper sentence
capitalization.
Alphanumeric Advises recognition on grouping alphabetic characters
and digits separately.
Punctuation Advises recognition to have punctuation at the
beginning and end words.
Boxed Creates a handwriting control recognition form. This
option is only available with the handwriting
control.
Lined Creates a lined mode handwriting window. This is
unavailable with the handwriting control.
Unlined Creates an unlined mode handwriting window. This is
unavailable with the handwriting control.
None Disables language modeling.
Advise Advises the recognition engine to use the value as a
hint. The actual result is not coerced into matching
the word list or dictionary.
Force Forces the recognition to match from the word list or
dictionary.
Reject Ignores the recognition if there is no match.
Case force Forces the recognition after applying case
sensitivity.
Full Indicates that a full symbol set should be used.
Lowercase Indicates that a lower case symbol set should be
used. This includes characters a - z.
Uppercase Indicates that an upper case symbol set should be
used. This includes characters A - Z.
Digit Indicates that a digit set should be used. This
includes characters 0 - 9.
Punctuation Indicates that a punctuation set should be used. This
includes characters ! " & ' ( ) , - . ; ? \ : space.
Special Indicates that a special set should be used. This
includes characters & < > @ [ \ ] ^ { } ~ #.
The third tab, Inks, is used to define inking options. These include:
Option Description
System Causes system inking to be used. When this is
selected, all other options (Width, Colour, Line
type, and Mix) are not selectable.
Window Causes window inking to be used. When this is
selected, all other options (Width, Colour, Line
type, and Mix) are selectable.
Default Sets the line width at default thickness.
Normal Sets the line width at normal thickness.
Thick Sets the line width at thick.
Default Chooses default mix mode (the same as overpaint).
Or Chooses logical OR mix mode.
Overpaint Chooses overpaint mix mode.
Leave alone Chooses leave-alone (invisible) mix mode.
Xor Chooses logical XOR mix mode.
And Chooses logical AND mix mode.
Subtract Uses the inverse of the source that is AND'ed with
destination mix mode.
Mask src not Uses the source that is AND'ed with inversed
destination mix mode.
Zero Uses the all zeros mix mode.
Not merge src Uses the inverse of the source that has been OR'ed
with destination mix mode.
Not xor src Uses the inverse of the source that has been XOR'ed
with destination mix mode.
Invert Uses the inverse destination mix mode.
Merge src not Uses the source OR'ed with inverted destination mix
mode.
Not copy src Uses the inverse of the source mix mode.
Merge not src Uses the inverse of the source, which is then OR'ed
with the destination mix mode.
Not mask src Uses the inverse of the source that has been AND'ed
with the destination mix mode.
One Uses all ones mix mode.
Select the colour of the ink through the Colour group and the line type
through the Line type group.
The forth tab, Symbol sets, is used to define symbol sets to be used during
pen input. The upper set (the gesture set) consists of gestures and letter dot
gestures. The lower set consists of the valid ASCII characters.
The last tab, Include/Exclude regions, is used to define the include and
exclude regions for pen input. The include region is defined through four
entry fields: The starting left and bottom edges through the entry fields
labeled x and y, the width of the region through the field labeled Width, and
the height of the region through the field labeled Height.
If you leave these entry fields blank, Pen for OS/2 Version 1.03 will use the
entire screen area as the include region.
The exclude regions are defined for the controls that allow selection in pen
input mode. The list box below the Include region group contains a list of
controls that are deemed possible for the user. Generally, the user can select
these controls with either the mouse or the pen.
Items selected within the list are excluded from the input region; in pen
writing mode, for example, if you move the pen from its current location to a
control, the input focus is shifted to that control.
The list box allows for multiple selection of items. You can use the extended
selection mechanism for list boxes to select groups of items.
ΓòÉΓòÉΓòÉ 5.19.4. Bidirectional Support ΓòÉΓòÉΓòÉ
The Bidirectional Support dialogue allows you to select the bidirectional
support options for a window or control.
The dialogue allows you to set window orientation, text type, text orientation,
symmetric swapping, word break, numerals, and character shape. You can set the
following options:
Option Description
Left to right Sets the window orientation so the left to right
objects have the lower left corner of the window as
their point of origin.
Right to left Sets the window orientation so the right to left
objects have the lower right corner of the window as
their point of origin.
Visual Sets the text type so the text is not processed for
sub-segments but is displayed as defined via the text
orientation option.
Implicit Sets the text type so the text is processed for
sub-segments.
Left to right Sets the text orientation as left to right.
Right to left Sets the text orientation as right to left.
Contextual Sets the text orientation as contextual where the
text is oriented based on strong characters.
Off Sets symmetric swapping of parentheses, brackets,
braces, etc. to off.
On Sets symmetric swapping of parentheses, brackets,
braces, etc. to on.
Off Sets word break scanning to off.
On Sets word break scanning to on.
Nominal Displays numerals in nominal (i.e. Arabic) form.
Pass through Displays numerals as stored.
National Displays numerals using national (i.e. Hindi) form.
Contextual Displays numerals according to surrounding text.
Display shaped Defines character shape determination to imply that
the text is stored in nominal/base shapes and should
be automatically shaped upon display.
Nominal Defines character shape determination as stored in
its nominal (base) shapes.
Middle Defines character shape determination as the text
already shaped and ready for display.
Isolated Defines character shape determination as the text
already shaped and ready for display.
Save shaped Defines character shape determination as the text
already shaped and ready for display.
Initial Defines character shape determination as the text
already shaped and ready for display.
Final Defines character shape determination as the text
already shaped and ready for display.
ΓòÉΓòÉΓòÉ 5.20. Pasting, deleting and replacing controls ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.20.1. Paste Open ΓòÉΓòÉΓòÉ
To add selected components of another design, use the Paste from file...
function in the Edit menu. This displays a series of dialogues. The first,
Paste Open, allows you to select files from the current directory or to select
another drive/directory. You can select only design files (.PDF) from within
this dialogue.
The dialogue displays the current path. Enter the name of the file from which
you wish to paste in the Filename entry field. Alternately, double click on the
file in the Files list box to open the required file.
Once you select a file, you are presented with the Paste From File dialogue.
The dialogue contains four tabs, listing the various components of the selected
file.
The first tab, Dialogues/Windows, contains the dialogue and windows from the
design. You can select multiple items to be pasted into your design. This
available on all tabs in the Paste From File dialogue.
Once you have selected the items to paste, click on the Paste button. The items
selected are pasted into the current design; any conflicting IDs from the items
being pasted are made unique.
ΓòÉΓòÉΓòÉ 5.20.2. Delete ΓòÉΓòÉΓòÉ
To delete a control or set of controls, select Control... in the Edit Delete
menu. The Delete Control dialogue appears, showing all the controls within a
list box.
Select the controls you wish to delete by clicking on each item in the list
box. To select all the controls in the list box, click the All button. To
deselect a selected control, click on it again. To delete the selected
controls, click Delete. As soon as the dialogue disappears, the window or
dialogue is updated, showing that the selected controls have been removed.
ΓòÉΓòÉΓòÉ 5.20.3. Replace Controls ΓòÉΓòÉΓòÉ
To replace controls in a window or dialogue, use the Replace controls button.
Once you have selected the controls to replace, select the Replace controls
button again to display the Replace Controls dialogue.
In this dialogue is a list box containing a list of control types with which
you can replace the selected controls. If the original control has any
specialized data such as entry field size, it is not transferred to the new
control type.
If you select the user-defined control type in the list box, the PMCX/Temporary
Control Selection dialogue is displayed, allowing you to select the custom
control to be used as the replacement type.
ΓòÉΓòÉΓòÉ 5.21. Creating and editing menus ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.21.1. Standard Menus ΓòÉΓòÉΓòÉ
Prominare Designer can help you design the menus for the window you are
creating. Start editing the menus by either clicking on the Menu tool button or
selecting Menu in the Control menu. Prominare Designer will first check to see
if any menu items have been defined for the window. If none are found, you will
be informed that no menus exist. It will then ask if you want to select menus
from a standard menu list. Clicking on the Yes button displays the Standard
Menus dialogue; clicking No displays the Menu Styles dialogue.
The Standard Menus dialogue consists of eight tabs. Each tab represents an
action bar menu item; all are taken from the CUA '91 Guidelines. In all cases,
you must first select the check box on the page that denotes the action bar
item before you can select a menu item to be used in the menu. Click on the All
button to select all action bar and menu items.
The first tab, System menu, deals with a child system menu within the action
bar. Generally, this item is found in multiple document-style applications. It
contains the following:
Check box Usage
Restore Restore menu item.
Move Move menu item.
Size Size menu item.
Minimize Minimize menu item.
Maximize Maximize menu item.
Separator Separator.
Close Close menu item.
The second tab, File, deals with a File menu within the action bar. Generally,
this is the first menu item in most applications. It contains the following:
Check box Usage
New New menu item.
Open... Open menu item.
Separator Separator menu item.
Save Save menu item.
Save as... Save as menu item.
Separator Separator menu item.
Print Print menu item.
The next tab, Selected, deals with a Selected menu in the action bar. It
contains the following:
Check box Usage
Open as Open as menu item.
Print Print menu item.
The next tab, Edit, deals with a Edit menu in the action bar. It contains the
following:
Check box Usage
Undo Undo menu item.
Redo Redo menu item.
Separator Separator menu item.
Cut Cut menu item.
Copy Copy menu item.
Create Create menu item.
Paste Paste menu Item.
Separator Separator menu item.
Clear Clear menu item.
Delete Delete menu item.
Separator Separator menu item.
Find Find menu item.
Select all Select all menu item.
Deselect all Deselect all menu item.
The View tab deals with a View menu in the action bar. It contains the
following:
Check box Usage
View names View names menu item.
Sort Sort menu item.
Include Include menu item.
Separator Separator menu item.
Refresh Refresh menu item.
Refresh now Refresh now menu item.
The Options tab deals with a Options menu in the action bar. It contains the
following:
Check box Usage
Short menus Short menus menu item.
Full menus Full menus menu item.
The second to last tab, Windows, deals with a Windows menu in the action bar.
Generally, this is the second to last menu item in most applications. It
contains the following:
Check box Usage
Window list Window list menu item.
The last tab, Help, deals with a Help menu in the action bar. Generally, this
item is the last menu item in most applications. It contains the following:
Check box Usage
Help Index Help index menu item.
General help General help menu item.
Using help Using help menu item.
Keys help Keys help menu item.
Tutorial Tutorial menu item.
Separator Separator menu item.
Product information Product information... menu item.
ΓòÉΓòÉΓòÉ 5.21.2. Menu Styles ΓòÉΓòÉΓòÉ
The Menu Styles dialogue allows you to define, delete, or change the text of
the action bar and sub-menu items and their symbols, values, and styles. The
dialogue displays all defined action bar and sub-menu items in a list box.
Action bar items are displayed in dark red. Cascading sub-menus are displayed
in green. To edit an item, first select it in the list box. The values of the
item selected are placed in the entry fields of the dialogue and the styles of
the action bar item are set in the Menu styles area.
Option Description
Action bar Designates the item selected or entered as an action
bar item.
Sub-menu item Designates the item selected or entered as a sub-menu
item.
Text Designates the menu item as text.
Bitmap Designates the menu item as a bitmap. When this
option is used, the application must provide the
necessary logic to draw the bitmap inside the menu
when requested. The application is sent two messages:
WM_MEASUREITEM and WM_DRAWITEM.
Child system menu Designates the action bar menu item as a child system
menu.
Help Denotes that the sub-menu item should generate a
WM_HELP message when selected by the user.
Separator Draws a separator between one menu item and the next.
Break Inserts a break between one menu item and the next.
The action bar menu items that follow this item are
drawn on a separate line within the action bar menu
area. The sub-menu items that follow this item are
drawn in a separate column within the sub-menu area.
Break/Separator Inserts a break between one action bar menu item and
the next, and draws a separator between the two
action bar menu lines. Inserts a break between one
sub-menu item and the next, and draws a separator
between the two sub-menu columns.
Button separator Right justifies the action bar menu item along the
action bar and includes a separator in front of the
action bar menu item text.
SYSCOMMAND Indicates that the menu item should generate a
WM_SYSCOMMAND message when selected by the user.
Sub-menu Designates the sub-menu item as a sub-menu item
containing a cascaded sub- menu.
Owner draw Designates the sub-menu item as a sub-menu item drawn
using code defined within the owner window instead of
system-provided drawing.
Checked Indicates that the sub-menu item should be displayed
initially with a check mark in front of the menu
text.
Disabled Indicates that the sub-menu item should be displayed
initially disabled.
Framed Indicates that the sub-menu item should be displayed
with a frame.
Highlighted Indicates that the sub-menu item should be displayed
highlighted.
No dismiss Causes sub-menu or menu item to remain displayed
after the user chooses an item.
You can edit any of the entry fields within the dialogue. The first field,
labeled Text, is used for the text of the actual menu item. Enter the mnemonic
of the menu item by placing a tilde (~) before the character of the mnemonic.
To associate the menu item with an accelerator, use the menu tab separator
(\t) to separate the menu text from the accelerator text, for example:
E~xit\tF3
When you do use an accelerator designation within the menu item, Prominare
Designer automatically places the accelerator designation in the accelerator
table if you have specified the use of accelerators in the Window/Dialogue
Styles dialogue. A few rules must be followed for this to happen properly.
For accelerators that are part of a key combination, such as the control key
and F1, you must use the proper short form for the key. The following are the
valid forms:
Key Short form
Alternate Alt or ALT
Control Ctrl or CTRL
Shift Shift or SHIFT
Key combinations must be separated either by a plus sign (+) or a minus sign
(-). If these conventions are not followed, the accelerator key definition
will not be added and you will have to manually add it through the
Accelerator... menu item in the Resource menu.
Prominare Designer correctly interprets the tab separator designation (\t)
when constructing the menu item in the window.
You can edit the symbolic ID and value for the item. If the symbol and value
you want to use are already defined in the include header file, you can select
the value from the drop-down list. Click on the button beside the ID field to
place a unique value in the field. To add a menu item, complete the entry
fields, select the appropriate styles, and click on the Add button. The item
is then be added to the bottom of the selected parent entries in the list box.
To change an item, select the item in the list box. The values for that item
are then placed in the entry fields of the dialogue and the styles reflected
in the Menu styles area. You can then change the values in the entry fields or
select different styles. After this, select the Change push button to record
the changes. Delete items from the list by selecting the item in the list box
and clicking on the Delete button.
To associate the menu item with a dialogue, enter or select the dialogue
symbolic ID or value in the Dialogue combination box. This is only useful when
prototyping. When you change into test mode using the Test design button, menu
items selected will look for this association and display the associated
dialogue. This allows you to test the look and feel of the application.
It is possible to set the font and colours of action bar and cascading
sub-menus. Once you have selected either the action bar type or the sub-menu
style, you can click on the Font & colours... push button, displaying the Font
& Colours dialogue. You can then set the colour and font for the selected menu
item.
ΓòÉΓòÉΓòÉ 5.21.3. Arrange Menus ΓòÉΓòÉΓòÉ
As you add menu items to a window, you may notice that each item is placed at
the end of a menu. At some point, you may want to change the position of menu
items within a menu. The Arrange Menus dialogue, which allows you to do this,
operates much like the Arrange Controls dialogue.
The Arrange Menus dialogue displays all action bar menus and sub-menus defined
within the window in a list box. The list box is divided into three columns:
Menu Text, IDs, and Menu Type. Each menu is shown with its text, ID, and menu
type. If the entry is preceded by an minus (-), the menu is a cascaded
sub-menu. If it is preceded by a asterisk (*), it is an action bar menu item.
If it is preceded by a plus it is a cascading sub-menu item.
Once you select an entry in the list box, you can move it to the proper
location. Selected entries are displayed above the list box, allowing you to
view them. This is useful if the list box contains many items and you want to
move an entry from, say, the bottom of the list to the top.
Note that after you have selected an item, as you move the mouse pointer in the
list box its shape changes from the normal arrow to a bar. When the mouse
pointer is in the lower half of an entry, its arrow shape allows you to select
an item. In the upper half of an entry, its bar shape indicates that you can
move the selected entry to its position.
It is also possible to select groups of menu items using the Shift/Ctrl/button
1 list box selection interface. Menu items moved to the new location are moved
in order of appearance even if you are skipping some items.
ΓòÉΓòÉΓòÉ 5.22. Defining and editing resources ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.22.1. Accelerator Table Resource ΓòÉΓòÉΓòÉ
The Accelerator Table dialogue allows you to define and edit accelerators for a
window. Three list boxes are displayed near the top of the dialogue. The first
list box, Accelerators, contains a list of the accelerators defined. The
second, Key Values, contains the possible key values that can be used as an
accelerator. The last list box, Menu IDs, contains a list of the defined
sub-menu items in the window. Select the key value for the accelerator from the
Key Values list box and the ID from the Menu IDs list box. The options for the
accelerator are selected in the Key options area. Available options are:
Option Description
Virtual key Denotes that the accelerator key-value is a virtual
key code.
Scan code Denotes that the accelerator key-value is a scan
code.
Char Denotes that the accelerator key-value is a character
code.
Help Indicates that the accelerator key-value is to
generate a WM_HELP message. If this option is not
selected, the accelerator will translate into a
WM_COMMAND message.
Alt Denotes that the accelerator key-value is a
Alt+key-value code. The user must press the Alt key
and the key-value to generate the accelerator.
Ctrl Denotes that the accelerator key-value is a
Ctrl+key-value code. The user must press the Ctrl key
and the key-value to generate the accelerator.
Shift Denotes that the accelerator key-value is a
Shift+key-value code. The user must press the Shift
key and the key-value to generate the accelerator.
SYSCOMMAND Indicates that the accelerator key-value is to
generate a WM_SYSCOMMAND message. If this option is
not selected, the accelerator will translate into a
WM_COMMAND message.
ΓòÉΓòÉΓòÉ 5.22.2. Association Table ΓòÉΓòÉΓòÉ
The Association Table dialogue allows you to define and edit the association
information for the application you are designing. The following options are
provided:
Option Description
Default owner Denotes that the application containing the file
association table starts whenever the user selects a
file matching the file-match-string field from the
File Manager.
Unchangeable Denotes that the icon defined in the previous entry
is used as the icon for the current entry.
Reuse icon Denotes that the icon entry should not be edited.
The Association name entry field is used to denote the Extended Attribute
types recognized by the application you are designing. It is the same name
used in the .TYPE field of an extended attribute. The Extension entry field is
used to identify the file type if no Extended Attribute type is provided. It
can be a file extension up to three (3) letters in length, excluding the
preceding period (.). The Icon file entry field is used to define the icon to
be used in the Workplace to represent the file type. The two list boxes at the
bottom of the dialogue are provided to allow you to locate the icon file in
your system. The Drives/Directories list box is used to change the location
where the file may be located; the Files list box is used to select the file
in the Icon file entry field.
To add an association table item, complete the entry fields, select the
appropriate options, and click on the Add button. The item is then added to
the bottom of the entries within the list box. Change an association table
item by selecting the item in the list box. The values for that item are
placed in the entry fields of the dialogue and the options are reflected in
the Options area. You can then change the values in the entry fields or select
different options. Select the Change button to record the changes.
Delete items in the list by selecting the item in the list box and click on
the Delete button.
ΓòÉΓòÉΓòÉ 5.22.3. Bitmap, Font, Icon and Pointer Resources ΓòÉΓòÉΓòÉ
The Bitmap, Font, Icon, and Pointer Resources dialogue allows you to define and
edit resource definitions for bitmaps, fonts, icons, and pointers. The dialogue
provides the following options:
Option Description
Bitmap Designates the resource as a bitmap definition.
Default icon Designates the resource as the default icon
definition. This is not used within the resources of
the application or DLL but as the default icon within
the Workplace desktop. The icon is stored in the
extended attributes of the .EXE or .DLL file when the
resources are bound to the .EXE or .DLL file.
Font Designates the resource as a font definition.
Icon Designates the resource as a icon definition.
Pointer Designates the resource as a pointer definition.
Default Indicates that the resource should use the
system-defined defaults (Moveable, Load on Call) to
handle the resource. This option is available only
when designing OS/2 1.x applications.
Moveable Indicates that the resource can be moved within
memory. This option is available only when designing
OS/2 1.x applications.
Preload Indicates that the resource should be loaded when the
application is started. If this option is not
selected, the resource will be loaded when requested
by the application. This option is available only
when designing OS/2 1.x applications.
Discard Designates that the resource can be discarded when no
longer required by the application This option is
available only when designing OS/2 1.x applications.
The symbolic ID and value are defined via the ID field. You can enter the
symbolic ID and the value for the resource item. If the symbol and value you
want to use are already defined in the include header file, select them from
the drop-down list. For a unique ID value, click on the button beside the ID
field, placing a unique value in the field. To add an item, complete the entry
fields and click on the Add button, adding the item to the bottom of the
entries in the list box. Change a bitmap, font, icon or pointer item by
selecting the item within the list box. The values for that item are then
placed in the entry fields of the dialogue and the type and options reflected.
You can change the values in the entry fields. Select the Change button to
record the changes.
Delete items from the list by selecting the item in the list box and click on
the Delete push button.
The entry field, Filename, is used to describe the filename for the actual
resource. You can locate the desired resource by selecting the file in the
Files list box. An example may be shown to the right of the list box; the
filename is automatically placed in the Filename entry field.
ΓòÉΓòÉΓòÉ 5.22.4. Help Table ΓòÉΓòÉΓòÉ
The Help Table dialogue allows you to define a help table.
The Table ID field is used to define the symbol ID and value of the table.
You can enter the symbolic ID and the value for the help table; if the symbol
and value you want to use are already defined in the include header file, you
can select them from the drop- down list.
ΓòÉΓòÉΓòÉ 5.22.5. Help Table Items ΓòÉΓòÉΓòÉ
The Help Table Items dialogue allows you to define the help table item.
The dialogue contains a list box showing the defined help tables. Select the
table associated with the help table item.
The first field, Window ID, is used to define the symbol ID and value of the
window of the help table item. The second field, Sub-table ID, is used to
define the symbol ID and value of the help sub-table. The last entry field,
Extended ID, is used to define the extended help panel symbol ID and value for
the table item.
You can enter the symbolic IDs and values for the help table item. If the
symbol and value you want to use are already defined in the include header
file, you can select them from the drop- down list.
ΓòÉΓòÉΓòÉ 5.22.6. Help Sub-Table ΓòÉΓòÉΓòÉ
The Help Sub-Table dialogue allows you to define and edit the help sub-table
for a window or dialogue.
The Sub-table ID field is used to define the symbol ID and value of the
sub-table. The entry field, Sub-item size, is for sub-table item size. If there
are more than two sub-table items, you must enter a value here. Otherwise, if
it is left empty, a default size of 2 will be used. You can enter the symbolic
ID and the value for the help table. If the symbol and value you want to use
are already defined in the include header file, you can select them from the
drop- down list.
ΓòÉΓòÉΓòÉ 5.22.7. Help Sub-Table Items ΓòÉΓòÉΓòÉ
The Help Sub-Table Items dialogue allows you to define and edit a help
sub-table item. The dialogue contains a list box showing the defined help
sub-tables. Select the help sub-table that the sub-table item is to belong to.
The first field, Window ID, is used to define the symbol ID and value of the
window of the help sub-table item. The second field, Panel ID, is used to
define the symbol ID and value of the help panel. The last entry field, Other
values, is used to define additional table values for the item.
You can enter the symbolic IDs and values for the help table item. If the
symbol and value you want to use are already defined in the include header
file, you can select them from the drop- down list.
ΓòÉΓòÉΓòÉ 5.22.8. Build Help Table ΓòÉΓòÉΓòÉ
The Build Help Table dialogue to allows you to quickly create the help table
for the application and edit the constructed help table. Building the help
table involves searching the current design for help sub-tables and including
those encountered in the help table.
The dialogue is displayed at the top a field labeled Table ID. Through this
field, you define the table ID and value. Enter the symbolic ID and value; if
the symbol and value you want to use are already defined in the include header
file, you can select them from the drop-down list.
Below these entry fields is a list box containing the list of sub-tables found
in the design file. The list box is broken into three columns: Window IDs,
Sub-table IDs, and Extended IDs. If you have used symbolic IDs, you will notice
that the first two columns contain symbolic IDs, whereas the third column
contains only numeric values.
Since Prominare Designer does not know when it is constructing the help table
(the actual extended help panel IDs), you must edit each entry contained in the
list box to provide the final ID value.
Select an item in the list box in which the values for the table item are
placed into the entry fields at the bottom of the dialogue. The window ID and
value is placed in the Window ID field; the sub-table ID and value is placed in
the Sub-table ID field; and finally, the extended help panel ID and value is
placed in the Extended ID field.
Generally, you must provide only the extended help panel ID. You can enter the
symbolic ID and value of the panel ID in the Extended ID field. If the symbol
and value you want to use are already defined in the include header file, you
can select them from the drop-down list.
ΓòÉΓòÉΓòÉ 5.22.9. Build Help Sub-Table ΓòÉΓòÉΓòÉ
The Build Help Sub-Table dialogue allows you to build a help sub-table for the
window or dialogue on which you are working.
Prominare Designer checks the window or dialogue you are designing for any
control that is considered user interactive. Controls that cannot be selected
either via the keyboard or mouse are not included in the help sub-table. Action
bar menus and sub-menus are considered controls when building the help
sub-table.
At the top, the dialogue displays the Sub-table ID field and the entry field
labeled Sub-item size. It is through these fields that you define the sub-table
ID and the table item sizes. You can enter the symbolic ID and value. If the
symbol and value you want to use are already defined in the include header
file, you can select them from the drop-down list.
You must specify the size of the sub-table items. By default, the Sub-item size
entry field contains a size of 2. Most of the time, you need only the window ID
and panel ID for the table items. If you require more information to be
associated with each table item, enter the count of items in this entry field.
Below these entry fields is a list box containing the list of interactive
controls found in the window or dialogue. The list box is broken into three
columns: Window IDs, Panel IDs, and Other Values. If you have used symbolic
IDs, you will notice that the first column contains symbolic IDs, whereas the
other column contains only numeric values.
Since Prominare Designer does not know when it is constructing the help table
(the actual help panel IDs), you must edit each entry in the list box to
provide the final ID value.
Select an item in the list box in which the values for the table item are
placed into the entry fields at the bottom of the dialogue. The window ID and
value is placed in the Window ID field; the panel ID and value is placed in the
Panel ID field; and finally, the other values are placed in the Other values
entry field.
Generally, you must provide only the help panel ID. You can enter the symbolic
ID and value of the panel ID in the Panel ID field. If the symbol and value you
want to use are already defined in the include header file, you can select them
from the drop-down list.
ΓòÉΓòÉΓòÉ 5.22.10. Message/String Resources ΓòÉΓòÉΓòÉ
The Message Resources dialogue allows you to enter the message table
definitions, whereas the String Resources dialogue allows you to enter string
table definitions. The two dialogues are similar in appearance and usage.
The Text entry field is used for the message or string itself. The symbolic ID
and value are defined in the ID field. You can enter the symbolic ID and the
value for the message. If the symbol and value you want to use are already
defined in the include header file, you can select them from the drop-down
list.
For a unique ID value, click on the button beside the ID field. This places a
unique value in the field.
To add a message or string table item, complete the entry fields and click on
the Add button. The item is then added to the bottom of the entries in the list
box.
Change a message or string table item by selecting the item in the list box.
The values for that item are placed in the entry fields of the dialogue, where
you can change them. Select the Change push button to record the changes.
Delete items in the list by selecting the item in the list box and clicking on
the Delete button. Note that the maximum length of a string or message is 255
characters. This is a system limitation.
ΓòÉΓòÉΓòÉ 5.22.11. Custom Resource ΓòÉΓòÉΓòÉ
The Custom Resource dialogue allows you to define custom resources you want to
include in the application. The memory options that can be used with a custom
resource are:
Option Description
Default Indicates that the resource should use the
system-defined defaults (Moveable, Load on Call) to
handle the resource. This option is available only
when designing OS/2 1.x applications.
Moveable Indicates that the resource can be moved within
memory. This option is available only when designing
OS/2 1.x applications.
Preload Indicates that the resource should be loaded when the
application is started. If this option is not
selected, the resource will be loaded when it is
requested by the application. This option is
available only when designing OS/2 1.x applications.
Discard Indicates that the resource can be discarded when no
longer required by the application. This option is
available only when designing OS/2 1.x applications.
The symbolic type ID and value are defined through the Type ID field. You can
edit the symbolic type ID and the value for the type. If the symbol and value
you want to use are already defined in the include header file, you can select
them from the drop-down list.
The symbolic ID and value the custom resource are defined through the ID
field. You can edit the symbolic ID and the value for the resource item. If
the symbol and value you want to use are already defined in the include header
file, you can select them from the drop-down list. Click on the button beside
the ID field to causes a unique value to be placed in the field. To add a
resource item, complete the entry fields and click on the Add button. The item
is then added to the bottom of the entries within the list box.
Change a resource item by selecting the item in the list box. The values for
that item will be placed within the entry fields of the dialogue. Change the
values in the entry fields, then select the Change button to record the
changes.
Delete an item in the list by selecting the item in the list box and clicking
on the Delete button.
The entry field Filename is used to describe the filename for the actual
custom resource Through the list boxes, you can locate the desired resource by
selecting the file in the Files list box. The filename is automatically placed
in the Filename entry field.
ΓòÉΓòÉΓòÉ 5.22.12. Resource Table ΓòÉΓòÉΓòÉ
The Resource Table dialogue allows you to define a table resource such as a
character table, font directory, key table, or virtual key table. The memory
options that can be used with a table resource are:
Option Description
Default Indicates that the resource should use the
system-defined defaults (Moveable, Load on Call) to
handle the resource. This option is available only
when designing OS/2 1.x applications.
Moveable Indicates that the resource can be moved within
memory. This option is available only when designing
OS/2 1.x applications.
Preload Indicates that the resource should be loaded when the
application is started. If this option is not
selected, the resource will be loaded when it is
requested by the application. This option is
available only when designing OS/2 1.x applications.
Discard Indicates that the resource can be discarded when no
longer required by the application. This option is
available only when designing OS/2 1.x applications.
The ID and value are defined through the ID field. You can edit the symbolic
ID and the value for the table; if the symbol and value you want to use are
already defined in the include header file, you can select them from the
drop-down list.
Click on the button beside the ID field to place a unique value in the field.
To add a resource table item, complete the entry fields and click on the Add
button. The item is then added to the bottom of the entries in the list box.
Change a resource table item by selecting the item in the list box. The values
for that item will be placed within the entry fields of the dialogue. You can
change the values, then select the Change button to record the changes.
Delete items from the list is done by selecting the items in the list box and
clicking on the Delete button.
The entry field Filename, is used to describe the filename for the actual
custom resource Through the list boxes, you can locate the desired resource by
selecting the file in the Files list box. The filename is automatically placed
in the Filename entry field.
ΓòÉΓòÉΓòÉ 5.23. Source coding rules ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.23.1. Edit Window Messages ΓòÉΓòÉΓòÉ
The Edit Window Messages dialogue allows you to select messages to define or
change source code. The dialogue is similar in appearance and usage to the Edit
Dialogue Messages and Edit Notification Messages dialogues.
The dialogue displays the messages that can be handled within the source code
window procedure generated through Prominare Designer in a combination box.
Select the message you wish to edit from the combination box. This displays the
default source code in the source code display area below the combination box.
The number of macro symbols used in the defined source code are displayed to
the right of the messages combination box. This allows you to quickly see the
number of macros used.
Prominare Designer allows you to edit the comments and the body of the selected
message. Comments always appear after the case statement and are generally used
as an introductory overview to the source code that follows. You can leave the
comments blank if you so desire.
Displaying the Comments tab allows you to enter the comments to be used after
the case statement. Edit the message handling body by clicking on the Body tab.
Through this tab, you can enter local variables to be used during the message
handling, as well as the message handling source code itself. The macro symbols
that you can use within the body are:
Macro Symbol Purpose/Usage
<command> This macro is used to denote the location and
starting position where the command message control
handling is to be placed. Generally, this is used
only within the WM_COMMAND source definition. The
macro will be replaced with the actual control case
statements and methods defined.
<notify> This macro is used to denote the location and
starting position where the notification message
control handling is to be placed. Generally, this is
used only within the WM_CONTROL source definition.
The macro will be replaced with the actual control
case statements and methods defined.
To reset the source code definition to a default state, click on the Defaults
button. This discards the definition entered and replaces it with the default
definition.
For a complete list of macro definitions, consult appendix d, Code Generation
Overview.
Macro Symbol Purpose/Usage
<id> This macro is used to denote an ID value or symbol.
To reset the source code definition to a default state, click on the Defaults
button. This discards the definition entered and replaces it with the default
definition.
ΓòÉΓòÉΓòÉ 5.23.2. Edit Default Source ΓòÉΓòÉΓòÉ
Displaying the Edit Default Source dialogue allows you to edit default source
for following areas:
Tab Source Area
Module start Source module start containing #include, module
purpose and copyright.
Header start Header module start containing header purpose and
copyright.
Window Window procedure template definition.
Child Window Child window procedure template definition.
Dialogue Dialogue procedure template definition.
main() main() function template definition.
Support.C Support.C module definitions. The functions included
within the module are PdsLoadTemplate, PdsKeyProc,
InitApp, CreateStdWindow. It can also contain other
support functions which would be used by the
application.
AppDefs.C Contains the global variable definitions such as hAB.
AppDefs.H Contains the global variable external definitions.
XxxxRegister Contains the XxxxRegister function template for a
PMCX control.
XxxxQuery Contains the XxxxQuery function template for a PMCX
control.
XxxxStyles Contains the XxxxStyles function template for a PMCX
control.
XxxxWndProc Contains the window procedure template definition for
a PMCX control.
InitDLL Contains the InitDLL function template.
Various macro symbols that you can use within the body are:
Macro Symbol Purpose/Usage
<-date-> Denotes where the current date is to be placed.
<-file-> Denotes where the filename is to be placed.
<INCL> Denotes where the OS/2 INCL_* definitions are to be
placed. This macro should be located before the
#include <os2.h> statement.
<include> Denotes where include header file statements are to
be placed.
<statics> Denotes where static variables are to be placed
within a function.
Various macro symbols that you can use within the body of the window
definitions are:
Macro Symbol Purpose/Usage
<localvars> Denotes where local variables are to be placed.
<pfnWndProc> Denotes a window function name.
<statements> Denotes where the general statements are to be placed
within a function.
Various macro symbols that you can use within the dialogue definition body
are:
Macro Symbol Purpose/Usage
<localvars> Denotes where local variables are to be placed.
<pfnDlgProc> Denotes a dialogue function name.
<statements> Denotes where the general statements are to be placed
within a function.
ΓòÉΓòÉΓòÉ 5.23.3. Edit Command Definitions ΓòÉΓòÉΓòÉ
The Edit Command Definitions dialogue allows you to select the methods to
define or change the source code for WM_COMMAND definitions statements, which
are usually the results of menu item or push button selections. The dialogue is
used for menu, push button, user button, and user-defined items.
This dialogue displays the methods that can be handled by Prominare Designer in
a combination box labeled Methods. Select the method you wish to edit from the
Methods combination box. This displays the default source code, including local
variables for the method, in the source code display area below the combination
box. In this area, you can edit the method definition. The following methods
are provided:
Method Comments
Default Does not provide any dialogue invocation.
if ( WinDlgBox(...) ) Invokes the dialogue expecting a return value (either
TRUE or FALSE) to perform further processing. The
dialogue will be modal.
WinDlgBox(...) Invokes the dialogue. The dialogue will be modal.
WinLoadDlg(...) Invokes the dialogue. The dialogue will be modeless.
WinCreateStdWindow( ... ) Creates a standard window.
WinCreateWindow Creates a window.
Other Indicates that another method of loading and
displaying the dialogue will be used. This is similar
to the Default designation in that Prominare Designer
does not provide any default source coding.
The number of macro symbols used in the defined source code is displayed to
the right of the Methods combination box, allowing you to quickly see the
number of macros used.
If there are any local variables used within the method, you can define them
in the Variables entry area. The body of the method must be fully defined and
can use macro symbols to denote various items required to complete the
definition. The macro symbols you can use within the body are:
Macro Symbol Purpose/Usage
<DID_CANCEL> This macro is used to denote the DID_CANCEL ID symbol
that can be used in case statements in place of the
<idButton> macro. DID_CANCEL has special meaning in
both Prominare Designer and OS/2 Presentation
Manager; it denotes the push button associated with
ignoring actions performed within a dialogue.
<DID_OK> This macro is used to denote the DID_OK ID symbol
that can be used in case statements in place the
<idButton> macro. DID_OK has special meaning in both
Prominare Designer and OS/2 Presentation Manager; it
denotes the push button associated with accepting
actions performed within a dialogue.
<hwndFrame> This macro is used to denote the frame handle
variable name.
<id> This macro is used to denote an ID value or symbol.
<idActionBar> This macro is used to denote an ID value or symbol
for an action bar menu item.
<idButton> This macro is used to denote an ID value or symbol
for a button.
<idDlg> This macro is used to denote an ID value or symbol
for a dialogue.
<idMenu> This macro is used to denote an ID value or symbol
for a sub-menu item.
<pfnDlgProc> This macro is used to denote a dialogue function
name.
<pfnWndProc> This macro is used to denote a window function name.
You can delete the method definition by clicking on the Clear push button.
When the command area selected is push button or user button, the following
additional methods are provided:
Method Comments
DID_OK Used for push buttons whose ID is DID_OK.
DID_CANCEL Used for push buttons whose ID is DID_CANCEL.
The number of macro symbols used within the defined source code are displayed
to the right of the Methods combination box, allowing you to quickly see the
number of macros being used.
ΓòÉΓòÉΓòÉ 5.23.4. Source Code Layout ΓòÉΓòÉΓòÉ
The Source Code Layout dialogue allows you to define the default messages that
should be included within a window or dialogue procedure when it is first
created. These messages will appear selected when you click on the Messages...
button in the Window/Dialogue Styles and Child Window Styles dialogues.
The dialogue displays messages that apply to a window procedure within the
combination box labeled Message. You can select a message to include in the
window procedure from the combination box. The source code for the message will
be added to the source code display area and the message added to the
combination box labeled Selected.
Once you have selected a message from the Message combination box, click on the
Added button. Conversely, to delete a message from those selected, first select
the message to delete in the Selected combination box and then click on the
Delete push button.
ΓòÉΓòÉΓòÉ 5.24. PMCX control creation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.24.1. PMCX Creation ΓòÉΓòÉΓòÉ
Through the PMCX Creation dialogue, you can set the values required for a PMCX
control you are creating via Prominare Designer. These values are generally
used to complete the names of the PMCX functions and fill in the USERINFO
structure in the XxxxQuery function.
Enter the name of the PMCX control in the Control name entry field. This name
will become the basis of the PMCX function names, filename, and DLL name. In
the entry field labeled Author, enter the name of the person or organization
writing the control. The classname for the control is entered in the Classname
field. This can be any name accepted within the WinRegisterClass API. Finally,
enter a short description in the Description field.
If the control you are designing warrants, you can specify the maximum amount
of text the control should handle via the spin button labeled Max. text. (The
maximum is 512 bytes.) The width of the control (a value between 0 and 32,767)
is entered via the Width spin button and the height (0 to 32,767) via the
Height spin button.
If your control will handle control data, you can specify the amount of control
data (a value between 0 and 65,535) via the CTLDATA spin button. Enter the ID
of the styles dialogue in the ID field.
Enter the version number for the control in the entry fields labeled Major and
Minor.
The style types and options available are:
Option Description
Bitflags Defines the style values as bitflags. This means that
each bit within the lower portion of the style has a
unique meaning. When using this method to define
styles, remember that a maximum of 16 styles may be
defined.
Sequence Defines the style values as a sequence. This means
that each style is a value between 0 and 65,535.
Refresh Refreshes the control each time the styles dialogue
is successfully exited. If the styles dialogue is
exited through the Cancel button, no refresh is
performed.
Variable CTLDATA Indicates that the control being created does not
have a fixed length control data. When this option is
used, the mechanism for allocating control data space
takes into consideration that the amount of data may
be different based on the user selections within the
styles dialogue.
Allows style changing Indicates that the control is capable of updating its
styles by querying the styles flags. This allows
Prominare Designer avoid destroying and recreating
the control each time the control needs refreshing
after the styles dialogue is exited.
Tabable Indicates that the control can receive focus and user
input, and is therefore tabable.
Help selectable Indicates that the control should be included within
any help sub-tables generated, since it can receive
focus and user input.
ΓòÉΓòÉΓòÉ 5.25. Support dialogues ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 5.25.1. Resource Properties ΓòÉΓòÉΓòÉ
The Resource Properties dialogue allows the following memory options and code
page to be set for accelerators, dialogues, menus, messages, and strings:
Option Description
Default Designates that the resource should use the
system-defined defaults (Moveable, Load on Call) for
handling the resource. This option is available only
when designing OS/2 1.x applications.
Moveable Designates that the resource can be moved within
memory. This option is available only when designing
OS/2 1.x applications.
Preload Designates that the resource should be loaded when
the application is started. If this option is not
selected, the resource will be loaded when requested
by the application. This option is available only
when designing OS/2 1.x applications.
Discard Designates that the resource can be discarded when no
longer required by the application. This is available
only when designing OS/2 1.x applications.
ΓòÉΓòÉΓòÉ 5.25.2. Relative Mouse Position ΓòÉΓòÉΓòÉ
The Relative Mouse Position dialogue allows you to define the absolute position
of the dialogue relative to the mouse pointer when that dialogue is created.
(You may find that you cannot get the exact position you desire simply by using
the Set relative to mouse position button and that you need to specify the
exact position.)
Specify the horizontal and vertical mouse positions in the entry fields labeled
Horizontal (x) and Vertical (y). Positions are relative to the lower left
corner of the dialogue. Therefore, it you have a push button at location 5, 5
and you want the button to appear under the mouse when the dialogue is created,
enter -10, -10, causing the mouse pointer to appear at position 10, 10 when the
dialogue is first displayed.
ΓòÉΓòÉΓòÉ 5.25.3. Dialogue Unit Limits Selection ΓòÉΓòÉΓòÉ
The Dialogue Unit Limits Selection dialogue allows you to select a predefined
device, or one defined through the Dialogue Unit Definition dialogue.
Select the target device from the drop down labeled Device. Selecting an item
on the list displays the fields in the dialogue to the number of colours for
the device, along with its horizontal and vertical resolution. The dialogue
factors are also displayed.
The dialogue factors for the device you are currently using, along with the
factors from the target device, are used to determine the ratio. You can see
the display limits of the controls as they may be created on that particular
device by selecting the Show display limits button.
Even though this dialogue displays the limits of controls for given devices,
you should still test the application against that device--the display limits
shown are only a loose approximation of what the limits might be. There is no
definitive method of converting the limits of controls from one device to
another.
ΓòÉΓòÉΓòÉ 5.25.4. Grid ΓòÉΓòÉΓòÉ
For greater control over the placement of controls within a window or dialogue,
Prominare Designer can utilize a placement/movement grid. Double-clicking on
the Grid button in the tool bar displays the Grid dialogue, allowing you to
define a placement/movement grid and choose whether or not to snap new controls
to the placement grid.
The first entry field, Horizontal (x), defines the horizontal grid value. The
Vertical (y) field defines the vertical grid value. The default value for both
is 5.
If you select the Snap to check box, new controls snap to the placement grid.
For example, if the grid is 5 by 5 and you create a control at location 7, 8
with the mouse, the control will be placed at 5, 10. Prominare Designer saves
grid values, ensuring that the same grid is used when you next edit the design
file.
ΓòÉΓòÉΓòÉ 5.25.5. Prominare Designer Information ΓòÉΓòÉΓòÉ
The Prominare Designer Information dialogue is used to display information for
the current design file along with the current window or dialogue displayed. It
shows the total number of windows and dialogues in the design, along with the
last day and time it was edited.
The number of controls, accelerators, action bar and sub-menu items, help
table, table items, sub-table, and sub-table items are displayed here, as well
as the resource distribution for the dialogue or window, menu, accelerator, and
help tables.
ΓòÉΓòÉΓòÉ 5.25.6. ID Field ΓòÉΓòÉΓòÉ
From within many of the style dialogues, you can use the ID field to select ID
symbols and values contained in the include header. This field contains all of
the symbol definitions entered through the program for the current design file,
as well as the symbol definitions read in from the include header file.
Within OS/2 Presentation Manager, there are some predefined symbol IDs and
values. The following delineates these values and their usage:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéID Symbol ΓöéValue ΓöéUse Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDID_CANCEL Γöé2 ΓöéUsed with the Cancel push Γöé
Γöé Γöé Γöébutton. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDID_OK Γöé1 ΓöéUsed with the Ok push button. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_SIZE Γöé0x8000 ΓöéUsed with Size system menu Γöé
Γöé Γöé Γöéitem (Alt+F8). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_MOVE Γöé0x8001 ΓöéUsed with Move system menu Γöé
Γöé Γöé Γöéitem (Alt+F7). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_MINIMIZE Γöé0x8002 ΓöéUsed with Minimize system menuΓöé
Γöé Γöé Γöéitem (Alt+F9). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_MAXIMIZE Γöé0x8003 ΓöéUsed with Maximize system menuΓöé
Γöé Γöé Γöéitem (Alt+F10). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_CLOSE Γöé0x8004 ΓöéUsed with Close system menu Γöé
Γöé Γöé Γöéitem (Alt+F4). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_NEXT Γöé0x8005 ΓöéUsed to move focus and Γöé
Γöé Γöé Γöéactivation to the next Γöé
Γöé Γöé Γöétop-level frame (Alt+TAB). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_APPMENU Γöé0x8006 ΓöéUsed to select a window's Γöé
Γöé Γöé Γöéaction bar. When the window Γöé
Γöé Γöé Γöéreceives this command message,Γöé
Γöé Γöé Γöéa MM_STARTMENUMODE message is Γöé
Γöé Γöé Γöésent to the action bar (F10, Γöé
Γöé Γöé ΓöéAlt, or Alt+Graf). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_SYSMENU Γöé0x8007 ΓöéUsed as the ID of the system Γöé
Γöé Γöé Γöésub-menu that contains the Γöé
Γöé Γöé ΓöéSC_RESTORE, etc. When the Γöé
Γöé Γöé Γöéframe window receives the Γöé
Γöé Γöé ΓöéSC_SYSMENU command message, Γöé
Γöé Γöé ΓöéMM_STARTMENUMODE message is Γöé
Γöé Γöé Γöésent to the system menu Γöé
Γöé Γöé Γöé(Alt+SPACE or Shift+ ESC). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_RESTORE Γöé0x8008 ΓöéUsed with Restore system menu Γöé
Γöé Γöé Γöéitem (Alt+ENTER, Alt+NEWLINE Γöé
Γöé Γöé Γöéor Alt+F5). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_NEXTFRAME Γöé0x8009 ΓöéUsed to move the focus and Γöé
Γöé Γöé Γöéactivation to the next frame Γöé
Γöé Γöé Γöéat the same level as the Γöé
Γöé Γöé Γöécurrent frame (Alt+F6). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_NEXTWINDOW Γöé0x8010 ΓöéNot used. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_TASKMANAGER Γöé0x8011 ΓöéUsed with Task Manager system Γöé
Γöé Γöé Γöémenu item (Ctrl+ESC). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_HELPKEYS Γöé0x8012 ΓöéGenerated by the Help system. Γöé
Γöé Γöé ΓöéWhen this command message is Γöé
Γöé Γöé Γöéreceived, HM_KEYS_HELP is sentΓöé
Γöé Γöé Γöéto the help instance Γöé
Γöé Γöé Γöéassociated with the window, Γöé
Γöé Γöé Γöéwith mp1 and mp2 set to zero. Γöé
Γöé Γöé ΓöéIf no help instance is found, Γöé
Γöé Γöé Γöéa WM_SYSCOMMAND message is Γöé
Γöé Γöé Γöésent. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_HELPINDEX Γöé0x8013 ΓöéGenerated by the Help system. Γöé
Γöé Γöé ΓöéWhen this command message is Γöé
Γöé Γöé Γöéreceived, the HM_HELP_INDEX isΓöé
Γöé Γöé Γöésent to the help instance Γöé
Γöé Γöé Γöéassociated with the window, Γöé
Γöé Γöé Γöéwith mp1 and mp2 set to zero. Γöé
Γöé Γöé ΓöéIf no help instance is found, Γöé
Γöé Γöé ΓöéWM_SYSCOMMAND message is sent.Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_HELPEXTENDED Γöé0x8014 ΓöéGenerated by the Help system. Γöé
Γöé Γöé ΓöéWhen this command message is Γöé
Γöé Γöé Γöéreceived, the HM_EXT_HELP is Γöé
Γöé Γöé Γöésent to the help instance Γöé
Γöé Γöé Γöéassociated with the window, Γöé
Γöé Γöé Γöéwith mp1 and mp2 set to zero. Γöé
Γöé Γöé ΓöéIf no help instance is found, Γöé
Γöé Γöé Γöéa WM_SYSCOMMAND message is Γöé
Γöé Γöé Γöésent. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_SWITCHPANELIDS Γöé0x8015 ΓöéGenerated by the Help system. Γöé
Γöé Γöé ΓöéWhen this message is received,Γöé
Γöé Γöé Γöéa HM_SET_SHOW_PANEL_ID messageΓöé
Γöé Γöé Γöéis sent to the help instance, Γöé
Γöé Γöé Γöéwith mp1 set to Γöé
Γöé Γöé ΓöéCMIC_TOGGLE_PANEL_ID and mp2 Γöé
Γöé Γöé Γöéset to zero. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_DBE_FIRST Γöé0x8018 ΓöéNot used but provided for Γöé
Γöé Γöé Γöéfuture double byte character Γöé
Γöé Γöé Γöésupport. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSC_DBE_LAST Γöé0x801F ΓöéNot used but provided for Γöé
Γöé Γöé Γöéfuture double byte character Γöé
Γöé Γöé Γöésupport. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
These predefined constants are contained in the OS/2 Presentation Manager
include header files.
They are not placed in the include header file created by Prominare Designer
when the files are saved to disk.
When you click on the drop-down button of the ID field, the drop-down list is
displayed showing these predefined constants, along with those constants read
in from the include header file and those defined within the current design.
Notice that the list displays the ID symbols and values in different colours.
The following lists the colours used and their meaning:
Colour Meaning
Green Predefined symbol.
Blue Symbol used within the design and contained within the
include header.
Black Symbol not used within the design but contained within the
include header.
Red Symbol not defined within the include header but used
within the design.
If you click button 2 of the mouse while in the drop-down list area, a pop-up
menu is displayed; through it you can do one of two things. First, you can
select a letter from the list, causing the drop-down list to jump to first
item in the list which has the first letter of the item matching the selected
letter.
You can also click on the Mask menu item, displaying a small window, ID Symbol
Search Mask which you can enter the characters of the search mask to which the
list should be oriented. This allows you to jump to a specific symbol group,
not just to the major character of the group.
ΓòÉΓòÉΓòÉ 5.25.7. Edit Deletion List ΓòÉΓòÉΓòÉ
Once you have selected Verify on save in the New Design dialogue, the Edit
Deletion List dialogue appears, which allows you to edit the items in the
deletion list. These items include both deleted and renamed items from the
dialogues or windows you have created or edited.
The items are shown in a list box in the dialogue, with the ID value, control
type, and applicable parent. Select the items you wish to delete from the list
and press the Delete button to remove them and begin saving the design to disk.
Clicking the All button selects all items in the list box, allowing you to
deselect items as required. At the beginning of each entry in the dialogue, a
letter appears indicating the type of action performed on the object in
question. These abbreviations are:
Abbreviation Meaning
R Object renamed.
D Object deleted.
M Message deleted.
ΓòÉΓòÉΓòÉ 5.25.8. Set ID Value ΓòÉΓòÉΓòÉ
When you want the New ID button to generate a value other than the current high
ID value, you simply click button 2 on the New ID button. This will cause the
Set ID Value dialogue to be displayed. Within this dialogue you can enter a
new value that will be used as the next ID when the New ID button is clicked.
ΓòÉΓòÉΓòÉ 5.26. Prominare Designer Limits ΓòÉΓòÉΓòÉ
The following describe the maximum limits of Prominare Designer:
Area Limits
Maximum symbols 10,208
Maximum controls 1,264
Maximum window/dialogues 1,008
Maximum Resource Script File lines 24,576
Maximum strings/messages 2,032
Maximum resources (i.e. bitmaps) 2,032
Maximum association items 512
Maximum pre-design windows or dialogues 512
Maximum PMCX or temporary controls unlimited
ΓòÉΓòÉΓòÉ 6. section four - PM Control Extension (PMCX) ΓòÉΓòÉΓòÉ
Prominare Designer's PM Control Extension (PMCX) allows you to design and
create custom controls, similar to those of OS/2 Presentation Manager, that can
be accessed from within your applications.
PMCX has been designed so the controls you create can be accessed through
Prominare Designer. As with normal OS/2 Presentation Manager controls, you can
view the final control as it would appear in your application. And as with
Prominare Designer's other controls, you can define a control in terms of its
style, text, and other related information.
OS/2 Presentation Manager is designed to allow custom or user-defined controls
to be included within dialogues. PMCX uses this feature to let you create
controls not found in the default OS/2 Presentation Manager environment. In
reality, a custom control is similar to any of the windows created for an
application.
OS/2 Presentation Manager also provides a mechanism for run-time binding of
libraries-- namely, dynamic-link libraries. PMCX uses this mechanism to make
the custom control accessible to applications including Prominare Designer.
ΓòÉΓòÉΓòÉ 6.1. PMCX Architecture ΓòÉΓòÉΓòÉ
The PM Control Extension is based on a simple foundation that allows both your
application and Prominare Designer to interact with it. With the conventions
and methodology that follow, you will learn to create PMCX controls.
The architecture of a PMCX control, shown in the following diagram, can be
described as three publicly defined functions and a window procedure. The three
functions have to follow the naming and usage conventions of PMCX, whereas the
window procedure is similar to any other window procedure for a custom control.
The first convention deals with naming the control and the functions provided
in the PMCX control's DLL. For example, the definition of the initialization
routine is:
XxxxRegister(HAB hAB);
Xxxx is the formal name of the control, and also the name of the dynamic-link
library. Therefore, for a control called Ruler, the initialization routine
would be
RulerRegister(HAB hAB);
and the dynamic-link library name would be
RULER.DLL
This convention, the corner-stone for PMCX, allows Prominare Designer to
interact properly with the PMCX control DLL.
PMCX defines three required public functions:
Function Purpose
XxxxRegister Controls registration routine.
XxxxQuery Controls information query routine used by
Prominare Designer to determine capabilities of
the control.
XxxxStyles Control's styles dialogue procedure, used by
Prominare Designer to allow styles, text, ID
symbol and value. When included within a design,
controls specific information to be defined and
edited.
A PMCX control must also provide certain resources used by Prominare Designer.
The first resource is a dialogue template used for the XxxxStyles dialogue.
The second resource, although not absolutely required, makes reading resource
script files easier, is a set of entries within a string table. These entries
correspond to the style flags of the PMCX control and are used by Prominare
Designer during resource script generation, allowing the entry for the control
to look exactly like a normal PM control.
ΓòÉΓòÉΓòÉ 6.2. How it works ΓòÉΓòÉΓòÉ
Given the dual nature of a PMCX control, there is an easy part and a hard part
to the design process. The easy part is how your application interacts with the
control. You only need to use the XxxxRegister function in your application to
register the control with PM; let PM do the rest. If the control is part of a
dialogue template, PM will create the control as thought it were a normal PM
control. It is that simple.
The hard part is how the control interacts with Prominare Designer. This is a
little more complicated, as you have to fill in a structure describing the
control's capabilities to Prominare Designer, as well as create the styles
dialogue.
PMCX defines a set of structures that allow the custom control to pass
information between itself and Prominare Designer. The structures are at all
times controlled by Prominare Designer, which is responsible for allocating and
de-allocating necessary memory for the structures. Only through a callback
routine to Prominare Designer are you allowed to reallocate one area of these
structures--the area containing the variable sized control data.
Some of the structures are used only once, whereas others must be used many
times, by both Prominare Designer and the control. The methods of using the
structures within the control are defined to allow the control to access and
update the elements of the structure. The best place to start is with the
header that defines the structures you will use to interact with Prominare
Designer.
ΓòÉΓòÉΓòÉ 6.2.1. PMCX Definitions Header - PMCX.H ΓòÉΓòÉΓòÉ
The PMCX definitions header include file, PMCX.H, is used to define constants,
structures, and macros, allowing information to be passed between Prominare
Designer and the custom control. The contents of PMCX.H are shown below.
/* pmcx.h Created: 1993-12-14 Revised: 1995-11-08 */
/* PM Control Extensions (PMCX) */
/* Definitions Header */
/* Consult User's Guide for complete description of PM Control */
/* Extensions */
/* Copyright Γòò 1989-1997 Prominare Inc. All Rights Reserved. */
/* -------------------------------------------------------------------- */
/* Function Prototypes (32-bit definition) */
/* ------------------- */
/* */
/* Control Initialization: */
/* */
/* BOOL EXPENTRY XxxxRegister(HAB hAB); */
/* */
/* Styles Dialogue Procedures: */
/* */
/* MRESULT EXPENTRY XxxxStyles(HWND hWnd, ULONG msg, */
/* MPARAM mp1, MPARAM mp2); */
/* */
/* Window Procedure: */
/* */
/* MRESULT EXPENTRY XxxxWndProc(HWND hWnd, ULONG msg, */
/* MPARAM mp1, MPARAM mp2); */
/* */
/* Control Information Procedure: */
/* */
/* BOOL EXPENTRY XxxxQuery(PUSERINFO pUserInfo); */
/* */
/* Set Page Procedure: */
/* */
/* BOOL EXPENTRY XxxxSetPage(HWND hwndControl, HWND hwndPage); */
/* --- Constant Definitions ------------------------------------------- */
#define CTYPES 1 /* Maximum Number of User Types */
#define CCHCLASS 32 /* Maximum Classname Length */
#define CCHNAME 32 /* Maximum Name Length */
#define CCHAUTHOR 64 /* Maximum Author Name Length */
#define CCHDESC 32 /* Maximum Type Description Length */
#define CCHID 32 /* Maximum ID Symbol Length */
#define CCHTEXTMAX 512 /* Maximum Control Text Length */
#define UTYPE_PRIVATE 0x0002 /* Type: Private */
#define UTYPE_PUBLIC 0x0004 /* Type: Public */
#define USER_CWINDOWWORDS 8UL /* Control Reserved Memory Size */
#define QWW_USER (QWL_USER + 0UL) /* Pointer to User Data */
#define QWW_CDATA (QWL_USER + 4UL) /* Pointer to Private Data Pointer */
#define CUACHK_MNEMONIC 0 /* CUA Check: Mnemonic */
#define CUACHK_CAPS 1 /* CUA Check: Capitalization */
#define CUACHK_ELLIPSIS 2 /* CUA Check: Ellipsis */
#define STYLETYPE_BITFLAGS 0x0001 /* Style Type: Bit Flags */
#define STYLETYPE_SEQUENCE 0x0002 /* Style Type: Sequential */
#define PMCXOPT_NONE 0x00000000UL
#define PMCXOPT_REFRESH 0x00000001UL
#define PMCXOPT_VARICDATA 0x00000002UL
#define PMCXOPT_STYLECHG 0x00000004UL
#define PMCXOPT_TABABLE 0x00000008UL
#define PMCXOPT_HELP 0x00000010UL
#define PMCXOPT_PAGE 0x00000020UL
/************************************************************************/
/************************************************************************/
/* */
/* PMCX 32-Bit Structure Definitions */
/* */
/************************************************************************/
/************************************************************************/
/* --- User Control Styles Structure ---------------------------------- */
typedef struct _STYLE /* st */
{ /* Size: 8 bytes */
ULONG flStyleMask; /* Style Flag Mask */
ULONG idStyle; /* Resource String ID */
} STYLE ;
/* --- User Control Type Structure ------------------------------------ */
typedef struct _USERTYPE /* ut */
{ /* Size: 348 bytes */
LONG cx; /* Suggested Width of Control */
LONG cy; /* Suggested Height of Control */
ULONG flStyle; /* Initial Style Flags */
ULONG flOptions; /* Options Flag */
ULONG cMaxText; /* Maximum Text Required */
ULONG idDlg; /* Dialogue ID */
ULONG idReserved; /* Reserved */
ULONG flStyleType; /* Style Type */
ULONG cCtlData; /* Control Data Count */
ULONG ulType; /* Control Type */
ULONG cMasks; /* Style Masks Count */
CHAR szDescription[CCHDESC];/* Control Name */
STYLE stMasks[32]; /* Style Masks Array */
ULONG aulReserved[4]; /* Reserved */
} USERTYPE ;
/* --- User Control Information Structure ----------------------------- */
typedef struct _USERINFO /* ui */
{ /* Size: 512 bytes */
ULONG ulMajor; /* Control Version Number: Major */
ULONG ulMinor; /* Control Version Number: Minor */
CHAR szAuthor[CCHAUTHOR]; /* Control Author */
CHAR szClassname[CCHCLASS];/* Classname */
CHAR szName[CCHNAME]; /* Library Name */
ULONG aulReserved[6]; /* Reserved */
ULONG cTypes; /* Number of Control Types Supported */
USERTYPE utDefined[CTYPES]; /* Define User Types Array */
} USERINFO ;
typedef USERINFO *PUSERINFO;
/* --- User Control Style Structure ----------------------------------- */
typedef struct _USERSTYLE /* ust */
{ /* Size: 112 bytes */
PFN pfnSetSymbolID; /* Symbol/ID Set Function Address */
PFN pfnGetSymbolID; /* Symbol/ID Get Function Address */
PFN pfnGetFontClr; /* Font/Colours Function Address */
PFN pfnCUACheck; /* CUA Compliance Function Address */
PFN pfnRealloc; /* Reallocation Function Address */
ULONG flStyle; /* Style */
ULONG id; /* ID Value */
CHAR szid[CCHID]; /* ID Symbol */
PSZ pszText; /* Text Pointer */
ULONG cText; /* Text Count (Including NULL) */
PFN pfnGetBidi; /* Bidi Params Function Address */
ULONG aulReserved[8]; /* Reserved */
PBYTE pbCtlData; /* Variable Control Data Pointer */
ULONG cbCtlData; /* Control Data Size */
BYTE abCtlData[1]; /* Control Data */
} USERSTYLE ;
typedef USERSTYLE *PUSERSTYLE;
/* --- Macro Helpers for Setting or Retrieving User Style Pointer ------ */
#define PDATATODLG(hwndClient) ((WinSetWindowPtr(hwndClient, QWL_USER,\
(PVOID)mp2)))
#define PDATAFROMDLG(hwndClient) (((PUSERSTYLE)WinQueryWindowPtr(hwndClient,\
QWL_USER)))
There are a set of constant definitions, provided in the header, that you can
use in your implementation of the PMCX control. They are a mixture of limits,
options, flags, and service requests:
Constant Definition
CTYPES Defines the maximum length of the class name
definition, including null terminating byte.
CCHCLASS Defines the maximum length of the class name
definition, including null terminating byte.
CCHNAME Defines the maximum length of the control's
name, including the null terminating byte.
CCHAUTHOR Defines the maximum length of the author's name
for the control, including null terminating
byte.
CCHDESC Defines the maximum length of the control's
description, including the null terminating
byte.
CCHID Defines the maximum length of the ID symbol,
including the null terminating byte.
CCHTEXTMAX Defines the maximum length of text that can be
defined for the control, including the null
terminating byte.
UTYPE_PRIVATE Defines the control as a private class; it must
be registered specifically by the application
before it is used. This registration is provided
the XxxxRegister function within the DLL.
UTYPE_PUBLIC Defines the control as a public class that has
been registered with OS/2 Presentation Manager
and does not need to be registered by the
application.
USER_CWINDOWWORDS Defines the minimum amount of reserved memory
that must be allocated for the control when it
is registered with OS/2 Presentation Manager.
Additional reserved memory can be allocated by
adding the value to the constant in the
XxxxRegister function.
QWW_USER Used as an index into the control's reserved
memory, where the pointer to the user data is
located. Constant Definition
QWW_CDATA Used as an index into the control's reserved
memory, where the pointer to the private control
data memory allocated for the control is
located.
CUACHK_MNEMONIC Used as an option with the pfnCUACheck function
to check the text of the control for CUA
compliance in terms of mnemonic inclusion.
CUACHK_CAPS Used as an option with the pfnCUACheck function
to check the text of the control for CUA
compliance in terms of capitalization.
CUACHK_ELLIPSIS Used as an option with the pfnCUACheck function
to check the text of the control for CUA
compliance in terms of a space between the text
and ellipsis.
STYLETYPE_BITFLAGS Indicstes that the style masks are bitflags and
that the style generated in the resource script
can be multiple values when bitwise compared to
the style masks.
STYLETYPE_SEQUENCE Indicates that the style masks are sequential in
nature and that the styles generated within the
resource script should be based on a single
value that must match the style mask.
PMCXOPT_NONE Indicates that no special options are required.
PMCXOPT_REFRESH Indicates that the control should be refreshed
through Prominare Designer, where Prominare
Designer will delete the previous instance of
the control and create a new one to show the
revised styles selected.
PMCXOPT_VARICDATA Indicates that the control supports variable
length control data.
PMCXOPT_STYLECHG Indicates that the control supports the changing
of the style flags using the WinSetWindowULong
function and the index of QWL_STYLE.
PMCXOPT_TABABLE Indicates that the control supports tabbing and
cursor movement selections.
PMCXOPT_HELP Indicates that the control allows the help to be
selected when it receives focus.
PMCXOPT_PAGE Indicates that the control is a page-type
control which is similar in nature to the PM
notebook control where a dialogue template is
used as the contents of the control.
Four structures are defined within the header. Three are used to describe the
PMCX control to Prominare Designer; the fourth is used by Prominare Designer
to communicate with the styles dialogue:
Name Purpose
STYLE Defines a control style mask and the
corresponding resource file string table ID.
Used by the USERTYPE structure.
USERTYPE Defines the user control type. The information
within the structure is for the default
characteristics of the control, the ID of the
dialogue template within the control's DLL for
the styles dialogue, the room necessary for
additional control data (i.e. picture masks,
ranges, limits, etc.), control type, styles
count, and style masks. Used by the USERINFO
structure.
USERINFO Defines information for the control initially
queried by Prominare Designer to determine the
capabilities of the control. The control's
version number, author, class, and types are
defined. Used only by the XxxxQuery function.
USERSTYLE Used by Prominare Designer and the XxxxStyles
functions to allow a method of communication
regarding data information entered or edited
through the dialogue procedure. The structure
provides helper function addresses that can be
used to reference the control's style, ID symbol
and value, and text, and to control specific
data.
The STYLE structure is defined as:
Field Purpose
flStyleMask Contains a style flag mask for a possible style
of the control. Should be in the form of
0x0000UL. The style mask must correspond with a
resource string indicated in the idStyle field.
idStyle Contains the ID of the resource string for the
corresponding style mask in the flStyleMask
field.
The following is an example of how the structure is used:
/* Constants definitions within an include header file */
#define EC_NORMALBORDER 0x0001L
#define EC_THICKBORDER 0x0002L
#define EC_NOBORDER 0x0004L
#define IDS_NORMALBORDER 800
#define IDS_THICKBORDER 801
#define IDS_NOBORDER 802
/* Within source code file */
USERTYPE utExample;
utExample.flStyleType = STYLETYPE_BITFLAGS;
utExample.stMasks[0].flStyleMask = EC_NORMALBORDER;
utExample.stMasks[0].idStyle = IDS_NORMALBORDER;
utExample.stMasks[1].flStyleMask = EC_THICKBORDER;
utExample.stMasks[1].idStyle = IDS_THICKBORDER;
utExample.stMasks[2].flStyleMask = EC_NOBORDER;
utExample.stMasks[2].idStyle = IDS_NOBORDER;
/* Within resource script file */
STRINGTABLE
BEGIN
IDS_NORMALBORDER, "EC_NORMALBORDER"
IDS_THICKBORDER, "EC_THICKBORDER"
IDS_NOBORDER, "EC_NOBORDER"
END
The USERTYPE structure is defined as:
Field Purpose
cx Contains the suggested width of the control in
dialogue units. This value will be used by
Prominare Designer as the initial width of the
control when it is added to a window or
dialogue.
cy Contains the suggested height of the control in
dialogue units. This value will be used by
Prominare Designer as the initial height of the
control when it is added to a window or
dialogue.
flStyle Contains initial style flags of the control when
it is created by Prominare Designer.
flOptions Contains the options flag, which can be one of
the PMCXOPT_* flags.
cMaxText Contains the maximum number of characters that
the control is capable of handling. This value
is used by Prominare Designer to allocate space
for the control text addressed in the pszText
field in the USERSTYLE structure.
idDlg Contains the resource ID of the styles dialogue
displayed by Prominare Designer when the control
is first added to a window or dialogue or when
the user requests to edit the styles of the
control.
idReserved Reserved.
flStyleType Contains the style type flag that indicates to
Prominare Designer how the style masks should be
interpreted when the resource script statement
for the control is generated. The current style
types defined are STYLETYPE_BITFLAGS for bitflag
styles and STYLETYPE_SEQUENCE for sequential
styles.
cCtlData Contains the number of bytes that should be
allocated for private data used by the control.
This data is allocated by Prominare Designer and
is addressed in the abCtlData field in the
USER_STYLE structure.
ulType Contains the control type, which may be either
UTYPE_PRIVATE or UTYPE_PUBLIC.
cMasks Contains the total count of style masks defined
in stMasks field.
szDescription[CCHDESC] Contains a short description that can be
displayed by Prominare Designer.
stMasks[32] Contains the control style flag masks and ID
string values. aulReserved[4] Reserved.
The following is an example of how the structure is used:
USERTYPE utDefined;
utDefined.cx = 50L;
utDefined.cy = 12L;
utDefined.flStyle = 0UL;
utDefined.idDlg = Dialogue id;
utDefined.ulType = UTYPE_PRIVATE;
utDefined.cCtlData = 20UL;
utDefined.cMasks = 2UL;
utDefined.cMaxText = 5UL;
utdefined.flStyleType = STYLETYPE_BITFLAGS;
utDefined.stMasks[0].flStyleMask = 0x0001UL;
utDefined.stMasks[0].idStyle = String id;
utDefined.stMasks[1].flStyleMask = 0x0002UL;
utDefined.stMasks[1].idStyle = String id;
strcpy(utDefined.szDescription, "Description");
The USERINFO structure is defined as:
Field Purpose
ulMajor Contains the control's major version number.
ulMinor Contains the control's minor version number.
szAuthor[CCHAUTHOR] Contains the control's author name.
szClassname[CCHCLASS] Contains the classname of the control.
szName[CCHNAME] Contains the common name for the control. This
name should correspond to the Xxxx component of
the required functions as well as to the
dynamic- link library name.
aulReserved[6] Reserved.
cTypes Contains the number of types supported by the
control. In Version 1.0 of PMCX, only one type
is allowed and this field must be 1.
utDefined[CTYPES] Contains the type information of each of the
controls supported by the control. In Version
1.0 of PMCX, only the first array element is
used.
The following is an example of how the structure is used:
USERINFO uiControl;
uiControl.ulMajor = 1UL;
uiControl.ulMinor = 0UL;
uiControl.cTypes = 1UL;
strcpy(uiControl.szAuthor, "Author");
strcpy(uiControl.szClassname, "Classname");
strcpy(uiControl.szName, "Common Name");
uiControl.utDefined[0].cx = 50L;
uiControl.utDefined[0].cy = 12L;
uiControl.utDefined[0].flStyle = 0UL;
uiControl.utDefined[0].idDlg = Dialogue id;
uiControl.utDefined[0].ulType = UTYPE_PRIVATE;
uiControl.utDefined[0].cCtlData = 20UL;
uiControl.utDefined[0].cMasks = 2UL;
uiControl.utDefined[0].cMaxText = 5UL;
uiControl.utDefined[0].flStyleType = STYLETYPE_BITFLAGS;
uiControl.utDefined[0].stMasks[0].flStyleMask = 0x0001UL;
uiControl.utDefined[0].stMasks[0].idStyle = String id;
uiControl.utDefined[0].stMasks[1].flStyleMask = 0x0002UL;
uiControl.utDefined[0].stMasks[1].idStyle = String id;
strcpy(uiControl.utDefined[0].szDescription, "Description");
The USERSTYLE structure is defined as:
Field Purpose
pfnSetSymbol Contains the function address for the function
in Prominare Designer that sets the ID field
symbol and value.
pfnGetSymbol Contains the function address for the function
in Prominare Designer that causes the ID field
symbol and value to be validated and placed
within the USERSTYLE structure.
pfnGetFontClr Contains the function address for the Font &
Colours dialogue. Prominare Designer internally
records the font and colours selected by the
user on behalf of the control.
pfnCUACheck Contains the function address for the CUA
Compliance checking function. Compliance for
mnemonics, capitalization, and ellipsis can be
checked via this function if the control
supports any of these features. A value of TRUE
is returned if non-compliance is determined. A
value of FALSE is returned if the control is
compliant.
pfnRealloc Contains the function address for the control
data reallocation function, which allows the
control to reallocate the necessary control data
memory when it supports variable control data.
flStyle Contains the current style flags set for the
control.
id Contains the current ID value for the control.
szid[CCHID] Contains the current ID symbol for the control.
pszText Contains the address of the text for the
control.
cText Contains the count of characters for the
control.
pfnGetBidi Contains the function address for the
Bidirectional Support dialogue. Prominare
Designer internally records the bi-directional
options selected by the user on behalf of the
control.
aulReserved[8] Reserved.
pbCtlData Contains the variable control data buffer
pointer. Used only when the control supports
variable control data; used in place of the
abCtlData field.
cbCtlData Contains the size of the control data buffer
pbCtlData when the control supports variable
control data.
abCtlData[1] First element of the private control data. When
control data is used, the control should cast
the appropriate structure to the address of the
array, so it can easily address areas of the
data.
Two helper macros are defined in the header:
Macro Purpose
PDATATODLG Places the passed address of the USERSTYLE
pointer in the dialogue's reserved memory. The
passed address is contained within the second
message parameters (MPARAM mp2) and must be
placed in the dialogue's reserved memory when it
receives the WM_INITDLG message.
PDATAFROMDLG References the memory location in the dialogue
procedure where the USERSTYLE pointer passed to
the dialogue is placed. A pointer returned by
the macro allows reference to the elements of
the USERSTYLE structure.
ΓòÉΓòÉΓòÉ 6.3. PMCX construction ΓòÉΓòÉΓòÉ
The first item of concern is the naming convention. The best way to illustrate
this is by considering the example below:
Functions
XxxxRegister
XxxxQuery
XxxxStyles
XxxxSetPage
Dynamic-Link Library
Xxxx.DLL
Xxxx is the common name for the control. (The common name should be restricted
to eight letters to allow for FAT disk systems unless it is to be used
specifically with HPFS disk systems.) The common name is allowed to be a
maximum of 32 bytes long, including the NULL terminating character; the szName
field of the USERINFO structure will accept only that number of characters.
The second item of concern is who is responsible for allocating and
de-allocating memory for the structures. Prominare Designer allocates and
de-allocates the necessary memory for structures used to communicate with the
PMCX control. It provides a pointer to the memory address of the structure and
to the function when communication is required. It is the responsibility of
the PMCX control's style function to save the address of the structure. Any
pointers to memory elements within the structures are also allocated and
deallocated by Prominare Designer on behalf of the control.
The only exception is in the case of a control that allows for variable length
control data. In this case, the control can, through a callback function to
Prominare Designer, reallocate the control data memory.
Since the PMCX control's dialogue procedure is responsible for saving the
address of the USERSTYLE structure address passed to it by Prominare Designer,
you can use the two helper macros defined by the styles dialogue procedure to
save and retrieve the address. To save the USERSTYLE structure address in the
QWL_USER reserved memory location of the dialogue's reserved memory, use the
PDATATODLG macro. To retrieve the USERSTYLE structure address, use
PDATAFROMDLG macro.
To ensure the success of any PMCX control, you must encapsulate its use to
permit multiple usage, which means that the control must be totally
re-entrant. One way to do this is with dynamically allocated memory. Save this
memory address within the control's reserved memory. These addresses can be
referenced with the QWW_* indices.
Prominare Designer provides a set of helper functions for the control's style
dialogue, which ensure that the dialogue remains consistent with similar
dialogues provided with Prominare Designer. These helper functions must give
the control's dialogue access to the ID field, the Font & Colours dialogue,
symbol verification, and CUA compliance. Prominare Designer must provide the
addresses of these routines within the USERSTYLE structure in the following
elements:
Callback Purpose
pfnSetSymbol ID field symbol and value set helper function
pfnGetSymbol Symbol ID and value validation and retrieval
helper function
pfnGetFontClr Font and colours helper function
pfnCUACheck CUA Compliance helper function
pfnGetBidi Bidirectional helper function
pfnRealloc Memory reallocation function similar to C
library function realloc( )
Prominare Designer constructs the necessary statements in the resource script
on behalf of the PMCX control. In turn, the control must provide style masks
and a string table containing the ASCII style definitions in its resources, if
styles are permitted for the control. The style masks and ID values for the
string that corresponds to the style masks are to be placed in the provided
structure elements of the USERINFO structure, along with the count of masks.
The control must also provide the number of control data bytes it requires
through the USERINFO structure. This structure must be completed in the
function XxxxQuery, through the structure address passed to the function when
it is called by Prominare Designer.
The functions defined for the control must be exported in the controls
definition file. The name of the function should be entered along with an
ordinal value. The following ordinals are required:
Function Ordinal
XxxxRegister 1
XxxxQuery 2
XxxxStyles 3
XxxxSetPage 4
ΓòÉΓòÉΓòÉ 6.4. Reference ΓòÉΓòÉΓòÉ
The following describes the use of each of the required functions of the PMCX
control.
ΓòÉΓòÉΓòÉ 6.4.1. XxxxRegister ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.4.1.1. Purpose ΓòÉΓòÉΓòÉ
The XxxxRegister function is used to register a private control with OS/2
Presentation Manager. It is also used to provide any control specific
initialization.
ΓòÉΓòÉΓòÉ 6.4.1.2. Prototype Definition ΓòÉΓòÉΓòÉ
BOOL EXPENTRY XxxxRegister(HAB hAB);
ΓòÉΓòÉΓòÉ 6.4.1.3. Upon entry ΓòÉΓòÉΓòÉ
hAB contains the calling application's anchor block handle. When the control is
a UTYPE_PRIVATE, the function must register the control with OS/2 Presentation
Manager using the WinRegisterClass function, as follows:
WinRegisterClass(hAB, pszClassname, XxxxWndProc,
CS_CLIPSIBLINGS | CS_SYNCPAINT |
CS_SIZEREDRAW, USER_CWINDOWWORDS);
Additional memory can be reserved for the control by adding the required value
to the USER_CWINDOWWORDS constant. Additional class styles can also be defined
for the control. The pszClassname must contain the classname of the control and
be consistent with the value placed in the USERINFO structure element
szClassname in the XxxxQuery function. The control can use other style flags
as is appropriate.
ΓòÉΓòÉΓòÉ 6.4.1.4. Upon exit ΓòÉΓòÉΓòÉ
XxxxRegister must return a value of TRUE, denoting successful registration of
the control with OS/2 Presentation Manager. A returned value of FALSE indicates
that the control could not be registered and therefore should not be used.
ΓòÉΓòÉΓòÉ 6.4.2. XxxxQuery ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.4.2.1. Purpose ΓòÉΓòÉΓòÉ
The XxxxQuery function is called by Prominare Designer to determine the
capabilities of the control and to receive information critical to its
successful use within Prominare Designer. The USERINFO structure is completed
through this function, in which Prominare Designer passes the function the
address of the structure.
ΓòÉΓòÉΓòÉ 6.4.2.2. Prototype Definition ΓòÉΓòÉΓòÉ
BOOL EXPENTRY XxxxQuery (PUSERINFO pUserInfo);
ΓòÉΓòÉΓòÉ 6.4.2.3. Upon entry ΓòÉΓòÉΓòÉ
pUserInfo contains the address of the USERINFO structure allocated within
Prominare Designer in which the XxxxQuery function can complete. The
information placed within the structure is done as follows:
pUserInfo->ulMajor = 1UL;
pUserInfo->ulMinor = 0UL;
pUserInfo->cTypes = 1UL;
strcpy(pUserInfo->szAuthor, "Author");
strcpy(pUserInfo->szClassname, "Classname");
strcpy(pUserInfo->szName, "Common Name");
pUserInfo->utDefined[0].cx = 50L;
pUserInfo->utDefined[0].cy = 12L;
pUserInfo->utDefined[0].flStyle = 0UL;
pUserInfo->utDefined[0].idDlg = Dialogue id;
pUserInfo->utDefined[0].ulType = UTYPE_PRIVATE;
pUserInfo->utDefined[0].cCtlData = 20UL;
pUserInfo->utDefined[0].cMasks = 2UL;
pUserInfo->utDefined[0].cMaxText = 5UL;
pUserInfo->utDefined[0].flStyleType = STYLETYPE_BITFLAGS;
pUserInfo->utDefined[0].stMasks[0].flStyleMask = 0x0001UL;
pUserInfo->utDefined[0].stMasks[0].idStyle = String id;
pUserInfo->utDefined[0].stMasks[1].flStyleMask = 0x0002UL;
pUserInfo->utDefined[0].stMasks[1].idStyle = String id;
strcpy(pUserInfo->utDefined[0].szDescription, "Description");
ΓòÉΓòÉΓòÉ 6.4.2.4. Upon exit ΓòÉΓòÉΓòÉ
XxxxQuery must return a value of TRUE, denoting successful completion of the
structure. A returned value of FALSE indicates that the structure was not
completed and the control therefore should not be used.
ΓòÉΓòÉΓòÉ 6.4.3. XxxxStyles ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.4.3.1. Purpose ΓòÉΓòÉΓòÉ
The XxxxStyles function is the PMCX control's style dialogue used through
Prominare Designer.
ΓòÉΓòÉΓòÉ 6.4.3.2. Prototype Definition ΓòÉΓòÉΓòÉ
MRESULT EXPENTRY XxxxStyles(HWND hWnd, ULONG msg,
MPARAM mp1, MPARAM mp2);
ΓòÉΓòÉΓòÉ 6.4.3.3. Upon entry ΓòÉΓòÉΓòÉ
Normal dialogue procedure coding except as noted in Special Considerations
below.
ΓòÉΓòÉΓòÉ 6.4.3.4. Upon exit ΓòÉΓòÉΓòÉ
XxxxStyles should return values consistent with normal dialogue procedures.
ΓòÉΓòÉΓòÉ 6.4.3.5. Special considerations ΓòÉΓòÉΓòÉ
During the processing of the WM_INITDLG message, the control should reference
message parameter 2 (MPARAM mp2) as follows:
PDATATODLG(hWnd);
This causes the address of the USERSTYLE structure allocated within Prominare
Designer to be saved in the dialogue's reserved memory. The dialogue can then
reference the information in the USERSTYLE structure with the following method:
pust = PDATAFROMDLG(hWnd);
Also, the entry fields for the dialogue along with any styles should be
completed during processing of the WM_INITDLG message. For example, with a
control that supported text, the following could be used to fill in the Text
and ID fields:
if ( (pust = (PUSERSTYLE)mp2) != NULL )
{
WinSetDlgItemText(hWnd, ID_TEXT, pust->szText);
pust->pfnSetSymbolID(hWnd, IDBX_SYMBOLVALUE, pust);
}
When the dialogue is dismissed, the function must return either TRUE through
the WinDismissDlg function, to indicate to Prominare Designer changes have been
made to the USERSTYLE structure, or FALSE, to indicate that no changes were
made.
The USERSTYLE structure contains the addresses of the five Prominare Designer
helper routines, defined as follows:
VOID (EXPENTRY *pfnSetSymbolID)(HWND hWnd, ULONG idSymbol, PUSERSTYLE pust);
BOOL (EXPENTRY *pfnGetSymbolID)(HWND hWnd, ULONG idSymbol, PUSERSTYLE pust);
VOID (EXPENTRY *pfnGetFontClr)(HWND hWnd);
BOOL (EXPENTRY *pfnCUACheck)(HWND hWnd, ULONG idEntryField,
LONG iCUACompliance);
BOOL (EXPENTRY *pfnRealloc)(PVOID pv, INT cSize);
In this case, you would use the pfnSetSymbol in conjunction with the ID field.
The function is used to set the symbol and value of the control within the ID
field, as shown here:
if ( (pust = (PUSERSTYLE)mp2) != NULL )
pust->pfnSetSymbolID(hWnd, IDBX_SYMBOLVALUE, pust);
The pfnGetFontClr function allows the user to display the Font & Colours
dialogue when he or she clicks on the Font & Colours... button. The function
allows the user to set the font and colours for the control, as shown here:
case WM_COMMAND :
switch ( SHORT1FROMMP(mp1) )
{
case ID_FONTCLR :
if ( (pust = PDATAFROMDLG(hWnd)) != NULL )
pust->pfnGetFontClr(hWnd);
break;
.
.
.
}
break;
The pfnGetBidi function allows the user to display the Bidirectional Support
dialogue when he or she clicks on the Bidi... button. The function allows the
user to set the bi-directional options as shown here:
case WM_COMMAND :
switch ( SHORT1FROMMP(mp1) )
{
case ID_BIDI :
if ( (pust = PDATAFROMDLG(hWnd)) != NULL )
pust->pfnGetBidi(hWnd);
break;
.
.
.
}
break;
Use the pfnGetSymbol function when the user tells the dialogue to accept the
changes made. The function checks the values in the ID field for validity and
displays any required error message boxes. If the function returns a value of
FALSE, the dialogue procedure should not retrieve any changes made but should
simply break the current processing, allowing the user to correct values within
the dialogue as he or she sees fit. A return value of TRUE indicates that the
dialogue should retrieve all changes made and save them in the USERSTYLE
structure before dismissing the dialogue. The function also retrieves the ID
symbol and value and places them in the USERSTYLE structure, as shown here:
case WM_COMMAND :
switch ( SHORT1FROMMP(mp1) )
{
case DID_OK :
if ( (pust = PDATAFROMDLG(hWnd)) != NULL )
if ( !pust->pfnGetSymbolID(hWnd, IDBX_SYMBOLVALUE, pust) )
{
.
. /* Continue processing */
.
WinDismissDlg(hWnd, TRUE);
}
break;
.
.
.
}
break;
Use the pfnCUACheck function when the user tells the dialogue to accept the
changes made. Depending on the option selected, the function checks the values
in the Text entry field for CUA compliance and displays any required error
message boxes. If the function returns a value of FALSE, the dialogue procedure
should not retrieve any changes made but should simply break the current
processing, allowing the user to correct values in the dialogue as he or she
sees fit. A return value of TRUE indicates that the dialogue should retrieve
all changes made, saving them in the USERSTYLE structure before dismissing the
, as shown here:
case WM_COMMAND :
switch ( SHORT1FROMMP(mp1) )
{
case DID_OK :
if ( (pust = PDATAFROMDLG(hWnd)) != NULL )
if ( pust->pfnCUACheck(hWnd, ID_TEXT, CUACHK_CAPS) )
break;
else
{
. /* Continue processing */
.
.
WinDismissDlg(hWnd, TRUE);
}
break;
.
.
}
break;
Finally, use the pfnRealloc function when the control allows variable-length
control data and the user has indicated a wish to save the information for the
control. You must use the function to reallocate the data buffer for the
control data, since Prominare Designer controls memory allocation for the
structures. The function utilizes the memory management routines of Prominare
Designer; care must therefore be exercised so the function is not misused.
Otherwise, Prominare Designer may develop a fatal unrecoverable error
condition. The function is exactly like the C library realloc( ) function in
usage. It is shown here:
case WM_COMMAND :
switch ( SHORT1FROMMP(mp1) )
{
case DID_OK :
if ( (pust = PDATAFROMDLG(hWnd)) != NULL )
{
if ( !(pust->pbCtlData =
(PBYTE)pust->pfnRealloc(pust->pbCtlData,
sizeof(COMBOBOXCDATA) - 1L)) )
{
WinMessageBox(HWND_DESKTOP, hWnd,
"Memory error on reallocating control data!",
"Super Combo Box Control", 0,
MB_OK | MB_ICONEXCLAMATION);
return(0L);
}
pust->cbCtlData = sizeof(COMBOBOXCDATA) - 1 + n;
pcbd = (PCOMBOBOXCDATA)pust->pbCtlData;
pcbd->cb = sizeof(COMBOBOXCDATA) - 1 + n;
pcbd->cItems = cItems;
memcpy(pcbd->abList, pchData, n);
}
break;
.
.
}
break;
ΓòÉΓòÉΓòÉ 6.4.4. XxxxSetPage ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.4.4.1. Purpose ΓòÉΓòÉΓòÉ
The XxxxSetPage function is used to take a dialogue window handle that is to be
used as the page contents. The PMCX control can then take the handle and use it
for the page contents.
ΓòÉΓòÉΓòÉ 6.4.4.2. Prototype Definition ΓòÉΓòÉΓòÉ
BOOL EXPENTRY XxxxSetPage(HWND hwndCntrl, HWND hwndPage);
ΓòÉΓòÉΓòÉ 6.4.4.3. Upon entry ΓòÉΓòÉΓòÉ
hwndCtrl is the handle of the page control. hwndPage is the handle of the
dialogue window that is to be placed within the control.
ΓòÉΓòÉΓòÉ 6.4.4.4. Upon exit ΓòÉΓòÉΓòÉ
XxxxSetPage must return a value of TRUE, denoting successful registration of
the placement of the dialogue window within the control. A returned value of
FALSE indicates that the control could not be place the dialogue window within
the control.
ΓòÉΓòÉΓòÉ 6.5. DLL construction ΓòÉΓòÉΓòÉ
To correctly construct a custom control according to the PMCX, use the
following outline:
File Contents
PMCX.H PMCX constants, macros, and structure
definitions. This file is provided with the
Prominare Designer package and can be found in
the PD\Include sub- directory.
Xxxx.Lnk Contains the link response file needed by the
linker.
Xxxx.C Contains source code for the custom code using
PMCX.
Xxxx.Def Contains the definition statements required by
the linker to construct the final dynamic link
library.
Xxxx.Mak Contains the MAKE file necessary to create the
object and resource files.
Xxxx.Rc Contains the resource script file with the
control's style dialogue template and styles
string table.
ΓòÉΓòÉΓòÉ 6.6. PMCX samples ΓòÉΓòÉΓòÉ
Examples using PMCX (including full source code) are contained in the
Source\Designer sub-directories, if you allowed the source code to be installed
on your system during installation of Prominare Designer. Following are some of
the PMCX controls implemented.
Directory Purpose
3D Example of a PMCX control 3D text field.
ChkMark Example of a PMCX control check mark control.
Combined Example of a set of 3D controls combined into
one DLL with separate PMCX interface DLLs.
ComboBox Example of variable control data usage PMCX
control using a combo box.
ComboMin Example of variable control data usage PMCX
control using a combo box and allowing for the
combo box to specify the depth of the drop down
when used with tight areas.
Control Example of simple PMCX control.
DateFld Example of a PMCX control for a date entry
field.
Frame Example of a PMCX control for a shadowed frame.
This PMCX example shows how to utilize Font &
Colours within a custom control.
ImageBtn Example of a PMCX control push button containing
a graphic bitmap image.
Line3D Example of a PMCX control 3D line.
ListBox Example of variable control data usage PMCX
control using a list box. This includes the code
from the OS/2 Developer article on list box
design.
Notebook Example of notebook usage within a design. It
shows the manner in which a notebook must be
programmed. A second dialogue using the
following custom control shows an easier method
of handling notebooks.
NotePage Example of variable control data usage PMCX
controls using a notebook.
NoteTab Example of a PMCX page control which is similar
to an OS/2 PM notebook control but with a
different graphical appearance and a simpler
programming interface.
Pattern Example of a PMCX control pattern field.
SpinBtn Example of variable control data usage PMCX
control using a spin button.
TestBed Facility to test PMCX controls. The utility
provides the means to debug and test the control
dialogues.
TimeFld Example of a PMCX control for a time entry
field.
ΓòÉΓòÉΓòÉ 7. section five - Advanced Support ΓòÉΓòÉΓòÉ
This section explains how to use the advanced support features provided in
Prominare Designer. In each of the Prominare Designer Help menu, you will find
a sub-menu item called Support containing two menu items, Submit problem... and
Submit suggestion...
When you encounter problems, use the Submit problem... menu item to complete a
series of notebook pages describing your environment and problem. To make a
suggestion about enhancing some aspect of Prominare Designer (suggestions are
always welcome), use the Submit suggestion... menu item to complete a series of
pages describing your idea.
The main purpose of the two features is to provide you with a simple yet
effective way to communicate with Prominare support. It is also helpful,
especially when problems occur, to have necessary information--such as machine
configuration files, exception reports, and memory conditions--provided
automatically.
The following section describes each of the submission areas in detail. When
you experience problems with Prominare Designer, select Support Submit
problem... in the Help menu to display the Support Entry Form. This dialogue
contains four tabs: Identification, Product, System, and Problem.
ΓòÉΓòÉΓòÉ 7.1. Submitting problems ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 7.1.1. Identification ΓòÉΓòÉΓòÉ
The first tab is used to identify yourself, determine the support location to
which the report should be submitted, and retrieve previously submitted reports
for updating or reference. Complete the following areas:
Area Contents
Contact Name of contact person. Your name is automatically entered; it
can be changed if someone else is handling the specific
problem.
Address Your present address.
Voice The telephone number where you can be reached.
Fax Your facsimile telephone number, through which we can send
additional printed information or ask additional questions.
Modem Your modem telephone number.
CompuServe Your CompuServe ID.
Internet Your Internet e-mail ID and address.
The final form, as printed on your printer, will contain the facsimile number
and email addresses to which you should send the form.
You can retrieve previously submitted reports by selecting them from the
Reports drop-down list. The values for that particular report will be
retrieved from your hard disk and used to complete the various entry areas of
the forms. You can then edit, add, or delete relevant areas and resubmit them
or use them as reference.
To create a new form, simply click on the New push button. This increments the
report number so that if you select the Save option the report will be saved
to disk. To retrieve a report, select it from the Reports drop-down.
You can also save the report information such that it can be emailed instead
of faxed. You only need to select the Save as text for email check box and
enter the filename to save the information within in entry field labeled File.
You can alternately save the text to the clipboard by clicking on the Save to
clipboard check box. This will allow you to paste the information into an
email note.
ΓòÉΓòÉΓòÉ 7.1.2. Product ΓòÉΓòÉΓòÉ
The second tab, Product, is used to select the Prominare product, problem type,
and font to print with. The following options are available:
Option Application
Prominare Designer Prominare Designer.
Other Another area within Prominare Designer.
The application from which you selected the support feature is automatically
selected. You can change the selection if this is not the application for
which you wish to submit the problem. When you select the Other option, please
make sure to enter the name of the application or area in the entry field
beside the Other radio button. You can enter up to 63 characters in this
field. You can select one of the following problem types:
Option Application
Fatal error The problem creates a fatal error condition, generally an
exception violation. Commonly, fatal errors occur when the
operating system exhibits abnormal behavior, eventually causing
things to grind to a halt. The swapper file could grow
abnormally large.
Recurrent The problem recurs consistently; the problem can be duplicated
at will using the description provided in the report.
Intermittent The problem recurs inconsistently but may be duplicated using
the description provided in the report.
Unknown The problem is difficult to reproduce but can be described.
This includes fatal errors that cannot be reproduced.
Select fonts to print or fax with via the two drop-down lists near the top of
the tab, Fonts and Size. Immediately above these drop-downs is the printer
currently selected as the output device. Use the Printer setup... button at
the bottom of the dialogue to select a different output device, which may be
another printer or a fax. You can also set up specific printer characteristics
such as paper location, paper size, etc.
ΓòÉΓòÉΓòÉ 7.1.3. System ΓòÉΓòÉΓòÉ
The third tab, System, is used to describe your system in detail.
Include the make, model, and brand name of your computer, monitor, and video
card, your hard disk size, etc. in this description.
ΓòÉΓòÉΓòÉ 7.1.4. Problem ΓòÉΓòÉΓòÉ
The last tab, Problem, is used to describe the problem you are experiencing.
The multiple-line entry field can hold up to 32,768 bytes of information; you
may wish to include source code segments that illustrate the problem.
When you have completed all areas of the report, you can print it out.
ΓòÉΓòÉΓòÉ 7.2. Submitting suggestions ΓòÉΓòÉΓòÉ
When you would like to see a new feature or a simplified task in Prominare
Designer, select Support Submit suggestion... in the Help menu , which displays
the Suggestion Entry Form. This dialogue contains three tabs, Identification,
Product and Problem.
ΓòÉΓòÉΓòÉ 7.2.1. Identification ΓòÉΓòÉΓòÉ
The first tab is used to identify yourself, determine the location where
suggestions should be submitted, and retrieve previous suggestions submitted
for updating or reference. The areas you should complete are:
Area Contents
Contact Name of contact person. Your name is automatically entered; it
can be changed if someone else is handling the specific
problem.
Address Your present address.
Voice The telephone number where you can be reached.
Fax Your facsimile telephone number, through which we can send
additional printed information or ask additional questions.
Modem Your modem telephone number.
CompuServe Your CompuServe ID.
Internet Your Internet e-mail ID and address.
The final form, as printed on your printer, will contain the facsimile number
and email addresses to which you should send the form. You can retrieve
previously submitted reports by selecting them from the Reports drop-down
list.
The values for that particular report will be retrieved from your hard disk
and used to complete the various entry areas of the forms. You can then edit,
add, or delete relevant areas and resubmit them or use them as reference.
To create a new form, simply click on the New push button. This increments the
report number so that if you select the Save option the report will be saved
to disk. To retrieve a report, select it from the Reports drop-down.
You can also save the report information such that it can be emailed instead
of faxed. You only need to select the Save as text for email check box and
enter the filename to save the information within in entry field labeled File.
You can alternately save the text to the clipboard by clicking on the Save to
clipboard check box. This will allow you to paste the information into an
email note.
ΓòÉΓòÉΓòÉ 7.2.2. Product ΓòÉΓòÉΓòÉ
The second tab, Product, is used to select the Prominare product and font to
print with. The following options are available:
Option Application
Prominare Designer Prominare Designer.
Other Another area within Prominare Designer.
The application from which you selected the support feature is automatically
selected. You can change the selection if this is not the application for
which you wish to submit the suggestion. The options for the problem types are
not selectable from this tab.
Select fonts to print or fax with via the two drop-down lists near the top of
the tab, Fonts and Size. Immediately above these drop-downs is the printer
currently selected as the output device. Use the Printer setup... button at
the bottom of the dialogue to select a different output device, which may be
another printer or a fax. You can also set up specific printer characteristics
such as paper location, paper size, etc.
ΓòÉΓòÉΓòÉ 7.2.3. Suggestion ΓòÉΓòÉΓòÉ
The last tab, Suggestion, is used to describe the suggestion you wish to make.
The multiple line entry field can hold up to 32,768 bytes of information; you
may wish to include source code segments that illustrate the suggestion.
When you have completed all areas of the suggestion, you can print it out.
ΓòÉΓòÉΓòÉ 7.3. Finding fixes ΓòÉΓòÉΓòÉ
Through the Prominare WWW site you can find a list of known problems and fixes.
You can access this site at
http://www.prominare.com
Once you are presented with the home page, you will find the links to the
Prominare Designer Known Problems and Fixes home page.
Although the Web site provides web links to the fix files contained in our FTP
archive, you can also FTP to the fixes. They are found in our FTP site
ftp://ftp.prominare.com/pub/prominare/fixes/release5c
ΓòÉΓòÉΓòÉ 8. appendix a - Program Accelerator Keys ΓòÉΓòÉΓòÉ
Prominare Designer provides accelerator keys that allow you to select functions
quickly through the keyboard instead of using the action bar menus. The
following tables show the defined accelerator keys for each of the Prominare
Designer applications.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéAccelerator ΓöéMenu Equivalent ΓöéUsage Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+A ΓöéFile Save as ΓöéSave as Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+C ΓöéEdit Styles ΓöéEdit styles Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+D Γöé ΓöéDuplicate Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+F Γöé ΓöéSet initial focus Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+G ΓöéOptions Arrange controls ΓöéArrange controls Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+I Γöé ΓöéAlign controls Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+L Γöé ΓöéDisplay tools Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+M ΓöéOptions Arrange menus ΓöéArrange menus Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+N ΓöéFile New ΓöéNew design file Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+P Γöé ΓöéSave window position Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+O ΓöéFile Open ΓöéOpen design file Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+R Γöé ΓöéReplace controls Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+S ΓöéFile Save ΓöéSave design file Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+T Γöé ΓöéTest window/dialogue Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+V Γöé ΓöéVieww windows/dialogues list Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+W ΓöéEdit New ΓöéNew window or dialogue Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéF1 ΓöéHelp General help ΓöéHelp Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéF4 ΓöéSearch Next ΓöéSearch for next occurrence of Γöé
Γöé Γöé Γöésearch for item Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéF8 Γöé ΓöéDisplay Resource Distribution Γöé
Γöé Γöé Γöédialogue Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDel ΓöéEdit Delete ΓöéControl Delete selected Γöé
Γöé Γöé Γöécontrols Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCtrl+Ins ΓöéEdit Copy ΓöéCopy window/dialogue/controls Γöé
Γöé Γöé Γöéto clipboard Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéShift+Del ΓöéEdit Cut ΓöéCut window/dialogue/controls Γöé
Γöé Γöé Γöéto clipboard Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéShift+Ins ΓöéEdit Paste ΓöéPaste window/dialogue/controlsΓöé
Γöé Γöé Γöéfrom clipboard into file Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAlt+Ins ΓöéEdit Paste File ΓöéPaste from file Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAlt+Ctrl+M ΓöéFile Merge ΓöéMerge file Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 9. appendix b - Resource DLLs ΓòÉΓòÉΓòÉ
You can use Prominare Designer to construct resource-only dynamic link
libraries. Unlike normal dynamic link libraries, a resource-only DLL contains
no executable code or data. Use them when you want to either reduce the size of
your executable or share resources between applications. Use Prominare Designer
to construct the necessary resources and produce a resource script file that
can be compiled by the Resource Compiler. A small assembly language program is
needed to allow to bind the compile resources to the final DLL. The module
Resource.Asm, below, or Resource.Obj can be used for this purpose.
; ------- Resource.Asm ---------------------------------- ;
; ;
; Assembly language module for resource-only ;
; dynamic link libraries. ;
; ;
; Created: 1992-01-01 ;
; Revised: ;
; ;
; ------- Copyright Γòò 1989-1997 Prominare Inc. -------- ;
CODE SEGMENT WORD
DB "Copyright Γòò 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Prominare Inc. "
DB "All Rights Reserved."
CODE ENDS
END
Define a dummy code segment for the linker; otherwise, the resultant DLL will
be marked unloadable by the linker. The example above shows the definition of
the code segment and a simple string of bytes being defined. In the example, a
copyright notice is used. You can, if you want, define a single byte within the
code segment; this will placate the linker. The necessary definitions file used
to create the DLL is shown below.
LIBRARY String
DESCRIPTION 'Prominare Designer Resource - Strings'
STUB NULSTUB.EXE'
Since you use the same code segment for the resource-only DLLs, create the link
response file similar to that shown below. Use the Resource.Obj file as the
object file but then use the name of the final resource-only DLL for the
executable, map, and definition file names.
Resource
String.Dll
String.Map
String.Def
Use the same methods you would normally use to create an application, except
you will not have a parent window complete with title bar or menus. Generally,
include those within the resources for the main application. You can place
string tables, bitmaps, some icons and dialogue templates within resource-only
DLLs.
Place the main application's icon within the application's own resources, since
OS/2 Presentation Manager is not set up for loading the dialogue from a
resource only DLL and also loading the icon that may be displayed within the
dialogue from the same DLL. The same applies to bitmaps.
When you invoke the dialogue, replace the parameter, (HMODULE)NULL, with the
module handle returned to you. Use the DosLoadModule call when you load the DLL
for use by your application, as shown below. The same is true for other
resources.
CHAR szString[128]; /* String Resource Buffer */
HMODULE hmod; /* Resource DLL Module Handle */
DosLoadModule(szFailName, sizeof(szFailName), "String", &hmod);
/* Normal usage of WinLoadString where string resource is */
/* contained within the .EXE would be: */
/* */
/* WinLoadString(hAB, (HMODULE)NULL, IDS_STRING, */
/* sizeof(szString), szString); */
WinLoadString(hAB, hmod, IDS_STRING, sizeof(szString), szString);
DosFreeModule(hmod);
Consult the OS/2 Toolkit manuals for information regarding loading, usage and
releasing of dynamic link libraries to fully understand how you can use this
facility in your OS/2 Presentation Manager applications.
ΓòÉΓòÉΓòÉ 10. appendix c - Window Controls ΓòÉΓòÉΓòÉ
Prominare Designer allows you to place controls in windows and child windows.
So you can fully utilize this facility, code is created in the Support.C or
Support.Cpp module when source code is generated for a design.
Two of the functions provided within the module are called by your window
procedures. The first function, PDSGetTemplate, is used in the WM_CREATE
message handling to load the control template from the applications resources
and place the controls correctly within the window.
The second function, PDSKeyProc, is used in conjunction with the WM_CHAR
message to provide a keyboard interface for the controls.
These functions are automatically placed within your window procedure when you
place any controls in the window you are designing. The example, MultiWin,
shows how this is done. The following shows the header declaration of the
functions contained in the DLL. These will be provided within the window source
code module to allow proper compiling and linking of the final application.
VOID PDSGetTemplate(HWND, LONG);
MRESULT PDSKeyProc(HWND, ULONG, MPARAM, MPARAM);
Even if you do not place controls in a window, the functions are created within
the Support.C or Support.Cpp module to allow you to add controls to the window
at a later point. You should not delete these functions unless you are sure
that you are not going to place controls within a window. In this case, delete
the two functions from the Support.C or Support.Cpp module and delete any
references to the functions from your window procedures.
PDSGetTemplate essentially reads in the window template from the resources of
your executable and decodes the information (by converting the dialogue units
recorded for the size and position of a control to window units) before
creating the control.
PDSKeyProc provides a keyboard interface for the controls when the user presses
a key. In your dialogues, this is handled by the WinDefDlgProc function.
WinDefWindowProc does not provide any similar functionality; it assumes that
the window will handle all keyboard requests. The WM_CHAR message is used to
decode the keystroke and shift the focus from one control to another if the
keyboard is used appropriately.
When you are developing your application using the IBM User Interface Class
Libraries or the IBM Open Class Libraries, similar functions are provided for
control support in non-canvas class windows. The following shows the prototype
definitions for these adaptations.
VOID PDSGetTemplate(HWND, LONG);
MRESULT PDSKeyProc(HWND, ULONG, MPARAM, MPARAM);
The code defined for both functions can be edited through the Support.C tab in
the Edit Default Source dialogue accessed from the Source... menu item of the
Source menu for the C and C++ source coding rules definitions. The functions
can be defined in a similar manner for the IBM User Interface Class Libraries
or the IBM Open Class Libraries rules.
ΓòÉΓòÉΓòÉ 11. appendix d - Code Generation Overview ΓòÉΓòÉΓòÉ
Prominare Designer provides the means for you to create the appropriate source
code for your window interface design. You can tell Prominare Designer to
generate the source code when you save your design files to disk. This appendix
outlines significant issues relating to source code generation as performed
through Prominare Designer.
ΓòÉΓòÉΓòÉ 11.1. Files generated ΓòÉΓòÉΓòÉ
When you have Prominare Designer generate the source code for your design, a
set of files is automatically created. Special attention should be taken with
some of the files, in that they should not be altered in a manner that will
prevent the code generation engines from recognizing the statements and adding
what is thought to be missing source code statements. Following are the minimum
files created:
File Contents
basename.C Contains the main() function source code for application
environment setup, application window creation, and
program termination.
basename.H Contains the constant definitions used within the
applications as defined through Prominare Designer for
controls, menus, and windows created by Prominare
Designer.
basename.Rc Contains resource script information for the application
as defined through Prominare Designer for each window or
dialogue. Created and updated by Prominare Designer as you
make changes to the design of the application.
basename.Res Contains resource script information for the application
as defined through Prominare Designer for each window or
dialogue. Created and updated by Prominare Designer as you
make changes to the design of the application.
AppDefs.C Contains application variables required by the
application, such as frame and client window handles,
mouse queue handle, action bar menu handle, etc.
Automatically created for each design by Prominare
Designer.
AppDefs.H Contains external declarations of the variables defined
within AppDefs.C needed by the different source modules
when the source code is compiled. Also contains the
function prototypes for the functions created through
Prominare Designer. The function prototypes ensure proper
declaration and usage of functions within the various
source modules; the header file is included in most of the
source code modules created through Prominare Designer.
The header file is automatically created by Prominare
Designer.
Support.C Contains program initialization source code and a function
call, InitApp, which is called by the main function. Also
contains the PDSGetTemplate and PDSKeyProc functions,
which are used to support controls within windows. The
function used to create and size a window,
CreateStdWindow, is also contained within this module.
This module is automatically created by Prominare Designer
for each design.
ΓòÉΓòÉΓòÉ 11.2. main() ΓòÉΓòÉΓòÉ
Additional files are created under filenames that you enter through the
Window/Dialogues Styles dialogue when you create or edit a window or dialogue.
The main() function is placed in a source module specified through the New
Design dialogue when you start a new design.
Prominare Designer always generates code for this module based on the windows
you have created in your design. It also creates the code necessary for
registration of the application's help with the OS/2 Help Manager.
For this particular module, you should not change the overall statements as
generated; you can, however, add your own as required within the statements.
Statements that are particularly sensitive to their format and location within
the module are shown in bold text:
#define INCL_DOS /* Include OS/2 PM DOS Kernal */
#define INCL_WIN /* Include OS/2 PM Windows Interface */
#include <os2.h>
#include "appdefs.h"
#include "example.h"
PSZ pszExampleClassName = "Example";
INT main(INT argc, CHAR *argv[ ])
{
QMSG qmsg; /* PM Message Queue Holder */
/* Initialize the program for PM and create the */
/* message queue */
hAB = WinInitialize(0);
hmqExample = WinCreateMsgQueue(hAB, 0);
/* Register the window class */
if ( !WinRegisterClass(hAB, pszExampleClassName, ExampleWndProc,
CS_SYNCPAINT | CS_SIZEREDRAW, 0) )
return(0);
/* Create the main program window */
if ( !(hwndExampleFrame = CreateStdWindow(HWND_DESKTOP, WS_VISIBLE,
FCF_NOBYTEALIGN | FCF_STANDARD,
pszExampleClassName,
"Example Window", 0L,
(HMODULE)NULL, ID_WINDOW,
&hwndExample, 10, 10, 100, 100)) )
return(0);
/* Create Help instance and associate it with */
/* the programs frame window */
if ( hwndHelp = WinCreateHelpInstance(hAB, &helpinit) )
WinAssociateHelpInstance(hwndHelp, hwndExampleFrame);
InitProg( );
while ( WinGetMsg(hAB, &qmsg, (HWND)NULL, 0, 0) )
WinDispatchMsg(hAB, &qmsg);
/* Destroy the Help instance associated with the */
/* the programs frame window */
if ( hwndHelp )
{
WinAssociateHelpInstance((HWND)NULL, hwndExampleFrame);
WinDestroyHelpInstance(hwndHelp);
}
/* Have received a WM_QUIT, start the program */
/* shutdown by destroying the program windows */
/* and destroying the message queue */
WinDestroyWindow(hwndExampleFrame);
WinDestroyMsgQueue(hmqExample);
/* Notify PM that main program thread not needed */
/* any longer */
WinTerminate(hAB);
/* Exit back to OS/2 cleanly */
return(0);
}
ΓòÉΓòÉΓòÉ 11.3. Support.C / Support.Cpp ΓòÉΓòÉΓòÉ
The Support.C or Support.Cpp source module contains two functions called from
main(), namely, InitApp( ) and CreateStdWindow( ), along with two functions
that may be called from your window procedures, PDSGetTemplate( ) and
PDSKeyProc( ). These are support functions used to initialize the application
and register it with the Task Manager as defined through the application. They
also set the window positions of any child windows that have been defined
through a design.
One of the main tenants of windowing systems is device independence, and
dialogue units are a device independent unit; the CreateStdWindow( ) function
is used to convert the dialogue units for the size and position of the window
into actual window coordinates at run time, after the window has been created.
ΓòÉΓòÉΓòÉ 11.4. Window/Dialogue functions ΓòÉΓòÉΓòÉ
You can use either old or new style methods of declaring window functions
within window or dialogue procedures created through Prominare Designer. The
following shows both methods, plus the components of each that must be present
for Prominare Designer to locate the start of the window or dialogue procedure
within the source code modules that you have edited:
MRESULT EXPENTRY FrameWndProc(HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2)
or
MRESULT EXPENTRY FrameWndProc(hWnd, msg, mp1, mp2)
HWND hWnd;
ULONG msg;
MPARAM mp1;
MPARAM mp2;
Prominare Designer lets you control how it deletes information from your source
and resource script files. When you allow deletion, understand that Prominare
Designer does its best to delete only the appropriate source code. In some
cases, Prominare Designer may delete more than you would like; this could
influence how you comment your source code. For example, if the following
construct was in your original source module:
/* Process control selections */
case WM_CONTROL :
switch ( SHORT2FROMMP(mp1) )
{
/* Button clicked notification */
case BN_DBLCLICKED :
switch ( SHORT1FROMMP(mp1) )
{
/* Process single click on check box example */
case CB_EXAMPLE :
break;
/* Process single click on radio button example */
case RB_EXAMPLE :
break;
}
break;
}
break;
Assume that the BN_DBLCLICKED notification message is removed for the
CB_EXAMPLE check box control. The same example would appear as:
/* Process control selections */
case WM_CONTROL :
switch ( SHORT2FROMMP(mp1) )
{
/* Button clicked notification */
case BN_DBLCLICKED :
switch ( SHORT1FROMMP(mp1) )
{
/* Process single click on check box example */
case RB_EXAMPLE :
break;
}
break;
}
break;
Prominare Designer was able to locate the proper source code for the deleted
check box notification, but it also deleted the comment line before the
RB_EXAMPLE case statement and left the comment that had appeared before the
deleted code.
You may wish to place you comments within the case break construct to ensure
that when code is removed by Prominare Designer, it takes the correct comments
with it. Prominare Designer performs analysis of the code when deleting it; it
deletes all lines from the start of the construct up to the first statement
after the construct.
Similarly, when Prominare Designer deletes the source code for window or
dialogue procedures, comments that appear before the function declaration are
not deleted. The rules defined for code generation include a set of macro
symbols used by the code generation engines to selectively place relevant
source code in those places. Some of the macros can be used in various
locations, whereas others are defined for use in specific source areas. The
following table defines the macros that can be used in any location:
Macro Usage
<-company-> Company name.
<-date-> Current date.
<-file-> Current filename.
<-name-> User name.
The following macros are defined for use within the source definition
locations through the Source menu item in the Source menu. The areas to which
the macros are restricted are defined with each macro for OS/2 C/C++:
Macro Usage
<classes> Class name definitions - main()
<create> Window creation - main()
<helpcreate> Help create statements - main()
<helpdestroy> Help destroy statements - main()
<hmq> Message queue handle - main()
<hwndClient> Client window handle - main()
< hwndFrame> Frame window handle - main()
<INCL> OS/2 defines - Module start
<include> C includes - Module start
<localvars> Local function variables - Window declaration, child
window declaration, dialogue declaration
<mmpm> MMPM/2 control registration - main()
<pfnDlgProc> Dialogue function name - Dialogue declaration
<pfnWndProc> Window function name - Window declaration, child window
declaration
<prototypes> Global functions - AppDefs.H
<register> Class registration - main()
<variables> Global variables - AppDefs.C, AppDefs.H
<windowlist> Window list text - main()
<XxxxRegister> PMCX control registration - main()
The following macros are defined for use within the message areas defined
through the Commands menu item in the Source menu for OS/2 C/C++:
Macro Usage
<classname> Classname
<cx> Window width
<cy> Window height
<DID_CANCEL> DID_CANCEL ID
<DID_OK> DID_OK ID
<FCF> FCF_* flags
<hwndClient> Client window handle
<hwndFrame> Frame window handle
<hwndParent> Parent window handle
<id> ID
<idButton> Push button ID
<idDlg> Dialogue ID
<idMenu> Menu item ID
<pfnDlgProc> Dialogue procedure function name
<style> Style flags
<titlebar> Title bar text
<x> Window position
<y> Window height
The following macros are defined for use within the source definition
locations through the Source menu item item in the Source menu. The areas to
which the macros are restricted are defined with each macro for the IBM UICL
or IBM Open Class:
Macro Usage
<classname> Classname definition - Window declaration, child window
declaration, dialogue declaration
<idDlg> Dialogue ID - Dialogue declaration
<INCL> OS/2 defines - Module start
<include> C includes - Module start, include header start, main()
<localvars> Local function variables - main()
<pfnDlgProc> Dialogue function name - Dialogue declaration
<pfnWndProc> Window function name - Window declaration, child window
declaration
<sentinal> Header include sentinal - Class header
<statements> PMCX control registration - Window declaration, child
window declaration, dialogue declaration, class header
The following macros are defined for usage within the message areas defined
through the Commands menu item in the Source menu for the IBM UICL or IBM Open
Class:
Macro Usage
<classname> Classname
<command> Handler command
<derived> Derived declarations
<private> Private declarations
<virtual> Virtual declarations
ΓòÉΓòÉΓòÉ 12. appendix e - Mouse Pointers ΓòÉΓòÉΓòÉ
The following is a compendium of the special mouse pointers used in Prominare
Designer. There are times that a pointer is used to signify acceptable
conditions (i.e. when an operation is acceptable) or to convey the information
that a specific type of mode is active.
Pointer Usage
Used in the Arrange Controls and Arrange Menus dialogues to indicate
that the selected item or items can be inserted between the items
above and below the pointer.
Used when creating a control. The crosshair indicates the location
where the lower left corner of the control will be placed.
Used when setting the initial focus for a dialogue. When the mouse
pointer is over a control showing this shape, it is permissible to
set the focus to this item.
Used when a control is movable.
Used when moving a control.
Used to indicate that duplicate control mode is active. When
selecting a control while the pointer is this shape, the control
selected will be duplicated.
Used to indicate the parent of the control when creating a control
within a context that contains a child window within a parent
window. Since the control needs to be owned by one of the windows
and since it is possible that the control is actually overlapped by
a child window, it is necessary to select the window that is to be
the parent.
ΓòÉΓòÉΓòÉ 13. appendix f - Dialogue Display ΓòÉΓòÉΓòÉ
A common problem with GUI applications is that when you design your dialogue on
one system and then run it on a different system, the display of the dialogue
doesn't look the same. This is due to the different display resolutions.
Even though dialogues are defined in dialogue units instead of pixels, the
basis for the dialogue unit is the system font. Depending on the display type
and resolution, OS/2 selects a system font, System Proportional, that is either
12 pts or 10 pts. It is this selection that causes some of the problems.
Further complicating this is when a system has changed the default system font
from System Proportional to something else, say Helv.
Prominare Designer provides two mechanisms to allow you to minimize this
problem. The first is the usage of the Dialogue Unit Definition dialogue from
the Configure .DFM registration... menu. This dialogue allows you to define
dialogue font metric files for systems that have been queried using the DFM.EXE
utility. The font metrics for the raster fonts are queried and recorded such
that you can target the system through the Show control limits tool bar button.
When you double click the right mouse button on the tool bar button, you will
be presented with the Dialogue Unit Limits Selection dialogue which allows you
to select the target system display type. Then, by selecting the tool bar
button, the display limits for each control with text will be displayed either
in a red border or green border. When the border colour is red, the control
needs to be widened since the text will be clipped on the target device. If the
border colour is green, the width of the control is sufficient to display the
text on the target device.
By using this mechanism, you can insure that the dialogues that you are
designing on a high- resolution system correctly display on a VGA system. Also
using the Show VGA template tool bar button helps you fit the dialogue to a VGA
display.
To help you display your dialogues correctly on systems which have had there
default font changed from System Proportional to something else, you can use
the replacement APIs found within the DlgEx.Dll. The WinLoadDlg, WinDlgBox,
DosGetResource and DosFreeResource APIs have been replaced with versions that
patch the dialogue templates such that the dialogues are displayed in the
correct proportions. An additional API provided in the DLL is
WinMapDialogPointsEx allows you to determine the dialogue/window points using
the patching formula.
To allow this patching to be effective, Prominare Designer will add a
presentation parameter to the dialogue template. This presentation parameter
uses the index value of PP_USER to record the system font name and size used to
design the dialogue. This is then used by the patching routines found within
DlgEx.Dll to size the dialogue based on that font and not the system font that
may be present.
This also helps in correctly sizing the dialogue on systems such as VGA where
the original dialogue was designed on a high-resolution system even though
System Proportional fonts are on both. The difference between the two systems
may be the size of the font.
If you want to utilize this facility you only need to include the DlgEx.Lib
during your linking. You do not need to change your source code unless you want
to use the WinMapDialogPointsEx API.