如何在Windows控件上放置一个无窗口控件?

时间:2012-06-21 02:24:51

标签: vb6 windowless

说,我有一个Image控件(它似乎是一个无窗口控件),我想确保它位于TextBox之上。无论我做什么,图像控件都不会出现在文本框的顶部。

有办法吗?

P.S。我知道我可以使用PictureBox,但它不支持透明度,因此我必须拥有Image控件。

5 个答案:

答案 0 :(得分:3)

无法将图像控件放在普通文本框上,因为它们绘制到表单本身上,因此总是位于任何其他窗口组件的下方。

如果您有VB6安装媒体,则会有绘制(无窗口)版本的控件,包括您可以使用的TextBox,它可能(可能)执行您想要的操作; http://support.microsoft.com/kb/184687

某种自定义用户控件,如果可能更好......你想要用文本框覆盖什么?

答案 1 :(得分:2)

图像控件被视为图形控件,就像形状一样,因此它总是不如文本控件。如果您确实需要透明图像,则可以使用Microsoft 2.0表单(仅当您拥有它时)。图像可以位于文本框的顶部,您可以通过将Backstyle设置为Transparent(0)来使其透明。

答案 2 :(得分:1)

我创建了一个透明叠加控件,可以在VB6应用程序的顶部添加一种注释图层。我将尝试从内存中描述它,如果这不能提供足够的信息,那么你可以发回,我会尝试挖掘代码。

首先,向您的应用程序添加一个新的USerControl。给它一个像ImageEx,PictureEx或TransparntImage的名称。您需要使用几个属性。确保控件是Windowed,因此它可以位于其他窗口控件的顶部。找到MaskColor属性并将其设置为Cyan(或您选择用于指示透明区域的任何颜色。可能有一个添加属性启用屏蔽行为,只需浏览属性。将控件背景颜色设置为MaskColor的颜色。此时你有一个不可见的控件。在我的控制下,我在表面顶部绘制了注释,但你可以使用PaintPicture或者甚至可以设置图像属性来实现一个非常简单的方法。

当然,要使其成为可重复使用的控件,您需要在自己的属性中进行编码,以便设置MaskColor和图像等,以便您可以在任何所需的表单上删除其中一个。


一些链接:

MaskColor Property

MackPicture Property

答案 3 :(得分:1)

完全不同于我的其他答案的方法(因此单独的答案),但您可以将表单上的AutRedraw和ClipControls设置为false,它将允许Image控件在窗口控件的同一层上呈现。在某些情况下你可以重新绘制一些flakey,但为了快速解决方案,你可以试试。

http://msdn.microsoft.com/en-us/library/aa733621(v=vs.60

答案 4 :(得分:0)

1)删除所有文本框,标签和...(但在表单中记住他们的姓名和位置)

2)转到(项目>组件)并标记(Microsoft Forms 2.0对象库),然后单击确定

3)现在,您可以在工具箱中的默认控件下看到新控件...

4)使用其文本框和标签控件而不是默认控件

5)右键单击Image Control,然后单击(置于前面)