← 都来码← 文档索引窗口原文English

窗口

开窗、问尺寸、关窗、屏幕方向。

完整清单见「UI 开发」。下面每个接口都带一句用法和一个例子;签名取自 Lib/c/vml_ui.h(权威来源)。

ui_scr_get_orientation(void)

设备方向:VML_ORIENT_PORTRAIT(0) / VML_ORIENT_LANDSCAPE(1)。 **别拿 scr_w > scr_h 去推** —— 那是可用绘图区(会随手柄收起而变化),方向是设备本身的属性。

if (ui_scr_get_orientation() == VML_ORIENT_LANDSCAPE) { /* 横排 */ }

ui_scr_get_h(void)

可用绘图区的高。

int h = ui_scr_get_h();

ui_scr_get_w(void)

可用绘图区的宽(开窗前也能问)。

int w = ui_scr_get_w();

ui_win_close(void)

关掉窗口(程序自己结束用)。

ui_win_close();

ui_win_is_closed(void)

用户是不是已经关窗了(主循环的退出条件)。

while (ui_win_is_closed() == 0) { … }

ui_win_open(char* title, int w, int h)

开一个绘图窗口。**先问 ui_scr_get_w/h() 拿可用绘图区,再按它开** —— 写死尺寸在小屏上会溢出。

int w = ui_scr_get_w(), h = ui_scr_get_h();
ui_win_open("我的游戏", w, h);

ui_win_open_ex(char* title, int w, int h, int rotatable, int gamepad)

同上,另加两个开窗前就生效的声明:转屏策略、要不要手柄区。

/* 五子棋:只竖屏 + 不要手柄 */
ui_win_open_ex("五子棋", w, h, VML_WIN_PORTRAIT, VML_WIN_NO_GAMEPAD);
/* 赛车:锁横屏 + 要手柄 */
ui_win_open_ex("赛车", w, h, VML_WIN_LANDSCAPE, VML_WIN_NEED_GAMEPAD);

ui_win_open_pc(char* title, int w, int h, int rotatable, int keyboard)

开一个 “电脑屏”窗口:老 DOS/BGI 程序那种“字符网格 + 鼠标”的模型(要键盘/鼠标,不要手机手柄)。

ui_win_open_pc("老程序", 640, 400, VML_WIN_ROTATABLE, VML_WIN_NEED_KEYBOARD);