vb怎样让自己的程序窗体跟着某窗体移动?

dawa123 2010-04-12 10:57:10
想做条封条封着QQ登录窗口的帐号,拖动QQ的窗口,封条也跟着走,不让人看到帐号,
以前我都做过的了,现在想不起来用什么办法了,精通的指点迷津啊,最好写出代码,
...全文
67 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
东方之珠 2010-04-13
  • 打赏
  • 举报
回复
'窗体Form1代码。
'再添加一个窗体Form2。
Option Explicit

Private Sub Form_Load()
Form2.Show
HookForm Me.hwnd
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHookForm Me.hwnd
End Sub


'标准模块
Option Explicit

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 Long
Public Const WM_MOVE = &H3&
Public Const GWL_WNDPROC = -4
Public PrevProc As Long


Public Sub HookForm(F As Long)
PrevProc = SetWindowLong(F, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Long)
If PrevProc Then
SetWindowLong F, GWL_WNDPROC, PrevProc
PrevProc = 0
End If
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_MOVE Then
Form2.Move Form1.Left + 3000, Form1.Top + 3000
End If
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
End Function
threenewbee 2010-04-12
  • 打赏
  • 举报
回复
subclass wm_move 消息。
然后移动另一个窗口。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧