如若调用VB API 禁止窗口移动

如果调用VB API 禁止窗口移动
如果调用VB API 禁止窗口移动
------解决思路----------------------
subclass窗体,吃掉wm_move消息。
google sendwindowlong wndproc wm_move byval as long addressof
------解决思路----------------------
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert  As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, Optional ByVal wFlags As Long = 0&) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Function SetWindowMoveAble(ByVal hWnd As Long, Optional ByVal MoveAble As Boolean =True) As Boolean

'function: SetWindowMoveAble
'  params:
'          hWnd: 一个*窗口句柄
'          MoveAble: 是否可移动
'  result: 与参数 Moveable 的设置一样,否则即为失败

Dim mhandle As Long
If MoveAble Then _
  GetSystemMenu hWnd, 1&: _
  DrawMenuBar hWnd _
Else _
  mhandle = GetSystemMenu(hWnd, 0&): _
  SetWindowMoveAble = DeleteMenu(mhandle, &HF010&)

End Function


或者子类化窗口, 吃掉 wm_ncmosemove