因为要用到动态加载controls.add()加载控件,所以用了MSWLess.ocx,不过郁闷的是,如果设置了滚动条,那滚动条跟正常的滚动条差别很大,
不知道有没有人试过?请问下有什么解决的办法没?

解决方案 »

  1.   

    谢了,哈哈,原来CSDN还有这个功能,强大。
      

  2.   

    轻量控件有时也被称为“无窗口的控件”,它与常规的控件有一点显著的区别:它们不具有窗口句柄(hWnd 属性)。因此它们使用的系统资源相对而言要少一些,对于 Internet 应用程序、分布式应用程序,以及其他容易受系统资源制约的应用程序来说,这种性质是很有吸引力的。常见的轻量控件包括 Label 控件和 Image Image并的那些轻量级控件不是Windows控件! 
    它是VB的接收到WM_PAINT消息是画出来的 
    这也就是 轻量级控件不能放置到标准控件上的原因(背景层位于最后)、用了ActiveSkin后Label、Image……消息的原因(ActiveSkin拦截处理了WM_PAINT消息)
    轻权控件本文包含有关随 Visual Basic 6.0 版的轻量或 Windowless,控件的信息。 本文还描述了轻量的控件,解释其优点和缺点,并说明了如何安装在 Visual Basic 项目中的轻量的控件。 
    回到顶端
    更多信息有时称为无窗口的控件的轻量控件的相似常规控件在于它们没有窗口句柄,在 Visual Basic 中附带。 由于轻量的控件没有窗口句柄,这些控件将使用较少的系统资...有时称为无窗口的控件的轻量控件的相似常规控件在于它们没有窗口句柄,在 Visual Basic 中附带。 由于轻量的控件没有窗口句柄,这些控件将使用较少的系统资源。 轻量的控件是适合于项目系统资源可能如 Internet 应用程序和分布式应用程序一个限制因素。 具有透明的 BackStyle 属性的轻量控件是真正的透明的。 常规控件可能显示为透明相同的情况下。 但是,控件仍在处理该透明背景区域中的 Windows 消息。 一个轻量的控件拥有透明背景时, 容器存放在轻型控制实际的进程在 Windows 邮件而不是轻量的控件。 因为轻量的控件是真正的透明,这些控件可以是任何形状。 有轻量的控件的缺点。 轻量的控件容器只能包含其他轻量的控件。 如果正则将控件放在一个轻量的控件容器中,该容器将还原常规窗口控件容器。 因为轻量的控件使用父窗口的资源,常规控件始终显示一个轻量的控件的前面。 当 Visual Basic 运行在工具箱中的将下列控件将不轻量的控件: 
    图像控件
    标签控件
    线条控件
    形状控件
    除了这些内部的轻量控件下面是组件文件用 Visual Basic 6.0 附带 MSWLess.ocx 中包含其他轻量控件: 
    WLCheck 控件
    WLCombo 控件
    WLCommand 控件
    WLFrame 控件
    WLHScroll 控件
    WLVScroll 控件
    WLList 控件
    WLOption 控件
    WLText 控件
    若要在 Visual Basic 程序中使用这些控件,必须完成以下步骤: 
    系统注册表中注册无窗口的组件文件。 
    在您的系统中,可以将组件文件和帮助文件复制到相应的目录。 
    将 ActiveX 控件添加到 Visual Basic 程序中。 
    回到顶端
    如何注册无窗口的组件文件
    搜索注册文件,MSWLess.reg,Visual Basic 安装磁盘上。 文件位于该 Common\Tools\Vb\WinLess 磁盘 1 上的目录。 注意 : The 无窗口控件位于 8 月 1998 年 MSDN CD 上以下位置: Disk3\Common\Tools\VB\Winless。 
    双击 MSWLess.reg。 成功注册无窗口的组件文件时,将出现下面的注册表编辑器对话框:
    在 Common\Tools\Vb\WinLess\MSWLess.reg 中的信息已成功输入到注册表。 
    您只是已注册无窗口的组件文件。 下一节显示您如何复制适当的无窗口组件,并帮助文件到您的计算机。
    回到顶端
    如何复制无窗口的组件文件
    搜索以下 Visual Basic 安装磁盘上的文件。 这些文件位于磁盘 1 上 Common\Tools\Vb\WinLess 目录中 
       Filename           Description
       ------------------------------------------------------------------------
       ltwtct98.chi       Help file on windowless controls.
       ltwtct98.chm       Help file on windowless controls.
       MSWLess.ocx        Windowless component file with the windowless ActiveX
                          Controls.
         将两个帮助文件复制到本地 Windows\Help 目录中。 
    将无窗口的组件文件,MSWLess.ocx,复制到本地 Windows\System 目录中。 只被复制所有需要无窗口的组件文件。 下一节显示您如何向 Visual Basic 程序中添加一个无窗口控件。
    回到顶端
    如何在无窗口控件添加到您的项目
    在 Visual Basic 中启动一个新的项目。 
    从 项目 菜单中,单击 组件 。 组件 对话框。 
    从 控件 选项卡选中 Microsoft 无窗口控件 6.0 复选框。 
    单击 确定 以关闭 组件 对话框。 所有无窗口控件出现在工具栏上。
      

  3.   

    所以TextBox的MultiLine屬性实现原理是:先清除原有的Edit,再创建一个新的Edit 这在设计时是可行的。但在运行时,会导致文本框相关数据的丢失,甚至会因不安全的代码导致非法操作,所以M$将TextBox的MultiLine屬性设置成运行时只读”,那么通过直接使用textbox控件是无法满足要求的了。 其实我们可以找到一个替代的方法,微软给我们提供了一组无窗口控件库。所谓“无窗口控件”是见名知义,是没有无窗口,因而没有hwnd属性。这个库在主要语言的参考文档中没有提到,它必须手工从common\Tools\vb\Winless目录下安装。安装的方法是将这个目录复制到硬盘上,用regsvr32或vb中对它进行注册,然后双击Mswless.reg,它创建使activex控件对vb环境可用的注册关键字。注册完毕后,从按Ctrl+T从可用的Active控件列表中选取Microsoft Windowless Control 6来把函数库加载到IDE中。 使用windowless函数库的好处是在运行时没有内部控件的限制,事实上所有的属性都可以在运行时改变。这个库中包括TextBox的无窗口版—MSWLess.WLText。也就说我们可以通过动态加载这个控件,来实现动态添加multiline属性的text控件。 Dim WithEvents TxtEditor As MSWLess.WLText Private Sub Command1_Click() Set TxtEditor = Controls.Add("MSLess.WLText", "txtEdit") TxtEditor.MultiLine = True TxtEditor.ScrollBars = wlBoth TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight TxtEditor.Visible = True End Sub 注意:“工程属性”中“删除有关未使用的active控件的信息”的复选框不要选
      

  4.   

    唉,查了这么长时间的资料,自己却忽略了一个最简单的办法,,,自己写一个ocx不就行了。晕啊晕,