有关在dll中动态向主程序窗体加载控件的问题dll中类名ClsTest 工程名MyTest
dim withevents objCmd as VB.CommandButtonpublic sub Init(frm as Form)
    set objCmd=form.controls.add("VB.CommandButton","objCmd").
    ojcmd.visible=true 
end sub
                        
在dll中写
sub objCmd_CLick()
   msgbox "testing"
end sub编译为MyTest.dll然后另开一工程调用这个dll
主程序:添加一Form窗体。一按钮CommandButton1
private Sub CommandButton_Click()
   dim aa as object
   set aa=createobject("MyTest.dll")
   aa.init me
end sub问题:  添加的按钮的单击事件没有响应,就是没有弹出testing消息。

解决方案 »

  1.   

    Dim aa As MyTest
     Set aa= New MyTest
      

  2.   

    查看-》引用
    選擇你的dll
      

  3.   

    sub objCmd_CLick()
       msgbox "testing"
    end sub
    ==========================================================
    你没有事件触发它,怎么会运行呢?dim withevents objCmd as VB.CommandButtonpublic sub Init(frm as Form)
        set objCmd=form.controls.add("VB.CommandButton","objCmd").
        ojcmd.visible=true 
    end sub
                            
    在dll中写
    sub objCmd_CLick()
       msgbox "testing"
    end sub编译为MyTest.dll然后另开一工程调用这个dll
    主程序:添加一Form窗体。一按钮CommandButton1
    private Sub CommandButton_Click()
       dim aa as ClsTest
       set aa=New ClsTest 
       aa.init me
       call objCmd_CLick
    end sub
      

  4.   

    回JunKi:那个事件不用在过程中触发,等在调用程序中的Form中加载后,手动点击,我要的就是看能不能由点击来触发自定义的那个objCmd_click事件。
    另外:本人,没有蔑视任何人的意思。所谓菜鸟就是那种不看问题本身,随便跟贴的人。我觉得我的问题已经说的很明白了,那种随便跟贴的人根本就没有去研究我的问题所在。其实你随便按我写的步骤演绎一下,就可以看到效果,纸上谈兵是没用的。
      

  5.   

    菜鸟  来看看 认为是高手的人是什么问题  
    你不也是刚刚才学 掉DLL里的东西吗!但楼上大哥别骂人啊  他是也菜鸟的  和我们一样的
      

  6.   

    好象只是一个低级错误
    public sub Init(frm as Form)
        set objCmd=form.controls.add("VB.CommandButton","objCmd").
        '          ^^^^^
        ojcmd.visible=true 
    end sub
    应该是 frm.controls.add 吧
      

  7.   

    public sub Init(frm as Form)
    set objCmd=frm.controls.add("VB.CommandButton","objCmd").
    'left,top,height,width需要指定
    ojcmd.visible=true
    end sub
      

  8.   

    楼主你搞混了事件这个概念,所谓事件其实是一个实例化的类对象提供给外部调用者的一个接口,可是你却要这个类去接收CLICK事件,能行吗?在类里只能RAISE一个设定事件,然后外部调用者感知该事件后再决定执行哪些代码。所以你的所谓objCmd_CLick()只能看成是该类的一个公共方法,调用的人可以使用,但和你的所谓CLICK事件没有任何关系!你看你一个简单的求助帖就因为你的多余的话引来这么多无谓的争执,其实很多你不懂的东西并不见得就是什么高深的问题,平常心就可以了。
      

  9.   

    补充一点,如果真要感知用户CLICK事件,就必须为你创建的BUTTON写消息处理函数,但这种办法和要类去接收用户事件还是一点关系都没有。
      

  10.   

    我这里的Click事件是必须要的,因为这个dll是作为插件来由主程序调用的,所以点击处理事件不能放在主程序中的。
      

  11.   

    那就按我后面补充的为创建的BUTTON写消息处理过程。没其他好办法了。