Turbo Pascal 7 中的弹出窗口 window

Popup window in Turbo Pascal 7

在用于 DOS 的 Turbo Pascal 7 中,您可以使用 Crt 单位来定义 window。如果你在第一个上面定义第二个 window,就像一个弹出窗口,我看不出有什么办法可以去掉第二个,除了重新在上面重新绘制第一个。

有没有我忽略的window近距离技术?

我正在考虑在内存中保留一系列屏幕以使其正常工作,但 TP IDE 会像我想的那样弹出窗口,所以也许这很容易,我只是看错了地点?

我认为您没有遗漏任何 window 关闭技术,如果您指的是 CRT 单元提供的关闭技术。

用于 TP7 IDE 的 Borland 库称为 TurboVision(参见 https://en.wikipedia.org/wiki/Turbo_Vision),它最终发布到 public 域,但在此之前,许多第 3 方屏幕 handling/windowing 库已经可用,这些库比 CRT 单元可以实现的功能强大得多。最著名的可能是 Turbopower Software 的 Object Professional(又名 OPro)。

Afaik,这些库(以及相当明显的 TurboVision)都是基于框架 window 的内存表示,可以快速复制进出 PC 的视频内存,如Windows 大写 W,它们被视为具有 z 顺序的堆栈。因此,过程或 closing/erasing 顶层 window 是获取它一直覆盖的 window(s) 以重新绘制 itself/themselves 的过程之一。 Otoh,CRT 基本上是从 v. primitive origins 演变而来的,类似于(如果不是基于)旧的 DEC VT100 显示协议,并且不能真正胜任支持独立、可堆叠 window 对象的工作。

虽然您仍然可以找到 TurboVision 的 PD 版本,但它从未真正成为开发人员的库。在理想情况下,更好的起点是 OPro。它显然在 SoureForge 上有一段时间了,但似乎从 2007 年左右开始就被撤下了,现在即使你能拿到一份副本,在许可方面也有一些问号。 然而 ...

还有一个非常流行的免费软件库可用于 TP,名称为 "Technojock's toolkit",它与 OPro 有很大的功能重叠(包括屏幕处理), 在 github 上仍然可用 - 请参阅 https://github.com/lallousx86/TurboPascal/tree/master/TotLib/TOTSRC11。与 OPro 不同的是,我自己从未使用过 TechnoJocks,但它的忠实拥护者对此深信不疑。看一看。