vb 拖动窗体时如何让另一个窗体也跟着移动,用windows api
vb 拖动窗体时怎么让另一个窗体也跟着移动,用windows api
在vb中怎么实现,拖动一个窗体时,另一个窗体也随之改变。类似于千千静听一样。
注:用windows api实现。
大侠们,帮帮忙。在此先谢过了
------解决方案--------------------
在vb中怎么实现,拖动一个窗体时,另一个窗体也随之改变。类似于千千静听一样。
注:用windows api实现。
大侠们,帮帮忙。在此先谢过了
------解决方案--------------------
- VB code
Option Explicit Private Const HWND_TOPMOST = -1 Private Const SWP_NOSIZE = &H1 Private Const WM_SYSCOMMAND = &H112& Private Const SC_MOVE = &HF012& Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 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 Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Button = vbLeftButton Then Call ReleaseCapture SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0 Form2.Left = Form1.Left Form2.Top = Form1.Top + Form1.Height + 5 End If End Sub Private Sub Form_Load() Me.BorderStyle = 0 Form2.Show Form2.BorderStyle = 0 Form2.Left = Form1.Left Form2.Top = Form1.Top + Form1.Height + 5 End Sub
------解决方案--------------------
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
这俩是可以解决,看你怎么写了,首先要不停的判断那个所谓的QQ有没有移动
然后
ReleaseCapture
SendMessage hwnd, &HA1, 2, 0 '让被点中的(mousedown)窗口跟着鼠标移动的轨痕走
------解决方案--------------------
- VB code
'form1代码 Private Sub Form_Load() prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc Form2.Show End Sub Private Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc End Sub