2015-10-14 72 views
0

我有一个公共子SysSetSizeDisp(eSize1,eSize2)的DLL。 当我通过外部项目调用此子系统时,系统返回错误32797. 我尝试注销并注册我的dll,声明变量,然后设置“新语句”。 有人知道这个问题吗?VB6错误32797使用sizeform从创建的dll,如何解决?

这里我的功能代码:

Public Sub SysSetSizeDisp(eSmall As eBsDispSize, eBig As eBsDispSize) 
Const STG_FUNC As String = "SysSetSizeDisp" 

Dim fK As Single 
Dim fRH As Integer 
Dim fRW As Integer 

    If eSmall > eBig Then Exit Sub 

    If DpyCnf.WinSizeMax = SysDpyGetCurrentResolution() Then 
     fRH = -H_TESTATA/Screen.TwipsPerPixelY 
     fRW = -135/Screen.TwipsPerPixelY 
    Else 
     fRH = 0 
     fRW = 0 
    End If 

    Select Case eSmall 
    Case Is = eDSize320x240 
     fSCALA1W = 320 * Screen.TwipsPerPixelX 
     fSCALA1H = 240 * Screen.TwipsPerPixelY 
    Case Is = eDSize640x480 
     fSCALA1W = 640 * Screen.TwipsPerPixelX 
     fSCALA1H = 480 * Screen.TwipsPerPixelY 
    Case Is = eDSize800x600 
     fSCALA1W = 800 * Screen.TwipsPerPixelX 
     fSCALA1H = 600 * Screen.TwipsPerPixelY 
    Case Is = eDSize1024x768 
     fSCALA1W = 1024 * Screen.TwipsPerPixelX 
     fSCALA1H = 768 * Screen.TwipsPerPixelY 
    Case Is = eDSize1152x864 
     fSCALA1W = 1152 * Screen.TwipsPerPixelX 
     fSCALA1H = 864 * Screen.TwipsPerPixelY 
    Case Is = eDSize1280x960 
     fSCALA1W = 1280 * Screen.TwipsPerPixelX 
     fSCALA1H = 960 * Screen.TwipsPerPixelY 
    Case Is = eDSize1280x1024 
     fSCALA1W = 1280 * Screen.TwipsPerPixelX 
     fSCALA1H = 1024 * Screen.TwipsPerPixelY 
    Case Is = eDSize1600x1280 
     fSCALA1W = 1600 * Screen.TwipsPerPixelX 
     fSCALA1H = 1280 * Screen.TwipsPerPixelY 
    End Select 

    Select Case eBig 
    Case Is = eDSize320x240 
     fSCALA2W = 320 * Screen.TwipsPerPixelX 
     fSCALA2H = 240 * Screen.TwipsPerPixelY 
    Case Is = eDSize640x480 
     fSCALA2W = (640 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (480 + fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize800x600 
     fSCALA2W = (800 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (600 - fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize1024x768 
     fSCALA2W = (1024 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (768 + fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize1152x864 
     fSCALA2W = (1152 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (864 + fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize1280x960 
     fSCALA2W = (1280 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (960 + fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize1280x1024 
     fSCALA2W = (1280 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (1024 + fRH) * Screen.TwipsPerPixelY 
    Case Is = eDSize1600x1280 
     fSCALA2W = (1600 + fRW) * Screen.TwipsPerPixelX 
     fSCALA2H = (1280 + fRH) * Screen.TwipsPerPixelY 
    End Select 

    fK = 9675/9600 

    fSCALA1W = fSCALA1W * fK 
    fSCALA1H = fSCALA1H * fK 
    fSCALA2W = fSCALA2W * fK 
    fSCALA2H = fSCALA2H * fK 

    DpyCnf.WinSizeMin = eSmall 
    DpyCnf.WinSizeMax = eBig 

    Exit Sub 
EH: 
    Debug.Assert False 
    cErr.MemoSave Err, STG_ME & "." & STG_FUNC 
End Sub 
+0

什么是DpyCnf,eBsDispSize等等?如果SysSetSizeDisp是表单,类或公共模块的方法?没有足够的信息。 – milevyo

+0

eBsDispSize是枚举,表示屏幕大小,dpyCnf是一种类型,其中定义了简单类型变量和两个枚举eBsDispSize变量。所有在公共模块 –

+0

我见过,被拒绝访问所有的DLL的方法,在课堂上或在模块中。 –

回答

0

解决, 我重新编译的DLL,清理注册表,DLL的未注册的最后一个版本,然后再重新注册它(无修改DLL源)。 可能有些引用已损坏

相关问题