你说的Declare *****  (****)这种声明方式只适用于真正的dll,而VB只能做Activex Dll不能做真正的动态连接库(VC可以),说白了,Activex Dll就是没有界面的ocx

解决方案 »

  1.   

    这个问题好像从哪见过?我还是再说一回吧。
    VB不能生成DLL,只能生成ACTIVEX DLL,这两种DLL不是一回事。你用的方法是调用一般DLL,即WINDOWS API的方法,要调用VB生成的ACTIVEX DLL要在‘工程’-->‘引用’里选好。
    然后用:
    dim dllinstance as myactivexdll
    set dllinstance=new myactivexdll
    或:
    dim dllinstance as new myactivexdll
    其中myactivexdll是你生成的ACTIVEXDLL的类名,dllinstance是这个类的实例,即一个对象变量。
      

  2.   

    第二个问题:
    "工程"->"工程属性"->"部件"->"版本兼容",选中"二进制兼容"
      

  3.   

    1.在class 或form的Terminate 终止时set ** close即可
    2。选择二进制兼容 
      

  4.   

    2 Herro: 
          我不是菜鸟,我只是菜虫而已.不过我会努力的. 
    2 All:
          这是一些在网站看到的代码.我改了一下.
          dim dllinstance as myactivexdll
    set dllinstance=new myactivexdll
      

  5.   

    要用declare调用得用C++写,其实并不难,VC自动为你建好框架,添代码就可以了。
      

  6.   

    2 Herro: 
          我不是菜鸟,我只是菜虫而已.不过我会努力的. ~!~
    2 All:
          这是一些在网站看到的代码.我改了一下.
          dim dllinstance as myactivexdll
          '''set dllinstance=new myactivexdll   不用new, 为什么??
          CopyMemory dllinstance,Form,4
          ....... 
          代码没有用到new,却用到一个API CopyMemory,但程序运行一点问题都没有.
          到底这么回事?  是不是new 和  CopyMemory  作用是一样的?
          
          我想知道ActiveX dll 的结构, Dll 结构 的资料.看看到底有什么不同.
          哪位能提供一些资料吗?
          Email:[email protected]
          感谢楼上各位的回答.分数我迟点会加的.      
      

  7.   

    如果 set x=form2.s
    那么以后X就是form2.s  这样在用时就不用再写form2.s了写X就行了,方便。如果 set x=new form2.s X就是FORM2.S的一个类的实例,一个点型的例子就是
    dim rs as adodb.recordset
    set rs=new adodb.recordset   'rs就是adodb.recordset类的一个实例,adodb.recordset
                    其实是adodb的一个子类,但在VB里子类没有明确说明。
      

  8.   

    对呀.我知道new是生成实例.  但是用了 CopyMenory 就能省掉了new.
    就是说,能不实例化,就能调用组件的函数.
    我对AcitveX Dll 结构不清楚,不知道  
        CopyMemory dllinstance,Form,4  
    的作用是什么. 拷贝了4字节的东西.其中Form 就是窗体.dllinstance 就是不实例化的组件.我还是需要ActiveX Dll 结构的资料. :(
    我的意思是:  不实例化组件,就调用里面的函数.可能不用常规方法.我基础太差.表达能力也有限.让大家见笑了.