微软支持哪些VB6控件?

4
我正在寻找Sheridan 3D面板(ssPanel)的替代品,并试图弄清楚在Projects>Components中可以添加哪些控件到我的项目中,这些控件将得到Microsoft的支持。(即,我不想添加Microsoft官方不支持的控件,例如MS Forms 2.0 Object Library)。
更新 Microsoft仍然支持VB6(或者至少支持它使用的文件)。

VB6仍然得到微软的支持吗?我以为它已经到了终止生命周期,“自2008年3月开始,Visual Basic 6.0将不再得到支持”来源于http://msdn.microsoft.com/en-us/vbrun/ms788707.aspx - Binary Worrier
2
VB运行时是现有应用程序的一部分(并包含在Win7中),但不包括IDE /编译器/ ...。 - Richard
我不得不想知道为什么你要使用VB 6进行新开发。 - Jonathan Allen
@Jonathan Allen。我猜这是现有代码的维护,而不是新开发。否则为什么Clay会担心SSPanel呢? - MarkJ
@Jonathan- 是的,它正在维护旧程序。 - Clay Nichols
4个回答

1

你需要SSPanel的哪个部分行为?

  • 如果是自定义外观(凸起的3D边缘等),那么基于VB6的内置Label和Line控件编写一个用户控件并不太难。请查看下方放大截图中SSPanel的边缘。它只是一个像素的边框。颜色是系统颜色:左边和顶部是“按钮高亮”&H80000014&,右边和底部是“按钮阴影”&H80000010&。在一个用户控件中放置四个Line控件,并在调整大小事件中编写代码将它们移动到控件的边缘。

alt text http://img194.imageshack.us/img194/5376/sspanelzoomin.png

  • 如果您需要一个可以充当容器的标签,您可以使您的用户控件能够成为容器(设置ControlContainer True)。

  • 垂直居中文本。我不知道有什么好方法。谷歌建议创建一个带有PictureBox并使用TextHeight方法的用户控件。

编辑 还有另一种方法,我在我的一些项目中正在使用它。继续使用SSPanel,尽管它不再支持并且知道其各种问题。它似乎在Vista和XP上工作良好 - 尚未在Windows 7上进行测试。


我需要在几个地方使用它们,并且它们需要动态调整大小,并具有与ssPanel相同的界面(相同的事件等),以便我不需要重新编写大量代码。特定功能是:在面板中心显示文本,并且(理想情况下)具有“凸起”的3D边缘。 - Clay Nichols
你是指将文本垂直居中吗?VB6内置的标签可以水平居中文本,但不能垂直居中。SSPanel支持两者。 - MarkJ

1

没有支持的控件列表:您需要查看 Microsoft 支持语句中的支持的 OCX 文件列表。您需要找出这些 OCX 中包含哪些控件。您可以启动一个新的 VB6 项目,在“项目组件”中选中 OCX,然后查看工具栏中可用的控件。

坦白我将此答案设为社区 Wiki,因为这些信息最初是在另一个答案的评论中,但该答案现已被删除。我对此感到有点内疚,因为我对该答案进行了负面评价(它说 VB6 不受支持,这是误导性的)。


1

仅作为一个补充说明,扩展MarkJ的想法(我意识到这个问题有点旧了,但最近我不得不处理一些旧的VB应用程序):有些情况下,SSPanel被用作带有背景颜色且没有文本的容器。虽然这似乎是显而易见的,但Forms.Panel在这些简单情况下确实可以很好地工作,避免“Sheridan 3D Controls”依赖并使分发更加容易。

VB.net转换工具可能会生成类似以下内容:

Public WithEvents ssPanel As AxThreed.AxSSPanel
Me.ssPanel = New AxThreed.AxSSPanel
ssPanel.OcxState = CType(resources.GetObject("ssPanel.OcxState"),
                         System.Windows.Forms.AxHost.State)
CType(Me.ssPanel, System.ComponentModel.ISupportInitialize).EndInit()

这可以很容易地改变为:

Friend WithEvents ssPanel As System.Windows.Forms.Panel
me.ssPanel = New System.Windows.Forms.Panel
' No longer necessary:
' ssPanel.OcxState
' CType(Me.ssPanel, System.ComponentModel.ISupportInitialize).EndInit()

-2
一个来自MarkJ的评论让我重新阅读了问题,从“替换”这个词中,我现在理解这很可能是一个重新编码/新版本项目,而不是从头开始...原始答案如下没有考虑到这一点。同时,微软表示正在支持一种没有路线图或承诺资源的语言的核心运行时文件,因此我的答案底线仍然是:vb6已经停止,新项目可以使用Python、vb.app、java、c++、C#等。

原文: 没有。VB6.0已经到达了它的生命周期终点。去学Python!或者Java,或者C#...永远不要学vb .net,因为它比Java更难/密集,根本不是VB6.0语法,而且学习曲线只比C#低一点。

P.S. 很有趣的是,我因为将vb .net与Java或C#相比较而被贬低。 我想知道这些人会怎么看待我,作为一个以前的vb6程序员,没有转向任何.net版本。


4
这肯定是我听过的关于 VB.NET 最荒谬的评论之一。 - Vnuk
2
关于维护 VB6 代码的问题,你之所以得到负面评价,是因为仅仅说“你必须在Python/Java/C#中重写整个应用程序”在我看来极不可能是最好的前进方式。(就给代码所有者带来最好的回报而言—— Clay 的薪水。) - MarkJ
@MarkJ,谢谢,我会回来评论它(这个话题有点跑偏了,但仍然很有趣)。我在高清晰度下观看时遇到了问题(每5秒播放就缓冲1分钟...),而中等清晰度的WMV根本无法缓冲... - jpinto3912
@MarkJ,所以我们将拥有VB运行时和MSctl控件支持。Paul表示,事实上原计划已经改变,因为微软承认了造成的损害。VBruntime在Win7周期内得到保证... IDE已经结束。他花了大约10分钟时间,使用不少于4个工具来“尝试帮助分阶段迁移”到.NET。这种努力还能更加误导吗?跳到20:00,你就会明白,VBx与VB.net完全不同。但我要纠正一下:获取一个虚拟XP并运行VB6 IDE来修复那个2008年旧版本的用于解决问题赚钱的应用程序,在Win7中可以运行(如果所有MS-ctrls)。这是一种方法。 - jpinto3912
@jpinto 微软正在支持VB6运行时,但在我看来,他们更愿意不去支持它。在我看来,他们也在尽力鼓励每个人迁移离开VB6。 - MarkJ
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接