vb 有关sendmessage

来源:百度知道 编辑:UC知道 时间:2024/05/25 04:19:32
sendmessage函数中
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'在窗体的MouseDown事件中添加以下代码
If Button = 1 Then
Call ReleaseCapture '释放鼠标控件权
Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)

End If
End Sub
HTCAPTION = 2什么意思 还见过HTleft HTtop 这里的HT是什么意思? 谢谢回答

HT是HitTest缩写
HTCAPTION = 2是一个消息常量,你也可以自己定义名称。
比如:点击标题栏=2,那么你调用sendmesage时就可以像下面这样写
Call SendMessage(hwnd, WM_NCLBUTTONDOWN, 点击标题栏, 0)

SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
这句模拟鼠标按下了标题栏(这样就可以开始拖动了)

Private Const HTCAPTION = 2
都是消息常量 十六进制数用英文常量代替更容易让人理解
点击的是标题栏 产生这个消息HTCAPTION
HTleft 鼠标是在左边界
HTtop 上方