【问题标题】:Popup window in Turbo Pascal 7Turbo Pascal 7 中的弹出窗口
【发布时间】:2019-11-28 17:10:51
【问题描述】:

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

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

我正在考虑在内存中保留一系列屏幕以使其正常工作,但 TP IDE 会弹出我想要的弹出窗口,所以也许这很简单,但我只是找错了地方?

【问题讨论】:

  • 从头开始做这件事并非易事(即使用 Crt 单位作为基础)。但是,有几个开源库可以提供此类功能。一个例子是Object Professional
  • 我一定会试试的,谢谢!
  • @500-InternalServerError: 我正要推荐 OPro,但它的文件似乎已从 SourceForge 中删除,除非我找错地方了。我可以轻松找到的唯一仍然有文件的地方(包括 OPWindow.Pas、OpEntry.Pas 等的来源)是this one,但我不确定使用它的合法性,tbh。
  • 在这种情况下,我不会担心合法性,因为图书馆已向公共领域发布,而制造它的公司已经倒闭了近 20 年。
  • 注意Turbo Pascal IDE不使用Crt,而是使用Turbo Vision

标签: pascal turbo-pascal


【解决方案1】:

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

用于 TP7 IDE 的 Borland 库被称为 TurboVision(参见 https://en.wikipedia.org/wiki/Turbo_Vision),它最终被发布到公共领域,但在此之前,许多第 3 方屏幕处理/窗口库已经可用,并且这些比 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,但拥护者对此发誓。看看吧。

【讨论】:

  • 恕我直言,这个答案让问题看起来像是跑题了,只提到了第 3 方软件......您至少可以在第一段中包含一个“否”作为更直接的答案。跨度>
  • @SertacAkyuz:是的,我在写答案时就意识到了这一点,所以我同意你的观点。所以我添加了一些历史+技术信息,我希望可以清楚地表明一个人当然可以在 CRT 之上构建一个窗口系统,但需要成为一个受虐狂并且有很多时间去做因此,当至少有一个现成的解决方案仍然可用时。
  • 感谢您的详细解答。我很高兴我没有在 crt 中遗漏一些明显的东西。
  • 只有 Turbo Vision 的 C++ 版本被公开。 Pascal 版本不是 afaik。 Afaik 唯一的“免费”TP 是较旧的 (
  • TP Object Professional 发表于顺丰网sourceforge.net/projects/tpopro
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
相关资源
最近更新 更多