在 Turbo Pascal 7 for DOS 中,您可以使用 Crt 单元来定义窗口。如果您在第一个窗口之上定义第二个窗口,例如弹出窗口,除了再次在顶部重新绘制第一个窗口外,我看不到摆脱第二个窗口的方法。
有没有我忽略的窗户关闭技术?
我正在考虑在内存中保留一系列屏幕以使其工作,但是TP IDE会像我想的那样弹出,所以也许这很容易,我只是找错了地方?
我不认为您缺少一种关闭窗户的技术,如果您指的是 CRT 单元提供的关闭技术。
Borland 用于 TP7 IDE 的库称为 TurboVision(见 https://en.wikipedia.org/wiki/Turbo_Vision(,它最终被发布到公共领域,但在此之前,许多第三方屏幕处理/窗口库已经可用,这些库比 CRT 单元所能实现的功能要强大得多。 可能最著名的是Turbopower Software的Object Professional(又名OPro(。
Afaik,这些库(以及相当明显的TurboVision(都基于帧窗口的内存表示,该窗口可以快速复制到PC的视频内存中,并且与大写W的Windows一样,它们被视为具有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,但奉献者发誓。 看一看。