我说明一下 这个程序是在一个没有标题框的窗口上用鼠标可以拖动 再在窗体上单击右键 可以显示出"a" 窗体代码为: Private Sub Form_Load() prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc End SubPrivate Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc End Sub 并且 FORM1.BORDERSTYLE=0
你用的是debug.print 'a'可能在程序运行时是在立即窗口上显示
搞定了! 不过注意!换一个常量。Public Const WM_NCLBUTTONDOWN = &HA1 Public Const WM_NCRBUTTONDOWN = &HA4Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_NCRBUTTONDOWN Then MsgBox "RBUTTONDOWN" End If WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then WndProc = HTCAPTION End If End Function
窗体代码为:
Private Sub Form_Load()
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
并且 FORM1.BORDERSTYLE=0
不过注意!换一个常量。Public Const WM_NCLBUTTONDOWN = &HA1
Public Const WM_NCRBUTTONDOWN = &HA4Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_NCRBUTTONDOWN Then
MsgBox "RBUTTONDOWN"
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
If Msg = WM_NCHITTEST And WndProc = HTCLIENT Then
WndProc = HTCAPTION
End If
End Function