Jump to content

Open Class Library (OCL) FAQ

From EDM2

By Stéphane Charette

General Information

History of the Open Class Library FAQ

The revision history is as follows:

Version Comment Author Date
0.1 initial write-up in OS/2's IPF (.INF) format SC 1997June20-21
0.1a added table of files at Hobbes SC 1997June24
0.1b converted the FAQ to HTML format SC 1997June28
0.1d Added animation sample
Added LNK2029 information
Updated fixpak information
Created "Errors in IBM's include files"
SC 1997Sept05
0.1e Changed e-mail address
Added POV_Launch to the Hobbes index
Added custom-draw container information
SC 1997Nov02

How to obtain a copy of the FAQ

To obtain a HTML copy of the FAQ for local installation, download the file ftp://hobbes.nmsu.edu/pub/os2/dev/cplusplus/ocl_faq.zip.

Unzip this file in it's own directory (if using PKUNZIP, remember to use the /D option to create the subdirectories) and use your favorite web browser to access the files locally.

Where to obtain additional information

The on-line reference for OCL is located in your VisualAge folder, under the VisualAge C++ Information folder. The reference .INF file should be titled Open Class Library Reference (D:\IBMCPP\HELP\CLREF.INF) while a second .INF user's guide is called Open Class Library User's Guide (D:\IBMCPP\HELP\CPPCLSUG.INF).

The first book, Open Class Library Reference has all of the documented methods, objects, and necessary include files. The easiest way to find what you need is probably to click on Classes By Name, normally the second option from the top (may depend on the version of the documentation).

Note that one of the most useful .INF books which IBM ships with VisualAge can easily be overlooked; in the VisualAge C++ Information folder is a book called VisualAge C++ Frequently Asked Questions which deals with quite a few OCL topics.

Additional information on programming using OCL can be obtained from a variety of sources. There is an increase in books published (some of which by IBM) which deal with OCL, as well as numerous sources on the Internet.

For more information, consult:

Books which deal with OCL are:

OS/2 Class Library
Power GUI programming with C/Set++
Written by Leon, Law, Love Tsuji & Olson
Published by John Wiley & Sons
ISBN 0-471-13117-2
(Obsolete and replaced by the following book)
Power GUI Programming with VisualAge C++
Written by Law, Love, Olson & Tsuji
Published by John Wiley & Sons
ISBN 0-471-16482-8
(recommended by Mark Anderson, os2team@romeop03.fishkill.ibm.com)

I need recommendations to more books and internet sites with sample code...


Index of samples on Hobbes

tarting mid-June, 1997, I have begun to upload to ftp://hobbes.nmsu.edu/pub/os2/dev/cplusplus a series of Open Class Library samples that I have written. The following table is the index of these samples.

Filename Description Classes Used

OCL_ANI1.ZIP

animation sample IApplication, IColor, IDrawingCanvas, IEvent, IFrameWindow, IGBitmap, IGList, IRectangle, ITimer

OCL_CON1.ZIP

details view container sample IApplication, IContainerColumn, IContainerControl, IContainerObject, IFrameWindow, IString

OCL_THR1.ZIP

thread and timer sample (minimized icon fix explained) IApplication, ICommandEvent, ICommandHandler, IFrameWindow, IListBox, IPushButton, IString, ISystemMenu, IThread, IThreadFn, ITimer

OCL_ANI2.ZIP

animation sample #2 IApplication, ICommandEvent, ICommandHandler, IColor, IControlEvent, IDrawingCanvas, IFrameWindow, IFrameEvent, IFrameHandler, IGBitmap, IGList, IGraphicContext, IMouseClickEvent, IMouseHandler, IPopUpMenu, ITimerMemberFn0

OCL_CON2.ZIP

custom drawing in a details-view container IApplication, ICnrDrawHandler, IContainerColumn, IContainerControl, IContainerObject, IFrameWindow

PLNCH01G.ZIP

POV front-end Some of almost all classes available, including threads, canvases, icons, bitmaps, standard controls, profiles and exceptions.
Note
See also [additional_info.html Where to Obtain Additional Information]


OCL - Compiling

How to Compile

If you wish to correctly compile your OCL application, then the following should be used:

  • if you are using the project templates and WorkFrame that come with Visual Age, then
    1. click on Tools
    2. make certain that View is set to Actions
    3. expand the Compile subtree
    4. right-mouse-click on C++ Compiler
    5. select File Options
    6. select the Object tab
    7. select the Multithread option for Library selection (this sets the /Gm+ flag)
    8. click on OK
    9. close the tools setup
    10. regenerate the makefile and recompile
  • if you are compiling from the command-line, or using your own makefiles, then
    1. use the command icc.exe /Gm+ /C <other optional compiler flags> myfile.cpp
Note
See also [required_flag.html /Gm+], [../linking/how_to_link.html How to Link], [../linking/static_linking.html Static Linking] and [../linking/dynamic_linking.html Dynamic Linking]

Required compiler flag

There is one flag that absolutely must be specified when compiling source code which uses OCL calls. This flag is described as follows in the on-line help:

/Gm+
    Link with multithread runtime libraries. 

The default for ICC is to use /Gm- (no support for the multithreaded libraries) so the /Gm+ flag must be specified. Typical compiler behaviour when this flag is not specified is: D:\IBMCPP\INCLUDE\ibase.hpp(226:3) : error EDC3086: Error: Use of IBM Open Class Library requires the /Gm+ compiler option. D:\IBMCPP\INCLUDE\ibase.hpp(227:3) : error EDC3086: Check the makefile (or its profile) for a missing /Gm+ option.

Note: See also [#How to Compile] and [#Error EDC3086]

Errors in IBM's include files

OCL - Linking

How to link

Static linking

Dynamic linking

OCL - Miscellaneous

Application dies when starting

Application-modal windows

System-modal windows

How to convert a native PM item to OCL

How to create a thread

How to assign an icon to a window

How to prevent the minimized icon from being overwritten

How to print

Valuesets (WC_VALUESET)

Custom-drawing in a container

OCL - Errors

Error EDC3086

Error LNK2029

Error EDC0166, EDC0275, EDC0045 and EDC0046

OCL - Fixpacks and CSDs

Contributors

This document is (will be?!) the result of input from many sources. These include the following people who have been kind enough to submit hints, tips, examples, and other contributions: