KASE:C++ for OS/2           Release 2.10      KnowledgeBase Corrections

=====================================================================

How to Install:

1.  Close your KASE:C++ session.

2.  Copy your existing *.KNB to another directory or .ZIP file, so you'll
    have a backup if necessary.

3.  Unzip KNBCPP.ZIP into your \KASECPP\KNB\CPP subdir.  DON'T do a DEL *.KNB
    before you do this, as we may still use some of the original .KNBs.

4.  DEL \KASECPP\KNB\CPP\*.SMB  These Symbol files match the old KNBs and
    MUST be deleted.  The next time you Generate in KASE:C++, fresh ones will
    be created to match the new KNBs.

5.  Open KASE:C++ and resume developing; if you have any problems or
    questions, don't hesitate to call, fax or modem to Tech Support.

    KASE Systems,       404-564-5696  Main
                               -5679  Fax
                               -5539  BBS  8-N-1, 24 hr, thru 14.4K

Check our BBS often for more updates, programming examples, Q&A, etc.
Updates also available via Internet at:

    ftp-os2.nmsu.edu
    hobbes.nmsu.edu

=====================================================================



The following provides a list of corrections supplied within this suite
of knowledgebase (.KNB) files:

Date: 02/03/95

    1.  Data Object Generated Code

        If a data object contained a pointer as an element, the object destructor
        would delete the pointer.  Since the data object does not allocate the
        contents of pointer, it should not have been deleting it.  The deleting of
        pointer elements has been removed.  If there are special needs for deleting
        elements, the destructor event should be browsed and a UDC attached.

    2.  Data Object copy constructor

        If a data object element was an array (other than type CHAR), the generated
        code would not compile in some cases.  The generated code will not generate 
        code to copy data object elements which are arrays unless the element is of 
        type CHAR.
        
    3.  Missing #include <istring.hpp>

        If a list box, combo box or spin button was prototyped to be filled from a 
        file and the control was placed in a dll, a compile error would result.  The
        istring.hpp was not being included in the correct header file.

    4.  Spin buttons

        If the spin button was prototyped to be readonly but through the designer a
        numeric range was set, an exception error would result.

    5.  Panel return codes

        For modal panels, the result from the pnl::invoke() function would not return
        the id of the control which closed the window. The ID_CANCEL id was always
        returned.  The iframewindow::close() member function was being used to close
        the panel.  This member function always sets the result to ID_CANCEL.  Instead
        of generating a close(), the iframewindow::dismiss() member function will be
        generated.

        If the panel is modeless, a WM_DESTROY messsage will be posted after the 
        dismiss() in order to destruct the window.  A modeless window is hidden after
        a dismiss() therefore, the WM_DESTROY is necessary.

    6.  Caller Data parameter missing

        The asPage member function of a panel was not accepting the callerData
        argument.

    7.  Duplicated line of code

        The line IApplication::current().setArgs(argc, argv) was duplicated in the
        main() fuction of an .EXE.



Date: 12/09/94

    *   Some of the problem resolutions also require a designer DLL update.  Please
        keep this in mind when applying these knowledge base updates.



    1.  Correct problem generating code for following messages:

        Control         Message(s)
        ---------------------------

        Lists           gotFocus, lostFocus
        Combo Boxes     gotFocus, lostFocus
        Value Sets      gotFocus, lostFocus, select, enter
        Spinners        spinEnded, arrowUp, arrowDown

    2.  Correct multiple initialization of variables when a group of radio
        buttons are all prototyped with the same variable.

    3.  Added a new message for DOB objects: copy_constructor.  If this message
        is "browsed", the action will be inserted into the copy constructor member
        function of the DOB object. 

        * Requires updated KWDOB.DLL

    4.  Added capability of populating a container using current thread or a
        separate thread.

        * Requires updated KWCNR.DLL

    5.  A new constructor for container objects has been added.  The constructor adds
        back the capability of passing only the title string when instantiating a
        container object (See item #5 from 11/04/94 updates).  The default icon will
        be ISystemPointerHandle::standardApplication.  This removes the requirement of
        modifying existing code which item #5 from 11/04/94 updates imposed.

    6.  Added a new message for DOB objects: operator = .  If this message
        is "browsed", the action will be inserted into the assignment operator member
        function of the DOB object.

        * Requires updated KWDOB.DLL


Date: 11/04/94

    1.  Enable special characters such as '*' and '#' to be used in string
        defines in resource file.

    2.  Fix to help for child controls on panels which are pages in notebooks.

    3.  Correct generate error when gotFocus and/or lostFocus messages have 
        been browsed.

    4.  Tab sizes in notebooks have been adjusted to eliminate whitespace.

    5.  Resources will be loaded from DLL when required.

        A change has been made to the constructor of container objects.  This
        change requires that existing code be modified in order for the source
        to compile.  The icon resource must be added as the 2nd parameter to
        the constructor.  If you don't know which #define to use, look in the
        <app>.rch file ( where <app> is the application name).  If you did not
        assign your own icon to the object, use ICO_DEFAULT as the parameter.


        If the container is in a .EXE, an example of the changed line is:

           OpenUdcObject *pCnrItem = new OpenUdcObject ("Object", ICO_KWUDC);

        If the container is in a .DLL, an example of the changed line is:

           OpenUdcObject *pCnrItem =
                new OpenUdcObject ("Object", IResourceId(ICO_KWUDC, *pMyDloLibrary));

    6.  For notebooks, the call to createPages() has been moved to the constructor
        so that pages may be added dynamically.

    7.  ".INC" files have been added to dependents list for UDC objects.

    8.  KW events in window objects are now sent using sendEvent member function 
        instead of postEvent.

    9.  KStdHdr (standard handler) events in window objects will only be sent to
        client if a client template exists.

   10.  setColumns & populate member functions for container objects have been moved
        to the container constructor.

   11.  Added Icon as the first column in container details view.  If you do not wish
        to have the icon as the first column, add a UDC to the constructor with the
        following lines of code:

            IContainerColumn* col = columnAt(0);
            removeColumn(col);

   12.  For containers, a call to showTreeLine() has been added to showView() and
        the showTreeNameView() call in showView() has been changed to
        showTreeIconView().

   13.  Prefixed the postEvent(KW_ACTION_COMPLETE, 1) call for Program objects 
        with objectWindow()-> in order to fix a compilation error.

   14.  Added a break statement to the last step in process objects.  The missing
        break was causing access violations.

Date: 10/21/94

    1.  Correct a bug in fix for data in DLL's (Ref: 10/07/94 #2 fix).

    2.  Enable background color of container objects to be changed.

    3.  Fix for user-defined messages being assigned the same message id
        in #define statement in .RCH file.
 
    4.  Fix for setting caller data member correctly in PNL & CNR objects when
        ::invoke() member is called in user-defined code.

    5.  Fix to static text controls when prototyped to a variable or data object.
        Text for these fields was not being set.

    6.  Fix to setDefaults member function.  If a variable or DOB item was prototyped
        to a control, the values of the variable/DOB item were being unconditionaly 
        set to 0 for any type except CHAR.


Date: 10/14/94

    1.  Fix to CNR's when DOB is attached to CNR as well as a column in
        details view.

    2.  Fix for CNR's when tree view is default view.

    3.  Generate proper code when attaching a DOB to a process.

    4.  UDC's in destructor member functions were generating an access violation
        because a message was being posted to a destroyed window.

    5.  #include<isubmenu.hpp> will be included in CNR if needed.

    6.  Display bitmaps and icons in value sets.

Date: 10/07/94

    1.  Move location of user include files so that they follow #include "os2.h".

    2.  Fix to data objects (DOB) being included in DLL's.

    3.  Make split bar visable if location is past the end of the container.

Date: 10/06/94

    1.  Fix for compiler error related to "caller" and "callerData"
        enhancement (09/30/94 # 4).

    2.  If a window has a panel as a client, panel.accept() will not be 
        called in window.closed().

    3.  Fix for compile error when including container objects in a DLL.

    4.  Fix for displaying a container with specified font in details view.

    5.  Fix for split bar positioning.

Date: 9/30/94

    1.  Reversed order of parameters to KProgram constructor when linking to a
        Program (.EXE) object.

    2.  Added the following constants to be used as user-defined offsets within
        auxillary .RC and .HRC files...

            #define KWRES_USER_WINDOW
            #define KWRES_USER_MENU
            #define KWRES_USER_STRING
            #define KWRES_USER_ICOBMPPTR

    3.  Auxillary resource includes within Application and DLL Designer
        Changed the generated code to use rcinclude for all .DLG and .RC
        files and #include for all other extensions.

    4.  Changed Window, Panel, Notebook, and Container constructors to
        accept "caller" and "callerData" as parameters.  This is similar
        to the associated "invoke" methods and allows the "callerData"
        to be passed to child objects [Window with client area support and
        Notebook with pages (Panels)]

    5.  DLL Func links within a Process used an incorrect variable name

    6.  Numeric validation on entry fields not working

    7.  USER_DEFINED messages not generating code when attached to controls

    8.  Case statements missing for enter event on radio buttons

Date: 8/26/94

    1.  Modeless Panels cause application termination (access violation) because
        of incorrect parameter to IFrameHandler::handleEventsFor function called
        within the constructor.

Date: 7/28/94

    1.  Product information panel invocation not generated...

    2.  Secondary windows, notebooks, and containers not closed/destroyed
        when application terminates.  Changed the "invoke" function to pass
        "ownerFrame" (derived from "caller" parameter to "invoke") as the owner.

Date: 7/26/94

    1.  Compile error when attaching User-define events to controls within a panel

    2.  Resource Compile error of duplicate resource ids

Date: 7/18/94

    1.  Program termination (access violation) when linking to modeless
        panels...

Date: 7/14/94

    1.  Compile error when Container objects enabled for direct manipulation
        (drag and drop)

    2.  Extended Code Support links to "select" event for radio buttons,
        check boxes, list boxes and combo boxes code not generated...

Date: 7/01/94

    1.  Extended Code Support links to "dynamic population" for list boxes
        and combo boxes code not generated...

    2.  Applications not loading when "Help" support is activated

    3.  Links to Data Object events not generated



