Microworks ObjectMate 2.6
Windows Interface Development Kit.
Copyright  1992-1994 Microworks
Sydney, Australia.
CompuServe 100026,1134
Release date: 6-9-94.

                   Welcome to ObjectMate 2.6
                   --------------------------

This README file contains important information about 
Microworks ObjectMate 2.6. You should read this entire file.

-----------------
TABLE OF CONTENTS
-----------------

1.  About ObjectMate.
2.  What's Changed!
3.  Installation.
4.  Changes to your source code.
5.  Using ObjectMate with Borland C++ 4.02.
6.  Documentation.
7.  Sample Applications.
8.  ObjectMate is Shareware.
9.  Acknowledgments.



--------------------
1. ABOUT OBJECTMATE.
--------------------

If your unfamiliar with ObjectMate, ObjectMate is a complete 
interface development Kit for the Windows programmer that's 
compatible with ObjectWindows and Resource Workshop. 

The ObjectMate Interface Library, SFX200.DLL, is ObjectMate's 
custom control library. It's noticeably different from any 
other custom control library because it's not a BWCC.DLL or 
Ctl3D.DLL clone. Instead, it uses its own unique 3-dimensional 
style to implement an impressive range of objects including 
bitmap buttons, icon buttons, text buttons, static controls, 
shade controls, check boxes, radio buttons, edit controls, list 
boxes, lists edit boxes, combo boxes, percent gauges, toolbars, 
status bars, dialog boxes, common dialog boxes, windows, edit 
and file windows, MDI windows, frame windows, message boxes, 
input boxes and 3D menus.

One of ObjectMate's best features is its functional enhancement 
over existing custom control libraries. For example, three new 
bitmap buttons GO, STOP and BROWSE have been added to the eight 
standard Borland-style bitmap buttons and the buttons have been 
enlarged so there is no glyph cram. Static controls can display 
normal text, 3-dimensional text or splash bitmaps. Shade 
controls can be used as group boxes, vertical and horizontal 
dividers or colored panels. Check boxes and radio buttons can 
either be raised or recessed and come in a choice of check 
color. The toolbar object can display popup toolbars, child 
toolbars, button panels and status bars. There are 4 custom 
dialog and window styles with 21 possible variations. The 
message box function includes 4 new button combinations: MB_GO, 
MB_GOSTOP, MB_OKCANCELHELP and MB_YESNOHELP; and there are 
seven message box styles. The input box function works just 
like the message box function but instead displays a dialog box 
that prompts the user for a single line of input text. 

The SFX Class Library encapsulates all the objects in SFX200.DLL 
into a hierarchy of ready to use ObjectWindows classes and 
comes in two versions: an ObjectWindows 2.0 version for Borland 
C++ 4.0 and an ObjectWindows 1.0 version for Borland Pascal 
7.0. 



------------------
2. WHAT'S CHANGED!
------------------

In the design department, just about everything. SFX200.DLL has 
been completely rewritten. Overall, the interface is more 
impressive and more functional. The paint methods are flicker 
free so the window frames and custom controls are drawn 
smoothly, and Chicago-style window captions have been added as 
an option. The common dialog box templates have been redesigned 
and include several useful 'file' features and some extra 
buttons. The standard buttons are activated by simply 
specifying the appropriate flag, so there are no hooks to worry 
about. There are five new common dialog box functions that can 
be used instead of the Windows' common dialog box structures or 
OWL 2.0's common dialog box objects. Several new features have 
been added to the library including resizeable Borland style 
buttons, a status bar that supports flyover and tabbed text and 
3-dimensional menus.

One of the biggest changes is in the way SFX200.DLL draws the 
non-client area of its dialogs and windows. To paint the window 
frames flicker-free and add the new MWS_SFXCAPTION style it was 
necessary for SFX200.DLL to draw the non-client area itself. 
This has made ObjectMate 2.6 incompatible with existing version 
2.1 programs (see Changes to your source code).

ObjectMate no longer provides an ObjectWindows SFX class 
library for Borland C++ 3.1. If you use version 3.1 you will 
have to update your existing ObjectMate 2.1 header and source 
code files yourself. You can use the C++ 4.0 files a guide.



-----------------
3.  INSTALLATION.
-----------------

The source code for this installation program is provided as a 
sample application. If you want to take the time to look at it 
carefully, copy the program files to a floppy disk and install 
ObjectMate from there.

DO NOT INSTALL OBJECTMATE 2.6 OVER THE TOP OF OBJECTMATE 2.1 OR 
OBJECTMATE 2.5 BETA. Although Install will overwrite your 
existing ObjectMate files, several obsolete directories and 
files will be left behind on your hard disk. 

Before running install delete your current ObjectMate SFX 
directories and files, you wont need them. Then, to install 
ObjectMate 2.6 run the program INSTALL.EXE. Full installation 
requires about 1.7 MB of hard disk space. 

After initialisation, Install presents you with 
several options. You should do the following:

     1. Enter your compiler's base directory. If the base 
        directory doesn't exist Install will create it.

     2. Select the language files you wish to install, either 
        Borland C++ 4.0, Borland Pascal or both.
    
     3. Check the 'Add to Resource Workshop' check box to automatically 
        have Resource Workshop load SFX200.DLL.

     4. Check the 'Create ObjectMate Group' check box to have install 
        create a Program Manager group for the documentation.

Install should be run from the same directory as the compressed 
program files. The ObjectMate Interface Library SFX200.DLL and 
its Windows help file SFX200.HLP will be copied into your 
Windows system subdirectory. You should leave SFX200.DLL in 
this subdirectory. You can move SFX200.HLP but make sure its in 
a directory in your path statement. Otherwise Resource Workshop 
wont be able to display the on-line help. The language files 
you select will be copied into new subdirectories in your base 
directory. 

If you install the C++ 4.0 files you will find:

 - the documentation in your base\doc\sfx subdirectory,
 - the header files in your base\include\sfx subdirectory,
 - the library files in your base\lib\sfx subdirectory,
 - the source code files in your base\source\sfx subdirectory,
 - and the sample applications in your base\examples\sfx subdirectory.

If you install the Pascal files you will find:

 - the SFX object unit's SFX200.PAS, SFXWNDS.PAS, ODMENU.PAS and 
   ODLIST.PAS 
in your base\sfx\units subdirectory,
 - the sample applications in your base\sfx\examples subdirectory,
 - and the SFX200.H header file and the documentation in your base\sfx 
   subdirectory. 

If you work with RC files in Resource Workshop you will need to 
add SFX200.H to your RC project file using the 'File\Add to 
project..' menu item. Pascal programmers will need to add the 
new base\sfx\units subdirectory to the UNIT directories entry 
field in options/directories dialog box in BP 7.0.

At the end of the installation you can either read this file or 
exit Install. If SFX200.DLL was loaded into memory before the 
installation you will have to restart Windows. Otherwise you 
can exit Install and continue with your current Windows 
session.  



--------------------------------
4.  CHANGES TO YOUR SOURCE CODE.
--------------------------------

A few minor changes were necessary but overall little or no 
change to your source code should be required. In most cases 
just recompiling your source code with the new library files is 
all that's necessary. 


SFXDefFrameProc:

 - SFXDefFrameProc has an extra parameter, the client window 
   handle.


TSFXButton:

 - A new function has been added:

    1. SetIcon      - Sets the icon to displayed on an icon button.

TSFXToolbar:

 - Five new functions have been added:
 
    1. GetText      - retrieves the status bar text.

    2. SetFont      - sets the status bar font.

    3. SetText      - sets the status bar text.

    4. SetTool      - changes a button's ID and bitmaps.

    5. StatusWindow - returns a handle to the static text 
                      window.

C++ 4.0 CHANGES:

 - Some errors were made in the initial implementation of the 
   OWL 2.0 SFX class library that came ObjectMate 2.0/2.1. 
   ObjectMate 2.6 fixes these problems.

 - TSFXApplication was an unsuccessful attempt at integrating the 
   SFX class library into OWL 2.0 and has been removed. You should 
   now derive your application from TApplication as usual and make 
   atleast one call to an SFX200.DLL function, such as 
   GetSFXVersion(); in OwlMain. The files SAPP.H and SAPP.CPP have 
   been deleted.

 - The OWL 2.0 window classes have been rewritten and now 
   contain minimal code.


PASCAL CHANGES:

 - The TSFX3DMDIClient class has been deleted. TSFXMDIClient 
   has a new constructor that specifies whether to use the
   global SFXMDICLIENT or SFX3DMDICLIENT class client window. 

 - The SFX200 unit has been split into SFX200.PAS and 
   SFXWNDS.PAS. The SFXWnds unit contains TSFXEditWindow and
   TSFXFileWindow. Previously, all the edit/file window dialogs
   and menus where added to every application that used SFX200.
   Having a separate edit/file window unit fixes this 
   problem. 

-----------------------------------------
5. USING OBJECTMATE WITH BORLAND C++ 4.02.
-----------------------------------------

Borland's recent service update BC++ 4.02 has a bug in its IDE 
that incorrectly unloads a user defined DLL from memory. When a 
program using a DLL is compiled and run from within its IDE and 
terminated, the DLL's WEP function is not called. This is 
disastrous for SFX200.DLL because its WEP function deletes all 
the bitmaps, brushes, fonts and pens that it uses. When the IDE 
unloads SFX200.DLL from memory the system resources used by the 
GDI objects are not returned to the system. Eventually, after 
repeated launchings, the system resources drop to zero and your 
forced to reboot Windows.     

This is not a bug in SFX200.DLL because it doesn't happen when 
a program is compiled and linked in the IDE but run from 
outside, and it doesn't happen in the BC++ 4.0 IDE. The  
problem has been reported to Borland and they're working on it.

Until a patch is released you will have to use a work around. 
Since a DLL is only loaded into memory once, its WEP function 
is only called when it's unloaded. If SFX200.DLL is loaded into 
memory before compiling and running a program the system 
resource leakage doesn't occur. 

You should make sure that SFX200.DLL is loaded into memory 
before compiling and running programs from your BC++ 4.02 IDE. 
Two small programs, LOADSFX.EXE and ULOADSFX.EXE will do this 
for you and can be found in your base\lib\sfx subdirectory. 
LoadSFX loads SFX200.DLL into memory and ULoadSFX unloads it. 
You can either add LoadSFX to you WIN.INI load/run line or your 
Program Manager startup group, or you can add it to your IDE's 
tools menu so you can load and unload SFX200.DLL as required.



-----------------
6. DOCUMENTATION.
-----------------

ObjectMate 2.6 is documented in two files: SFX200.HLP and 
SFX200.TXT. SFX200.HLP is the on-line Windows help file and 
SFX200.TXT is a printable reference guide. These files are not 
the same.

SFX200.HLP provides you with general information about 
ObjectMate 2.6 including its Resource Workshop interface, the 
ObjectWindows SFX class library and SFX200.DLL. SFX200.TXT 
discusses each SFX object in detail including its corresponding 
ObjectWindows TSFX class and any helpful hints.



-----------------------
7. SAMPLE APPLICATIONS.
-----------------------

ObjectMate 2.6 includes 8 new sample applications that show you 
how to use most of the custom controls, dialogs and windows in 
SFX200.DLL. The most notable are the object viewer and the 
installation program.

The object viewer displays all the custom controls, dialogs, 
common dialogs, message boxes and input boxes in SFX200.DLL. To 
use the object viewer you will need to compile its source code 
in your examples' SFXVIEW subdirectory.

The ObjectMate installation program is provided as a sample 
application. Its source code can be found in your examples' 
INSTALL subdirectory. It's the actual source code so if you 
compile and run it without modification it will try to install 
ObjectMate 2.6. To test the source code I suggest you install 
the ObjectMate program files into dummy base directories.

The other sample applications show you how to set up an SFX 
toolbar/status bar with flyover hints in a MDI window and a non 
MDI window, how to set up a notebook style SFX multiple dialog, 
how to add 3D menus to your application and how to set up basic 
SFX dialogs, windows  and MDI windows. Only registered users 
are free to use, modify, reproduce and distribute the sample 
applications or any modified version in any way they find 
useful.



---------------------------
8. OBJECTMATE IS SHAREWARE.
---------------------------

ObjectMate 2.6 is distributed as uncrippled nag-screen free 
shareware. You can use ObjectMate for an evaluation period of 30 
days free of charge. During this period you can use any of the 
ObjectMate files in your application development but you are 
not permitted distribute any applications with the dynamic link 
library SFX200.DLL.

Registering ObjectMate 2.6 entitles you to develop and distribute 
any number of applications with SFX200.DLL. When you register 
this program you are supporting the shareware principle and 
fellow programmers, and your encouraging ObjectMate's continued 
development.



-------------------
9. ACKNOWLEDGMENTS.
-------------------

It would not have been possible to develop, refine and extend 
ObjectMate 2.6 without the help of two relentless programmers 
in search of the perfect byte. They are:

   1. William Miller
      Adirondack software & Graphics
      524 Rock Avenue Chestertown, NY.
      CIS [70530,2166]

   2. Bill Ebina
      Custom Software Solutions
      43422 West Oaks Dr., #205
      CIS [72440,1141]

Thanks guys!



I hope your pleased with ObjectMate 2.6 and enjoy using it.
All the best, 

Jeff Franks.
Microworks.
 
====================== End of README.TXT ======================



