eduwin 应用框架 API
应用生命周期
int init_app(void);
初始化 eduwin 框架。必须在任何其他 eduwin 函数之前调用,成功返回 0,失败返回 -1。
void run_app(void);
启动消息循环(阻塞),直到 quit_app() 被调用才返回。创建第一个窗口后,该窗口关闭时自动退出消息循环。
void quit_app(void);
退出消息循环。
窗口
HWND create_window(const WCHAR *title, int width, int height);
创建一个标准重叠窗口(带标题栏、边框、可缩放)。
HWND create_hidden_window(int w, int h);
创建一个不显示的傀儡窗口(WS_POPUP + STATIC 类),最轻量、无边框、全程不可见。
用途: 某些子系统(如 WebView2)强制要求传入有效的父窗口句柄,传 NULL 会崩溃。在 headless / 后台服务模式下,用此函数创建一个不可见的"挂架"窗口。
销毁: 程序退出时自行 DestroyWindow。
void show_window(HWND win);
创建一个窗口,title 是标题栏文本。返回窗口句柄。
void show_window(HWND win);
显示窗口。必须在添加完所有控件和菜单后调用。
事件
void on_window_close(HWND win, int (*callback)(void *), void *data);
注册窗口关闭事件。callback 返回 1 时关闭窗口,返回 0 则不关闭。
void on_window_resize(HWND win, void (*callback)(int w, int h));
注册窗口大小变化事件。callback 的参数是窗口客户区的宽和高(像素),不含标题栏和边框。
// 窗口缩放时在状态栏显示客户区尺寸
void on_size(int w, int h)
{
WCHAR buf[128];
str_format(buf, 128, L"Client: %d x %d", w, h);
statusbar_set_text(sb, buf);
}
on_window_resize(win, on_size);
回调签名说明:
on_window_resize的回调是void (*)(int w, int h),不是void (*)(void *)。on_window_close的回调是int (*)(void *)。 其他控件事件(如on_button_click)的回调是void (*)(void *)。