我想当鼠标在form标题栏(Caption)上面时,执行一段代码,如何实现?
解决方案 »
- MacromediaFlashPlayerActiveX不能从类名得到窗口句柄?
- 200元,寻求高人把c#代码改成vb代码。有意者留下联系方式,我会和你联系的。谢谢。
- 插入式写入文本
- 天气干燥,灌点水,同时祝贺RUKYO升任非技术半半猪
- 用VB代码将SQL Server的备份文件恢复到网络上的另外一台服务器的问题!
- 有关VB中图形绘制问题,在线等待
- 那位高手知道,如何判断一个字符串数组是否用被Erase?这里多谢了!
- ferrytang(ferry):怎样删除有文件的文件夹!急!这问题还没完
- VB做前台SQL做后台
- “传说”中的VC++和C++ Builer是否真的那样难学?请看-------
- 这个SQL怎么表达?其实就是二个如何相关连!
- 求助?如何将下面的数据放到 树上去
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Const GWL_WNDPROC = (-4)
Public Const WM_NCMOUSEMOVE = &HA0
Public PrevProc As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
If uMsg = WM_NCMOUSEMOVE Then
Debug.Print "鼠标在标题栏移动"
End If
End Function窗体代码:Private Sub Form_Load()
PrevProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, PrevProc
End Sub
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
这个相当于在MouseMove事件里面写代码,所以不适合调用运算量大的函数
我觉得最好加一个标记,当鼠标在标题栏移动时阻止它频繁地重复调用你的函数
当移动到边框,菜单栏等非客户区域的时候也会触发