小编Dav*_*Caz的帖子

C# 结构体的属性在 COM 和 VB6 中获得不可用的名称?

我的 C# 代码有一个struct要导出到 COM 的代码。该结构的属性带有奇怪的名称,这些名称甚至在 VB6 中都不是有效语法,因此无法访问它们。

有什么方法可以让它们以正常、可用的名称导出吗?我是否缺少某个属性或其他内容?


COM/VB6 中名称的格式为:

<original_name>k__BackingField
Run Code Online (Sandbox Code Playgroud)

其中只有original_name部分位于我的 C# 代码中。

我只能在 VB6 对象浏览器中看到这些疯狂的属性名称,Intellisense 不会显示它。

这是正在构建的(稍微清理过的)代码:

[Guid("....")]
[ComVisible(true)]
public struct MyStruct
{
    public string StringA { get; set; }
    public string StringB { get; set; }

    public MyStruct(string a, string b)
    {
        StringA = a;
        StringB = b;
    }

    ... // some other methods, no fields or properties
}
Run Code Online (Sandbox Code Playgroud)

为了更好地衡量,这里是生成的 IDL:

typedef [uuid(....), version(1.0), custom(xxxx, MyNamespace.MyStruct)]
struct tagMyStruct {
    LPSTR <StringA>k__BackingField;
    LPSTR <StringB>k__BackingField; …
Run Code Online (Sandbox Code Playgroud)

c# vb6 struct tlbexp com-interop

1
推荐指数
1
解决办法
400
查看次数

可以设置表单的MinWidth和MaxHeight吗?

我是VB6的新手,我这样做只是因为我有一个25年前创建的项目。

我需要限制表单的大小,特别是MinWidth和MaxHeight。

我有没有可以像WinForms或WPF中那样使我做到的属性?

例:

FormName.MinWidth =1000;
Run Code Online (Sandbox Code Playgroud)

我试过了,但无法正常工作:

If W < 7399 Then
  W = 7400
  Enabled = False
  DoEvents: DoEvents
  Enabled = True
ElseIf W >= 7400 Then
  W = cmdSelect.Width
  DoEvents: DoEvents
  Enabled = True
End If
Run Code Online (Sandbox Code Playgroud)

vb6

1
推荐指数
1
解决办法
70
查看次数

如何在vb6中显示一段时间的文本和文本随着淡入淡出而消失

场景是这样的:从数据库中读取新闻,每条新闻显示几秒钟,然后淡出并显示下一条新闻。就像福克斯新闻等新闻网络上的突发新闻一样..

我的主要问题是文本如何淡出并显示下一条新闻?Visual Basic 6 中有许多表单淡入/淡出的示例,但文本却没有。

通过这段代码,我可以在 3 秒后显示新闻文本,然后将其删除。但我希望新闻文本逐渐消失并显示下一条新闻。

Dim EndTime As Long
Dim eee As String
EndTime = Timer + 3
Do While Timer < EndTime
    eee = CLng(EndTime - Timer)
    DoEvents
Loop
lbl(0).Caption = ""
Run Code Online (Sandbox Code Playgroud)

vb6 text fade

1
推荐指数
1
解决办法
179
查看次数

我不知道ADODB.Recordset是什么

我正在将VB6应用程序转换为C#.我开始在VB6应用程序的顶部,并从那里开始.什么是RS.东西?我不明白?

Sub Main()
    Dim RS As ADODB.Recordset
    Dim FileName As String, FilePath As String
    Dim Test As Boolean
    Dim ResultCode As xcdError

    Dim oAccess As Access.Application
    Dim Zip_File As String

    On Error GoTo ErrorHandler

    ' Make a connection to the database
    Call MakeDBConnection

    ' Create a recordset of the directories to check
    Set RS = New ADODB.Recordset

    RS.ActiveConnection = DB
    RS.CursorType = adOpenDynamic
    RS.LockType = adLockOptimistic
    RS.Open "Select ConversionDefinition.* From ConversionDefinition"
    ' Check the directories for Raw Data
    ' If …
Run Code Online (Sandbox Code Playgroud)

c# vb6 vb6-migration

0
推荐指数
1
解决办法
767
查看次数

什么是'Collada'场景图?

什么是Collada场景图?

我可以拍摄一个我从Google 3D仓库下载并以某种方式将其转换为Collada场景图的场景吗?

该过程是否以某种方式分割场景?

scenegraph collada

0
推荐指数
1
解决办法
1018
查看次数

打开没有Webbrowser或Inet控件vb6的URL

有没有办法在不使用Webbrowser或MSInet组件的情况下在VB6应用程序中打开URL?谢谢

browser vb6 url web msinet

0
推荐指数
1
解决办法
2772
查看次数

将固定长度语句从VB6转换为VB.Net

我只是想将VB6函数之一转换为VB.Net,下面是转换语句我面临的问题

Option Strict Off
Option Explicit On
Imports Microsoft.VisualBasic.Compatibility.VB6
Imports System
Imports System.Runtime.InteropServices
Module FunctionCmd_Msg

    Public FunCommand_Msg As Fun_CommandMessage = Fun_CommandMessage.CreateInstance()
    'Function Command Message
    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ _
    Public Structure Fun_CommandMessage
        <VBFixedString(1)> Public one As String
        <VBFixedString(1)> Public two As String
        <VBFixedString(3)> Public three As String
        Dim five As String
        <VBFixedString(8)> Public four As String
        Public Shared Function CreateInstance() As Fun_CommandMessage
            Dim result As New Fun_CommandMessage
            result.one = String.Empty
            result.two = String.Empty
            result.three = String.Empty
            result.four = String.Empty
            result.five = …
Run Code Online (Sandbox Code Playgroud)

vb.net string vb6 vb6-migration

0
推荐指数
1
解决办法
1146
查看次数

_LINE__在这个Perl单线程中是否经常折叠?

在探索sarathi 当前文件行号问题的另一个答案时,我写了这个单行,期望它将打印所有提供的文件的第一行:

$ perl -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
Run Code Online (Sandbox Code Playgroud)

这没有按预期工作; 所有的线都印了.

运行单行-MO=Deparse显示表示条件不存在.我假设这是因为它在编译时被恒定折叠:

$  perl -MO=Deparse -ne 'print "$ARGV : $_" if __LINE__ == 1;' *txt
LINE: while (defined($_ = <ARGV>)) {
    print "$ARGV : $_";
}
-e syntax OK
Run Code Online (Sandbox Code Playgroud)

但为什么?

在Perl 5.8.8下运行.

perl constantfolding

0
推荐指数
1
解决办法
123
查看次数

R:并排显示函数内生成的可变数量的ggplots

我有一个函数DisplayPlot,它将字符串列表作为输入(指的是数据帧中的列).例如,如果list_string = c("string1","string2"),循环使用list_string的元素,我想并排显示两个ggplots.

到目前为止,我在我的函数中所做的是将ggplots存储到列表中:

for (i in 1:length(list_string){
p = ggplot(data=d, aes(x=d[,1], y=as.numeric(levels(d[,(i+1)]))[d[,(i+1)]], fill=d[,1])) +
  geom_bar(stat="identity") +
    guides(fill=FALSE) +
      labs(x = Y) + labs(y = paste("CP",list_X[i],"_per_",Y,sep = "")) 
graph[[length(graph) + 1]] <- p }
Run Code Online (Sandbox Code Playgroud)

并返回:

  return(list(graph=graph, along with some other information))
Run Code Online (Sandbox Code Playgroud)

问题是,如果我想使用类似的函数grid.arrange,我需要手动编写图的名称:grid.arrange(p1,p2,ncol=2)而在我的情况下,这个数字可能会有所不同,并存储在列表中(grid.arrange不喜欢的格式).

非常感谢您的帮助,克莱门特

r ggplot2

0
推荐指数
1
解决办法
177
查看次数

VB6 IDE缓慢和注册表中的'VBKeySave5'

什么是注册表子树HKCR\VBKeySave5?为什么它对VB6 IDE性能有如此巨大的影响?

背景:

我们的一台开发PC(Windows 10 x64)加载VB6 IDE非常慢.IDE最初加载速度很慢,而且启动项目引用窗口的速度很慢.(几十秒,甚至几分钟).

清除项目使用的库之一的注册表显示了子树HKCR\VBKeySave5.在这个子树下有成千上万的条目,看起来像你用VB6 DLL等获得的GUID,类ID,类名等通常的COM沼泽地.

删除此密钥及其下的所有内容使IDE执行速度更快 - 基本上它会加载然后立即显示引用窗口.

由于这一点,似乎没有发生任何坏事.

ide vb6 registry

0
推荐指数
1
解决办法
1613
查看次数