【问题标题】:ActiveX control default property discoveryActiveX 控件默认属性发现
【发布时间】:2008-09-03 11:40:15
【问题描述】:

是否可以确定 ActiveX 控件的哪个属性是默认属性?例如,VB6 控件 CommandButton 的默认属性是什么,如何找出其他控件的默认属性!

/EDIT:没有对象本身的来源

【问题讨论】:

    标签: vb6 activex


    【解决方案1】:

    我不使用 VB,但它就可以了。

    我找到了Using the Value of a Control,但这不是程序化解决方案。 如果您有权访问代码,请查找

    Attribute Value.VB_UserMemId = 0
    

    使用记事本。

    【讨论】:

      【解决方案2】:

      这取决于您何时想要确定这一点。您可以将标签控件(没有“值”属性)的“值”打印到调试器,例如:

      debug.print "Value for cmdTest is ["+format(cmdTest)+"]"
      

      这会给你类似的东西:

      cmdTest 的值为 [False]

      事实证明,命令按钮的默认值是它的状态(按下或未按下),所以如果你把上面的代码示例放在控件的点击事件中,你会看到“True”,如果你执行在其他地方,你会看到“False”。

      对于其他结果,此方法至少会显示您正在寻找的属性类型。你可以使用:

      debug.print "cmdTest's value is of type ["+TypeName(oObject) +"]"
      

      告诉你实际的类型,即:

      cmdTest 的值为 [Boolean] 类型

      您可以使用各种方法来缩小范围,例如设置值并查看会发生什么。

      【讨论】:

        【解决方案3】:

        使用随 Microsoft Visual Studio 分发的 OLE/Com 对象查看器。

        转到类型库并找到控件所在的库,例如,CommandButton 存储在 Microsoft Forms 2.0 对象库中。右键单击库并选择视图。找到代表控件的 coclass 并选择它:

        可以看出,CommandButton 的默认接口是 ICommandButton,当您检查 ICommandButton 时会查找 dispid 为 0 的属性。CommandButton 的 dispid 0 属性的 IDL 是:

        [id(00000000), propput, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
        void Value([in] VARIANT_BOOL rhs);
        [id(00000000), propget, bindable, displaybind, hidden, helpcontext(0x001e8d04)]
        VARIANT_BOOL Value();
        

        显示默认属性。

        【讨论】:

          【解决方案4】:

          你可以访问代码,寻找

          不幸的是,我无法访问大多数控件的代码。但是,该链接对 Microsoft 控件很有用,但我仍然想知道其他控件的方法。

          【讨论】:

            猜你喜欢
            • 2012-09-27
            • 1970-01-01
            • 2010-10-07
            • 2013-12-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-28
            • 2012-10-03
            相关资源
            最近更新 更多