diff -r 3cb2587f8891 -r a4e0ef98a8b4 ui/win32/toolkit.c
--- a/ui/win32/toolkit.c	Tue Mar 25 14:17:00 2025 +0100
+++ b/ui/win32/toolkit.c	Tue Mar 25 15:06:50 2025 +0100
@@ -27,7 +27,59 @@
  */
 
 #include "toolkit.h"
+#include "Windows.h"
+
+#include "../common/properties.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 
+static const char *application_name;
+
+static ui_callback   startup_func;
+static void          *startup_data;
+static ui_callback   open_func;
+void                 *open_data;
+static ui_callback   exit_func;
+void                 *exit_data;
+
+void ui_init(const char *appname, int argc, char **argv) {
+      application_name = appname;
+}
+
+const char* ui_appname() {
+    return application_name;
+}
+
+void ui_onstartup(ui_callback f, void *userdata) {
+    startup_func = f;
+    startup_data = userdata;
+}
+
+void ui_onopen(ui_callback f, void *userdata) {
+    open_func = f;
+    open_data = userdata;
+}
+
+void ui_onexit(ui_callback f, void *userdata) {
+    exit_func = f;
+    exit_data = userdata;
+}
+
+void ui_main() {
+    if(startup_func) {
+        startup_func(NULL, startup_data);
+    }
+
+    // event loop
+    MSG msg;
+    while (GetMessage(&msg, NULL, 0, 0)) {
+        TranslateMessage(&msg);
+        DispatchMessage(&msg);
+    }
+
+    if(exit_func) {
+        exit_func(NULL, exit_data);
+    }
+    uic_store_app_properties();
+}