lc-soft/LCUI
posted by lc-soft about 3 years ago
posted by 204065248 over 2 years ago
The issue has been closed
老哥,LCUI好像没办法创建多窗口? #279
weolar posted onGitHub
老哥,LCUI好像没办法创建多窗口?比如LCUIWidget_GetRoot这个api,连参数都没有,那如果有多窗口怎么获取当前窗口的root呢
现有的设计没提供手动创建和管理多窗口的方法,只提供了个无缝显示模式,也就是给根部件里的每个子部件单独创建窗口,你试试?
LCUIDisplay_SetMode(LCUI_DMODE_SEAMLESS);
这块功能的代码很久没更新了,我不确定是否还有效果。
3.0 版本对这块做了调整,可手动管理窗口,示例代码:
#include <LCUI/platform.h>
#include <LCUI/ui.h>
#include <LCUI/ui/server.h>
...
ui_widget_t *widget;
app_window_t *window;
lcui_init();
widget = ui_create_widget(NULL);
window = app_window_create("窗口", 0, 0, 800, 600);
// 连接部件和窗口
ui_server_connect(widget, window);
// 后续对部件的改动都会由 UIServer 同步到这个窗口
ui_widget_resize(320, 240);
ui_widget_move(400, 400);
ui_widget_set_title("新标题");
lcui_main();
...
// 在其它地方获取部件对应的窗口
window = ui_server_get_window(widget);
...
#include <Windows.h>
// 获取系统窗口句柄
HWND wnd = app_window_get_handle(window);
...
如果你对这块有其它想法和建议的的话可以提出来,我看看能不能在 3.0 版本里实现。
现有的设计没提供手动创建和管理多窗口的方法,只提供了个无缝显示模式,也就是给根部件里的每个子部件单独创建窗口,你试试?
LCUIDisplay_SetMode(LCUI_DMODE_SEAMLESS);
这块功能的代码很久没更新了,我不确定是否还有效果。
3.0 版本对这块做了调整,可手动管理窗口,示例代码:
#include <LCUI/platform.h> #include <LCUI/ui.h> #include <LCUI/ui/server.h> ... ui_widget_t *widget; app_window_t *window; lcui_init(); widget = ui_create_widget(NULL); window = app_window_create("窗口", 0, 0, 800, 600); // 连接部件和窗口 ui_server_connect(widget, window); // 后续对部件的改动都会由 UIServer 同步到这个窗口 ui_widget_resize(320, 240); ui_widget_move(400, 400); ui_widget_set_title("新标题"); lcui_main(); ... // 在其它地方获取部件对应的窗口 window = ui_server_get_window(widget); ... #include <Windows.h> // 获取系统窗口句柄 HWND wnd = app_window_get_handle(window); ...
如果你对这块有其它想法和建议的的话可以提出来,我看看能不能在 3.0 版本里实现。
2.2版本怎么多窗口呢,应用场景 Login窗口和Main窗口