the following code can display the widgets. but again, I don't know how to deal with the callback function
why not sciter for GUI? 2 reasons, 1. size; 2. license
Code: Select all
#include"windows.bi"
'~ sub OnBtnClick(LCUI_Widget self, LCUI_WidgetEvent e, void *arg)
'~ wchar_t str[256];
'~ LCUI_Widget edit = LCUIWidget_GetById("edit");
'~ LCUI_Widget txt = LCUIWidget_GetById("text-hello");
'~ TextEdit_GetTextW(edit, 0, 255, str);
'~ TextView_SetTextW(txt, str);
'~ end sub
type LCUI_Widget as any pointer
'~ LCUI_API void LCUI_InitBase(void);
Declare sub LCUI_Init Cdecl Lib "LCUI" Alias "LCUI_Init" ()
'~ LCUI_API int LCUI_Main(void);
Declare function LCUI_Main Cdecl Lib "LCUI" Alias "LCUI_Main" () as integer
'~ LCUI_API LCUI_Widget LCUIWidget_GetRoot(void);
Declare function LCUIWidget_GetRoot Cdecl Lib "LCUI" Alias "LCUIWidget_GetRoot" () as LCUI_Widget
'~ LCUI_API LCUI_Widget LCUIBuilder_LoadFile(const char *filepath);
Declare function LCUIBuilder_LoadFile Cdecl Lib "LCUI" Alias "LCUIBuilder_LoadFile" (filepath as zstring ptr) as LCUI_Widget
'~ LCUI_API int Widget_Append(LCUI_Widget container, LCUI_Widget widget);
Declare function Widget_Append Cdecl Lib "LCUI" Alias "Widget_Append" (container as LCUI_Widget, widget as LCUI_Widget) as integer
'~ LCUI_API int Widget_Unwrap(LCUI_Widget widget);
Declare function Widget_Unwrap Cdecl Lib "LCUI" Alias "Widget_Unwrap" (widget as LCUI_Widget) as integer
'~ LCUI_API LCUI_Widget LCUIWidget_GetById(const char *idstr);
Declare function LCUIWidget_GetById Cdecl Lib "LCUI" Alias "LCUIWidget_GetById" (idstr as zstring ptr) as LCUI_Widget
'~ typedef void(*LCUI_WidgetEventFunc)(LCUI_Widget, LCUI_WidgetEvent, void*);
'~ type LCUI_WidgetEventFunc as FUNCTION(a as LCUI_Widget, b as LCUI_WidgetEvent, c as any pointer)
'~ LCUI_API int Widget_BindEventById(LCUI_Widget widget, int event_id,
'~ LCUI_WidgetEventFunc func, void *data,
'~ void(*destroy_data)(void*));
' ??how to
function main() as integer
dim as LCUI_Widget root, pack, btn
LCUI_Init()
root = LCUIWidget_GetRoot()
pack = LCUIBuilder_LoadFile("helloworld.xml")
'~ if (not pack) then
'~ return -1
'~ end if
Widget_Append(root, pack)
Widget_Unwrap(pack)
btn = LCUIWidget_GetById("btn")
print btn
'~ Widget_BindEvent(btn, "click", OnBtnClick, NULL, NULL)
return LCUI_Main()
end function
main()