There are 3 new dialog controls being added in 4.2.4:  ReBar, ToolBar, and
StatusBar.  They are pretty cool.

I haven't yet added example programs for the controls.  The reference
manual has the controls added, along with all the methods of the classes.
 This allows you to see what methods are available.

If you searched:  MSDN Rebar control, for instance, you will find the MSDN
reference for the Rebar control.  In the ooDialog reference for the ReBar
control, you can see it has the getBandCount() method.  In the MSDN
documentation you will see the Rebar control has the RB_GETBANDCOUNT
message.

MSDN says the RB_GETBANDCOUNT message returns a value that represents the
number of bands in the rebar.

It may, or may not, surprise you to find out that the ooDialog
getBandCount() method returns the number of bands in the Rebar.  The MSDN
doc explains exactly how rebar controls work and what a "band" is.

If you are interested, this should be enough to get you going.

Although I don't have any code for the new controls that is of "example"
quality, I do of course have plenty of working code.  Just post a request
here if you want some code and / or are unsure of things about the controls.

The other new feature(s) is an update of the EventNotification class.

1.) In the original ooDialog implementation only strings could be sent to
the event handlers.  The implementers choose to send the window handle of
the dialog control as one of the arguments to the event handlers.

In C / C++ the window handle of the dialog control is very important.  But,
it is of little use to Rexx programmers.  What is actually of use to the
Rexx programmers is the Rexx dialog control object itself. The arguments
sent to every event handler are now updated to include the Rexx dialog
object.

For the existing event connections, since, mostly, the arguments sent were
already documented, the Rexx dialog control object argument is added to the
end of the existing list.  As new event connections are added, the dialog
control object will be placed in the list where it makes the most (to me)
sense.

2.)  Every event connection method now has a 'willReply' argument.

I'm not sure how many ooDialog programmers have caught on to, or are aware
of, the difference between the event handlers in the original ooDialog
implementation and the current implementation.

In the original implementation, when the ooDialog framework intercepted a
connected event notification, it immediately returned 0 to the operating
system and then placed the notification in a queue to be invoked in the
dialog object, at some later time.

This significantly distorts the ability to program dialogs correctly. In
Windows, the operating system sends an event notification message to a
window, a dialog window in our case, waits for the reply from the window,
and then sends the next message.

For times when a lot of notifications are being sent, say re-sizing events,
in the old implementation there could be 10 or 15 notifications queued up
before the dialog object was aware of the first notification.  The
operating system would in effect be racing ahead of the Rexx dialog object.

The proper way for events to be handled in ooDialog programs is for the
ooDialog framework to intercept the notification, invoke the Rexx dialog
with the data values sent from the operating system, get the returned value
from the dialog method, and send that returned value back to the operating
system.

This in effect keeps the dialog and the operating system in sync.

For backwards compatibility, all the existing event connections have to, by
default, behave in the same way.  So, when the ooDialog framework
intercepts a connected event notification, it returns 0 to the operating
system immediately, and then invokes the Rexx event handling method
concurrently, (that is, as a separate activity.)  The Rexx method
invocation has to be done concurrently because the framework needs to be
ready to process the next Windows message immediately.

The 'willReply' argument is added to the end of the existing connect event
methods and allows the ooDialog programmer to over-ride the default
implementation and program their dialogs correctly.

Originally, for all new connect event methods, I was going to enforce that
the event handler had to return a value and the ooDialog framework would
always wait for that value and return it to the operating system.  However,
an optional willReply argument for the new connect event methods would
allow the programmer to control what the framework does.

So, all event connection methods have an optional willReply argument.  The
argument has 3 values: .true, .false, or the keyword "SYNC".

.true   ->  The ooDialog framework directly invokes the Rexx event handler,
waits for the returned value, and returns that value to the operating
system.  The event handler must return a value of the proper type.  That
is, if the operating system expects a return of true or false for the
event, the Rexx event handling method must return true or false.

.false  ->  The ooDialog framework immediately returns 0 to the operating
system and then invokes the Rexx event handling method to run concurrently
as a separate activity. There are no requirements for the event handler to
return a value and any value returned has no effect.

SYNC ->  The ooDialog framework directly invokes the Rexx event handler,
and waits for the Rexx method to return.  The event handler does not need
to return a value and if it does, its value is ignored.  This in effect
keeps the operating system and the dialog in sync.

The documentation for this is complete.  In fact the entire
EventNotification class documentation has been reviewed and checked for
accuracy and completeness.

Please open bugs at:

https://sourceforge.net/p/oorexx/bugs/?source=navbar

for any that you find.  Or at the very least post on this list to bring
them to my attention.  One of the main reasons that I go to the trouble of
building and uploading preview versions is the hope that users of ooDialog
will help test and shake out any kinks in the newer stuff.

Of course if you have any questions about ooDialog just ask them here.

--
Mark Miesfeld



On Sat, Jan 18, 2014 at 2:52 PM, Mark Miesfeld <[email protected]> wrote:

> Hi All,
>
> I've done a current build of the next version of ooDialog, tentatively
> 4.2.4 at this time, and put it up on SourceForge for any one interested.
>  You can download from:
>
>
> https://sourceforge.net/projects/oorexx/files/ooDialog/4.2.4%20%28preview%29/
>
> There are 3 new dialog controls being added in 4.2.4:  ReBar, ToolBar, and
> StatusBar.  They are pretty cool.
>
> The other new feature(s) is an update of the EventNotification class.
>
> See my next post for details on 4.2.4.
>
> --
> Mark Miesfeld
>
------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Oorexx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-users

Reply via email to