1

我有一个 VB6 MDI 应用程序,用户可以选择他们想要连接的数据库(例如“存档”或“实时”)。当用户访问“存档”数据库时,我希望将其突出显示。理想情况下作为跨表格的水印。所有控件仍然可见并正常工作。当他们使用打印屏幕时,我需要这个水印持续存在。事实上,只在打印屏幕上加水印的解决方案就可以了。

此外,我更喜欢可以在 MDI 父窗体中实现的解决方案,因此我不必更改所有单个子窗体。

到目前为止,我已经尝试过了。

  1. 给 MDI 父背景添加水印,并使 MDI 子背景半透明。不幸的是,您似乎无法使 MDI 子窗体透明 - 整个 MDI 应用程序(父和子)变得透明。

  2. 使 MDI 应用程序透明,然后在 MDI 父窗体后面添加一个带有水印的非子窗体(此窗体根据 MDI 父窗体移动和调整大小)。这个看起来还可以,如果有点晕,但是 Alt-PrintScreen 只截取了 MDI 窗口,所以没有截取水印效果。PrintScreen 没问题。所以,我可以考虑添加一个键盘挂钩来禁用 Alt-Printscreen。

  3. 添加一个键盘挂钩以捕获 PrintScreen 按键,然后在 MDI 应用程序上显示带有水印的透明表单。和2一样,Alt-PrintScreen只截取MDI表单,不显示水印效果。此外,此解决方案仅对打印屏幕输出添加水印。

  4. 向 MDI 表单添加背景图像。这不会通过其他控件显示,并且对于具有很多框架的表单,水印不是那么明显。

是否有一些巧妙的方法可以在表单窗口上呈现水印图形?您能否在其他控件上方放置一个透明图片框,并且这些控件仍然可以正常工作?

所有建议表示赞赏。

谢谢

4

2 回答 2

1

除了您要查找的水印措辞之外,我将创建一个透明的新表单。该表单将使用代码来确保它始终位于顶部,并且前面没有其他表单。MDI 表单会启动这个表单并控制表单是否显示存档或实时水印以及表单的位置。

就个人而言,我一直使用应用程序标题或状态栏来始终显示此信息。

于 2012-11-15T20:55:51.773 回答
0

此修复的主要原因是防止来自“存档”系统的任何报告或屏幕截图与“实时”系统混淆。我本来想给屏幕加水印,但这似乎太尴尬了。更改表单背景的颜色/图像或在标题中添加内容等有用的建议是好的、简单的解决方案。

但是,我确实需要确保任何印刷材料或屏幕截图都被清楚地标记。

为报告添加水印非常简单,因为它们使用 Word/Excel 自动化等 - 所以我可以在从“存档”数据库打印时添加透明文本框等。

区分“存档”/“实时”之间的屏幕截图有点尴尬。最终,我采用了设置键盘钩子来捕获任何打印屏幕按键的方法。这仅在“归档”系统上激活。在打印屏幕的按键事件中,我将位图从剪贴板复制到图片框(在隐藏表单上);在其上平铺透明水印图像;然后将图片框图像复制回剪贴板。因此,如果将其粘贴到另一个应用程序中,则它具有水印。似乎运作良好。当然,这将为所有屏幕截图添加水印,无论它们是否属于申请表——但这对用户来说是可以的。

于 2012-11-22T14:34:19.063 回答