'类模块
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
请教高手!
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
请教高手!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货