Vb6 如何将无窗口控件放置在windows控件的顶部?

Vb6 如何将无窗口控件放置在windows控件的顶部?,vb6,windowless,Vb6,Windowless,比如说,我有一个图像控件(似乎是一个无窗口控件),我想确保它位于文本框的顶部。无论我做什么,图像控件都不会出现在文本框的顶部 有办法吗 另外,我知道我可以使用PictureBox,但它不支持透明度,因此我必须拥有图像控件。图像控件被视为图形控件,就像形状一样,因此它总是不如文本控件。如果你真的想要一个透明的图像,你可以使用Microsoft2.0表单来代替(只有在你有它的情况下)。文本框顶部可以有图像,您可以通过将Backstyle设置为transparent(0)使其透明。我创建了一个tran

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

有办法吗


另外,我知道我可以使用PictureBox,但它不支持透明度,因此我必须拥有图像控件。

图像控件被视为图形控件,就像形状一样,因此它总是不如文本控件。如果你真的想要一个透明的图像,你可以使用Microsoft2.0表单来代替(只有在你有它的情况下)。文本框顶部可以有图像,您可以通过将Backstyle设置为transparent(0)使其透明。

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

首先,向应用程序添加一个新的USerControl。给它起个像ImageX、PictureEx或Transparnitimage这样的名字。您需要使用几个属性。确保控件已打开窗口,以便它可以位于其他打开窗口的控件之上。找到MaskColor属性并将其设置为青色(或您选择用于指示tranparent区域的任何颜色。可能有一个附加属性启用遮罩行为,只需浏览这些属性。将控件背景颜色设置为MaskColor的颜色。此时,您有一个不可见的控件。在我的控件中,我在曲面顶部绘制了注释,但您可以绘制Picture,甚至可以为一个非常简单的方法设置图像属性

当然,要使其成为一个可重用的控件,您需要在自己的属性中编写代码,以允许设置MaskColor和image等,这样您就可以将其中一个拖放到您想要的任何形式上


一些链接:


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

如果您有VB6安装介质,则有绘制(无窗口)版本的控件,包括一个文本框,您可以使用该文本框(可能)执行您想要的操作


某种自定义用户控件(如果可能更好的话)。您到底想用什么方法覆盖文本框?

与我的另一个答案完全不同的方法(因此是单独的答案),但您可以将窗体上的AutRedraw和ClipControls设置为false,这将允许图像控件在与窗口控件相同的层上进行渲染。在某些情况下,您可以进行一些片状重绘,但为了快速解决问题,您可以尝试使用它

)1)删除所有文本框、标签和。。。(但要记住表格中的姓名和位置)

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

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

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


5) 右键单击图像控件,然后单击(放在前面)

文档中没有任何关于图形控件和/或“劣质”控件的内容。它确实说明了无窗口控件是在容器的DC中绘制的,因此不可能出现在任何标准子控件之上。此外,您不能在MS Office之外合法地使用Forms 2.0库,您当然不能将其与应用程序一起发布--即,在VB6应用程序中使用Forms 2.0,MS Office必须在客户端计算机上单独获得许可。总而言之,我过去使用过Forms 2.0,没有任何问题,现在它仍然可以在该软件中使用。不过,我大体上同意其他评论者的看法,如果可能的话,最好避免,