On 01/05/2011 02:47 PM, zeljko wrote:
I'd say that widget = TWinControl (and others derived from TWinControl of
course).

OK, but rater irrelevant regarding Lazarus.

Here "*Widget Type* = TWinControl + all handling of External Events".

Handling of External (Main Thread) Events means: allowing the main thread to do non busy waiting for something and being waked if something happens and execute the appropriate event handler.


Background:

If the program is not a command line tool, the main thread needs to be waiting nearly always and needs to be waked whenever something happens that needs attention.

Theses "external events" are scheduled by the GUI (key and mouse triggered events), inter-process or inter-thread communication, Timers, etc, you name it. They need to be queued, so that the main thread can handle them one after the other (see "TApplication.ProcessMessages").

As the GUI events is the by far most complex class of external events, and the GUI stuff is handled in the Widget Set code in the LCL, the other external events are dealt with, in theses files as well. (unfortunately) there is no common implementation of non-GUI external events that is used by multiple Widget sets. This makes the creation of Widget sets that are independent of an external widget set (such as Windows, GTK, or QT) a lot more difficult and less "compatible".

OTOH, FPGUI seems to succeed on this behalf.

-Michael
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to