2016-02-28 283 views
1

我已反編譯舊的Visual Basic 6項目,並使用安裝在Windows XP虛擬機上的Visual Basic 6打開它。Visual Basic 6 - 編譯錯誤:用戶定義類型未定義

當我試圖重新編譯代碼我得到的錯誤「編譯錯誤:沒有定義的用戶定義類型」爲這行代碼 -

Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long 

據我所知,他的功能是USER32 Windows的一部分圖書館。

我試圖添加user32.dll作爲組件/參考,沒有運氣。

回答

4

添加user32.dll作爲組件/參考將不是工作。您必須明確聲明您要使用的所有Win32 API類型和函數。 VB 6包含了API Viewer,它可以幫助你解決這個問題,儘管它非常過時。

據推測,這不是此處定義的用戶定義類型是RECT。它是由Win32頭文件定義的結構,但除非您自己聲明,否則VB不會知道它。

Public Type RECT 
    Left As Long 
    Top As Long 
    Right As Long 
    Bottom As Long 
End Type 

也可以更改的lpRect數據類型到As Any爲了允許一個空指針傳遞(例如ByRef 0)。這會使控件的整個區域無效。

Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, _ 
                 ByRef lpRect As Any, _ 
                 ByVal bErase As Long) As Long