'类模块
Option Explicit
Private hFrame As Long
'--------------------------------------------------------------------------------------
Private Sub Class_Initialize()
        Dim lpWndClass As WNDCLASSEX
        With lpWndClass
            .cbSize = Len(lpWndClass)
            .hbrBackground = COLOR_WINDOW
            .hIcon = LoadIcon(0, IDI_APPLICATION)
            .hIconSm = LoadIcon(0, IDI_APPLICATION)
            .hCursor = LoadCursor(0, IDC_ARROW)
            .hInstance = App.hInstance
            .lpszClassName = szFrameClass
            .lpszMenuName = ""
            .style = CS_DBLCLKS
            .lpfnWndProc = GetAddress(AddressOf WndProc)
            .cbWndExtra = 0
            .cbClsExtra = 0
        End With
        Call RegisterClassEx(lpWndClass)                                        '注册Frame窗口类
        hFrame = CreateWindowEx(0, szFrameClass, "", WS_OVERLAPPEDWINDOW, 0, 0, 200, 200, HWND_DESKTOP, 0, _
        App.hInstance, ByVal 0)                                                '创建Frame窗口
        Call ShowWindow(hFrame, SW_SHOWNORMAL)                                  '显示Frame窗口
        lCount = lCount + 1                                                    '引用计数加1
End Sub
'--------------------------------------------------------------------------------------
Public Function FrameProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
       Select Case wMsg
              Case Else
                   FrameProc = DefWindowProc(hWnd, wMsg, wParam, lParam)        '默认窗口处理
       End Select
End Function
'--------------------------------------------------------------------------------------
Private Sub Class_Terminate()
        lCount = lCount - 1                                                    '引用计数减1
        If lCount = 0 Then Call UnregisterClass(szFrameClass, App.hInstance)    '撤消Frame窗口类注册(引用计数为0)
End Sub
'标准模块:
Option Explicit
Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
'创建窗口
Public Declare Function RegisterClassEx Lib "user32" Alias "RegisterClassExA" (pcWndClassEx As WNDCLASSEX) As Long
'注册窗口类
Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
'装载光标
Public Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long
'装载图标
Public Declare Function UnregisterClass Lib "user32" Alias "UnregisterClassA" (ByVal lpClassName As String, ByVal hInstance As Long) As Long
'撤消窗口类注册
Public Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'默认窗口处理
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
'显示窗口
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 Const SW_SHOWNORMAL = &H1
Public Const IDI_APPLICATION = &H7F00
Public Const IDC_ARROW = &H7F00
Public Const COLOR_WINDOW = &H6
Public Const CS_DBLCLKS = &H8
Public Const WS_OVERLAPPEDWINDOW = &HCA0000
Public Const HWND_DESKTOP = &H0
Public Const szFrameClass = "FrameClass"
Public lCount As Long
'--------------------------------------------------------------------------------------
Public Function WndProc(ByVal hFrame As FrameClass, ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
       WndProc = hFrame.FrameProc(hWnd, wMsg, wParam, lParam)
End Function
'--------------------------------------------------------------------------------------
Public Function GetAddress(ByVal dwAddress As Long) As Long
       GetAddress = dwAddress
End Function
'窗口模块
Private ee As FrameClass
Private cc As FrameClassPrivate Sub Form_Load()
        Set ee = New FrameClass
        Set cc = New FrameClass
End SubPrivate Sub Form_Unload(Cancel As Integer)
        Set ee = Nothing
        Set cc = Nothing
End Sub
请教高手!