江南兄,关于您那个《<a href="http://blog.csdn.net/lyserver/archive/2010/03/26/5420762.aspx" title="一个简单的VB窗体类" target="_blank" >一个简单的VB窗体类</a>》我想再请教您个问题。就是我在您那个类里又加入了一个自己的函数,具体如下:Public Property Get Handle() As Long
    If m_hWnd <> 0& Then Handle = m_hWnd
End Property然后怎么我一运行VB6.exe就报应用程序错误啊!弹出如下的消息框:
  
当我把自己的这个函数注释掉后又恢复正常了,请问这是怎么回事儿呀?

解决方案 »

  1.   

    实在不好意思,我现在终于弄明白了!原来那个获得类成员函数指针的GetClassProcAddr函数中第一个参数Index必须指定当前类里已定义的函数数量。比如类里定义了20个函数,作用域无论是Public、Private还是Friend,只要将获得类成员函数指针的参数改为GetClassProcAddr(20, 4, True)就成了
      

  2.   

    需要注意的是,VB在编译时,会自动把Public的属性、函数、方法放在前边,然后是Friend,最后是Private,也就是说,如果源代码中有一个Public函数在Private函数后边,但计算位置时,要先算Public,然后再算Friend,最后是Private。