【问题标题】:Software Display Problem软件显示问题
【发布时间】:2011-03-02 07:17:02
【问题描述】:

使用 VB6

我的默认软件显示设置为“800 x 600”

具有不同显示设置的客户端,例如“800 x 600”、“1366 x 768”、“1280 x 768”

客户端使用软件超过“800 x 600”显示设置意味着软件未安装全屏。软件正在显示 75% 的显示器宽度。

当我根据显示手动调整软件大小时,图像显示非常大。

如何根据显示器显示尺寸全屏显示软件。

需要代码帮助

【问题讨论】:

  • 用户购买昂贵的大型显示器是为了查看更多窗口,而不是查看更多您的窗口。使您的主窗口可调整大小,以便它适用于用户喜欢的任何大小。看看其他程序的做法。
  • “图像显示得很大”是什么意思?是的,当你让应用程序的窗口变大时,它显示的东西也会变大。这是预期的行为;您计算机上的所有其他软件都以相同的方式工作。您能否解释一下您的应用程序有什么不同,以及您希望看到什么

标签: vb6 screen-resolution resolution-independence


【解决方案1】:

简单的选项是允许用户最大化您的表单,这将导致它填满整个屏幕,而不管他们计算机的当前分辨率设置如何。

这种方法的唯一问题是它不会拉伸/调整表单上的控件 以匹配其新大小。布局看起来和以前一样,但现在它会被塞进左上角,下方和右侧有一大片空白区域。所以诀窍是在表单本身改变大小时动态调整表单上的 控件 的大小。

不幸的是,VB 6 对此没有任何内置支持。您别无选择,只能自己编写代码来处理调整所有控件的大小。执行此操作的最佳位置是表单的Resize 事件。您可以通过检查表单的ScaleWidthScaleHeight 属性来确定表单的当前大小。您的每个控件都公开了一个类似的WidthHeight 属性,您可以使用它们设置它们的大小,相对于它们的容器窗体的大小。您需要设计一些基本的数学逻辑来确定大小。快速的 Google 搜索应该会找到几个其他人如何做到这一点的示例,但没有可用的出色模型。

可以在 Microsoft Outlook 等电子邮件程序中找到一个示例。你可能有一个TreeView,它占据了表单高度的 100%,但只占据了表单宽度的 50%; ListView 占据表单高度的 50% 和宽度的 50%; TextBox 位于其下方,占表单高度的 50% 和宽度的 50%。这将产生类似于下图所示的流畅布局:

--------------------------------
|              |               |
|              |               |
|              |   ListView    |
|              |               |
|              |               |
|   TreeView   |---------------|
|              |               |
|              |               |
|              |    TextBox    |
|              |               |
|              |               |
--------------------------------

【讨论】:

  • + 但使用表单的 ScaleWidthScaleHeight 属性,而不是 WidthHeight
【解决方案2】:

只需将主窗体更改为最大化(将属性window state 设置为2 - Maximized),然后确保它包含的任何控件都可以根据需要调整大小或移动。

【讨论】:

  • 当我根据显示手动调整软件大小时,图像显示非常大。
  • @gopal:我认为您必须提供有关如何显示图像的更多详细信息,以便有人能够建议您如何避免这种情况。但是,我可能不知道答案,所以我建议为该特定问题创建一个新问题。
【解决方案3】:

您可以使用 move 方法来调整控件的大小。 在调整大小时使用 scalewidth、scaleheight、scalemode、twipsperpixel 属性。

但是当调整 SSTab 中的控件大小时,move 方法将无法正常工作,这需要更多的努力来克服。您可以参考this

另一种方法是以最小分辨率(即 800X600)设计表格,以便表格 将以所有其他分辨率显示。

【讨论】:

  • 为什么还有人使用SSTab 控件?多年来,Microsoft 一直提供他们自己的此控件版本,这是一个非常 更好的选择。 (此外,由于这是您添加到我的答案中的唯一内容,因此这应该是对我的答案的评论,就像 MarkJ 的一样。)
  • @Cody gray,你能告诉我微软的 SSTab 版本是什么吗?
  • 它被称为 TabStrip,并作为 Windows 通用控件 (MSCOMCTL.OCX) 的一部分提供。
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 2011-03-14
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多