1

在 Turbo Pascal 7 for DOS 中,您可以使用 Crt 单元来定义一个窗口。如果您在第一个窗口之上定义第二个窗口,例如弹出窗口,我看不出有办法摆脱第二个窗口,除非再次在顶部重新绘制第一个窗口。

有没有我忽略的窗口关闭技术?

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

4

1 回答 1

4

如果您的意思是 CRT 单元提供的一种,我认为您不会缺少一种关闭窗口的技术。

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

Afaik,这些库(以及相当明显的 TurboVision)都基于一个框架窗口的内存表示,该窗口可以快速复制进出 PC 的视频内存,并且在 Windows 中与大写 W 一样,它们被处理作为具有 z 顺序的堆栈。因此,关闭/擦除顶层窗口的过程是获取它一直覆盖的窗口以重新绘制自身/自身的过程之一。Otoh,CRT 基本上是从原始起源演变而来的,即使不是基于旧的 DEC VT100 显示协议,也不能真正胜任支持独立、可堆叠的窗口对象的工作。

尽管您可能仍然能够找到 TurboVision 的 PD 版本,但它从未真正成为开发人员的库。在一个理想的世界里,一个更好的起点是 OPro。它显然在 SoureForge 上存在了一段时间,但似乎自 2007 年左右以来的某个时候就被删除了,而如今,即使你能拿到一份副本,在许可问题上也有一点问号。 然而...

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

于 2019-11-29T10:03:28.253 回答