Event-driven GUI - experienced programmers opinion needed!


I am currently writing a replacement of Borland Turbo Vision - an entirely
new application
framework. The new framework is written in 100% object oriented Borland
Pascal. I have run into some problems when I started to implement an
event-driven GUI.

This is what I have come up with so far:

 procedure Reject; virtual;
 function Sender : pComponent; virtual;
 function Receiver : pComponent; virtual;
 function IsBroadcast : boolean; virtual;

  procedure Handle (Message : pMessage);
  procedure Send (...);
  procedure Post (...);
  fManager : pManager; { field }

tManager : tComponent
  procedure Handle (Message : pMessage); override;
  procedure Kill (Component : pComponent);
  procedure Register (Component : pComponent);

  procedure Post (...); override;
  fQueue : pADT; { message queue }

I think you get the picture although this is very sketchy. I have some
problems. I must decide what properties I shall put into the tComponent
class. I will give it the flag "fLocked : boolean" that is set to TRUE if
it cannot receive messages.

The Post method calls the fManagers Post method, and so on until the
manager is a communicator that put the posted message in a queue.

My tComponent class is inherited into a tView and tGroup class just like
Turbo Vision. These classes will handle the graphical interactions.

Here are the problematic issues:

(i) I don't know how to make use of a message queue -  is it really
(ii) Would it be wise to enable a program to have more than one message
(iii) How are keypresses etc put into the message queue? I have designed a
class extension of tComponent ===> tDevice that will post messages. Must I
implement more methods than just Handle - ie. Execute; virtual; that is
called systematically by the manager???

Your view on this would be very helpful. Also you may know some good books
or places on Internet where one can gain further information about
event-driven programming and its basics.

I am in desperate need of advice since the product is already very

Best Regards,
Johan Larsson
j...@ts.umu.se <=== reply here!

PS.  If you are qurious ... check this out: