| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1311 人关注过本帖
标题:表单相黏问题
只看楼主 加入收藏
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:485
专家分:919
注 册:2012-10-26
结帖率:95.45%
收藏
 问题点数:0 回复次数:3 
表单相黏问题
不知道这问题有没有人提过,除了用Timer及时侦测外,
有没有其他方式,可以在A和B两个表单同时出现时,
让B表单随着A表单的移动,而跟这移动?

实验后发现Form上的SystemMenu好像不在Form的事件控制范围内
搜索更多相关主题的帖子: Form 范围 事件 移动 表单 
2022-04-20 11:13
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:485
专家分:919
注 册:2012-10-26
收藏
得分:0 
若不行,退一步,只好让表单不能移动来解决,一开始就先订好主表单和副表单在屏幕上的相对位置。
使用RemoveMenu hMenu, 1, MF_BYPOSITION '移除移动选项
但是这API会开启Form_Resize()事件功能

若使用DeleteMenu(hMenu, SC_SIZE, MF_BYCOMMAND)
Form能移动但是Form_Resize()事件功能则会变无效

[此贴子已经被作者于2022-4-20 11:37编辑过]


不要投我
2022-04-20 11:24
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:0 
试着向 B表彰发送 移动的消息看看。太久了不记得了。感觉应该可以。

授人于鱼,不如授人于渔
早已停用QQ了
2022-04-23 18:23
xiaofisher
Rank: 1
等 级:新手上路
威 望:1
帖 子:3
专家分:0
注 册:2022-4-21
收藏
得分:0 
向工程中添加两个窗体Form1、Form2和一个模块,名称随意
模块代码:
程序代码:
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 GWL_WNDPROC = (-4)
Public Const WM_MOVE = &H3

Public lOldProc As Long

Public Function wndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_MOVE Then
        Call Form1.WindowMove
    End If
    wndProc = CallWindowProc(lOldProc, hWnd, Msg, wParam, lParam)
End Function

Form1代码:
程序代码:
Dim fm As Form2

Private Sub Form_Load()
    Set fm = New Form2
    fm.Show 0
    lOldProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf wndProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Unload fm
    SetWindowLong hWnd, GWL_WNDPROC, lOldProc
End Sub

Public Sub WindowMove()
    If Me.WindowState = vbMaximized Then Exit Sub
    If fm.Visible Then
        fm.Move Form1.Left + Form1.Width, Form1.Top
    End If
End Sub
2022-04-29 10:39
快速回复:表单相黏问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016032 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved