str_id字符串标识符,与当前 ID 栈一起散列以区分此项或作用域。
flags控制此操作的 ImGuiWindowFlags 选项;可用 | 组合兼容的标志位。
此作用域打开或激活且可提交内容时返回 true。仅为 true 时调用 EndPopup();为 false 时跳过内容和配对结束调用。
弹出窗口与模态窗口:
会阻止其后方正常的鼠标悬停检测(因而阻止大多数鼠标交互)。
非模态窗口可通过点击外部任意位置或按 ESCAPE 关闭。
可见性状态(约等于 bool)保存在内部,而不是像常规 Begin*() 调用那样由程序员保存。
上述三个特性相关:弹出窗口可能随时关闭,因此库需要保存其可见性状态。
调用 IsItemHovered() 或 IsWindowHovered() 时使用 ImGuiHoveredFlags.AllowWhenBlockedByPopup 可绕过悬停限制。
重要:弹出窗口标识符相对于当前 ID 栈,因此 OpenPopup 和 BeginPopup 通常必须位于栈的同一层级。这有时会导致令人困惑的错误,未来可能重新设计。
BeginPopup():查询弹出窗口状态;若已打开,则开始向窗口追加内容。返回 true 后必须调用 EndPopup()。ImGuiWindowFlags 会传给窗口。
BeginPopupModal():阻止窗口后方的一切交互,用户不能直接关闭它,添加变暗背景并带有标题栏。弹出窗口打开时返回 true,此时可开始向其输出内容。
开始向已打开的弹出窗口追加内容。