1xfa/fwl is a Widget Library for XFA Forms. 2 3CFWL_Widget is the base class that widget classes extend. The derived widget 4classes are both controllers and renderers for each widget. The hierarchy is: 5 6* CFWL_Widget 7 * CFWL_Form 8 * CFWL_Caret 9 * CFWL_CheckBox 10 * CFWL_ComboBox 11 * CFWL_DateTimePicker 12 * CFWL_Edit 13 * CFWL_Barcode 14 * CFWL_ComboEdit 15 * CFWL_DateTimeEdit 16 * CFWL_ListBox 17 * CFWL_ComboList 18 * CFWL_MonthCalendar 19 * CFWL_PictureBox 20 * CFWL_PushButton 21 * CFWL_ScrollBar 22 * CFWL_SpinButton 23 24These CFWL widgets are instantiated by and closely related to the CXFA classes 25in the xfa/fxfa directory. See xfa/fxfa/README.md. 26 27CFWL_Widget implements IFWL_WidgetDelegate through which it receives messages, 28events and draw calls. 29 30Messages consist of user input for a widget to handle. Each type of message is 31identified by an enum value in Message::Type and has its own class derived from 32the base CFWL_Message. 33 34* CFWL_Message 35 * CFWL_MessageKey 36 * CFWL_MessageKillFocus 37 * CFWL_MessageMouse 38 * CFWL_MessageMouseWheel 39 * CFWL_MessageSetFocus 40 41Events are originated in the widgets and are then handled by other CFWL_Widget 42and CXFA classes. 43 44* CFWL_Event 45 * CFWL_EventCheckWord 46 * CFWL_EventMouse 47 * CFWL_EventScroll 48 * CFWL_EventSelectChanged 49 * CFWL_EventTextWillChange 50 * CFWL_EventValidate 51 52The widgets use IFWL_ThemeProvider for rendering everything, calling 53DrawBackground() and DrawText() and passing many options in their parameters, 54respectively of types CFWL_ThemeBackground and CFWL_ThemeText. See 55xfa/fwl/theme/README.md. 56 57