<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    On 01/05/2011 02:47 PM, zeljko wrote:<br>
    <blockquote cite="mid:201101051447.08701.zeljko@holobit.net"
      type="cite">
      <pre wrap="">
I'd say that widget = TWinControl (and others derived from TWinControl of 
course).

</pre>
    </blockquote>
    OK, but rater irrelevant regarding Lazarus. <br>
    <br>
    Here "<b>Widget Type</b> = TWinControl + all handling of External
    Events".<br>
    <br>
    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. <br>
    <br>
    <br>
    Background: <br>
    <br>
    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. <br>
    <br>
    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").<br>
    <br>
    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". <br>
    <br>
    OTOH, FPGUI seems to succeed on this behalf.<br>
    <br>
    -Michael<br>
  </body>
</html>