'以下代码在VB6上测试通过 Public Type WNDCLASSEX cbSize As Long style As Long lpfnWndProc As Long cbClsExtra As Long cbWndExtra As Long hInstance As Long hIcon As Long hCursor As Long hbrBackground As Long lpszMenuName As String lpszClassName As String hIconSm As Long End Type Public Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long Public Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" (pcWndClassEx As WNDCLASSEX) As Integer Public Declare Function LoadIcon1 Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As String) As Long Public Declare Function UnregisterClass Lib "user32" Alias "UnregisterClassA" (ByVal lpClassName As String, ByVal hInstance As Long) As Long Public Const CS_HREDRAW = &H2 Public Const CS_VREDRAW = &H1 Public Const COLOR_WINDOW = 5Function myWndProc(HWND As Long, WM As Long, W As Long, L As Long) As LongEnd FunctionFunction WndProcToLong(ByVal lpWndProc As Long) As Long WndProcToLong = lpWndProc End FunctionFunction MyRegisterClass(hInstance As Long) As Integer Dim wcex As WNDCLASSEX wcex.cbSize = 48 'sizeof(WNDCLASSEX) wcex.style = CS_HREDRAW Or CS_VREDRAW wcex.lpfnWndProc = WndProcToLong(AddressOf myWndProc) wcex.cbClsExtra = 0 wcex.cbWndExtra = 0 wcex.hInstance = hInstance wcex.hIcon = LoadIcon(hInstance, "IDI_SOCKSEVER") wcex.hCursor = LoadCursor(hInstance, "IDC_ARROW") wcex.hbrBackground = COLOR_WINDOW + 1 wcex.lpszMenuName = "IDC_SOCKSEVER" wcex.lpszClassName = "VB6WindowClass" wcex.hIconSm = LoadIcon(wcex.hInstance, "IDI_SMALL") MyRegisterClass = RegisterClassEx(wcex) End FunctionSub main() Dim lClass As Long lClass = MyRegisterClass(App.hInstance) If lClass <> 0 Then MsgBox "success" Else MsgBox "fail" End If'.....If lClass <> 0 Then Call UnregisterClass("VB6WindowClass", App.hInstance) End If End Sub
Public Type WNDCLASSEX
cbSize As Long
style As Long
lpfnWndProc As Long
cbClsExtra As Long
cbWndExtra As Long
hInstance As Long
hIcon As Long
hCursor As Long
hbrBackground As Long
lpszMenuName As String
lpszClassName As String
hIconSm As Long
End Type
Public Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long
Public Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" (pcWndClassEx As WNDCLASSEX) As Integer
Public Declare Function LoadIcon1 Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long
Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As String) As Long
Public Declare Function UnregisterClass Lib "user32" Alias "UnregisterClassA" (ByVal lpClassName As String, ByVal hInstance As Long) As Long
Public Const CS_HREDRAW = &H2
Public Const CS_VREDRAW = &H1
Public Const COLOR_WINDOW = 5Function myWndProc(HWND As Long, WM As Long, W As Long, L As Long) As LongEnd FunctionFunction WndProcToLong(ByVal lpWndProc As Long) As Long
WndProcToLong = lpWndProc
End FunctionFunction MyRegisterClass(hInstance As Long) As Integer
Dim wcex As WNDCLASSEX
wcex.cbSize = 48 'sizeof(WNDCLASSEX)
wcex.style = CS_HREDRAW Or CS_VREDRAW
wcex.lpfnWndProc = WndProcToLong(AddressOf myWndProc)
wcex.cbClsExtra = 0
wcex.cbWndExtra = 0
wcex.hInstance = hInstance
wcex.hIcon = LoadIcon(hInstance, "IDI_SOCKSEVER")
wcex.hCursor = LoadCursor(hInstance, "IDC_ARROW")
wcex.hbrBackground = COLOR_WINDOW + 1
wcex.lpszMenuName = "IDC_SOCKSEVER"
wcex.lpszClassName = "VB6WindowClass"
wcex.hIconSm = LoadIcon(wcex.hInstance, "IDI_SMALL")
MyRegisterClass = RegisterClassEx(wcex)
End FunctionSub main()
Dim lClass As Long
lClass = MyRegisterClass(App.hInstance)
If lClass <> 0 Then
MsgBox "success"
Else
MsgBox "fail"
End If'.....If lClass <> 0 Then
Call UnregisterClass("VB6WindowClass", App.hInstance)
End If
End Sub