| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 567 人关注过本帖
标题:请问怎么移动无标题的窗体,因控件多以至用不了Form的有关事件
只看楼主 加入收藏
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
结帖率:90%
收藏
已结贴  问题点数:10 回复次数:7 
请问怎么移动无标题的窗体,因控件多以至用不了Form的有关事件
RT,因为控件多了点,所以Form_MouseDown等事件都没办法用上了,请问这时候怎么移动无标题的窗体?先谢谢了!
搜索更多相关主题的帖子: 移动 
2013-01-13 09:50
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
有大手能给出思路怎么弄么?
2013-01-16 10:56
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
你就让其中的一个控件(如某个标签,因为标签多作为显示用,没有响应鼠标键盘的功能)的MouseMove事件作为移动整个窗体的事件不就可以了。
2013-01-16 11:01
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
有多少个控件?
2013-01-16 15:32
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
回复 3楼 lowxiong
嗯,这个我也有想过,不过我是动态添加控件的,所以那些控件我也没法用得上MouseMove事件。
对于这个情况我想到另一种思路:可不可以监视鼠标坐标,如果鼠标mousedown 则记录窗体以及鼠标的坐标,鼠标mousemove时鼠标得到新坐标,窗体坐标也相应移动(不知道这样行得通不)。但是感觉有点复杂了!!所以想问问大手们有没有什么好方法。
2013-01-16 23:30
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
回复 4楼 bczgvip
这个真没数过,有些动态添加进去的,有些控件随鼠标的移动或者点击又有不同的事件。
2013-01-16 23:34
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:8 
程序代码:
Option Explicit

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 Const WM_NCLBUTTONDOWN As Long = &HA1
Private Const HTCAPTION As Long = 2

Private Sub Command1_Click(Index As Integer)
    Debug.Print "Command1_Click", Index
End Sub

Private Sub Form_Load()
    Dim w&, h&, i&, j&, n&
    w = Me.ScaleWidth \ Command1(0).Width
    h = Me.ScaleHeight \ Command1(0).Height
    n = w * h
    Command1(0).Caption = "0"
    For i = 1 To n - 1
        Load Command1(Command1.UBound + 1)
        Command1(Command1.UBound).Left = Command1(Command1.UBound - 1).Left + Command1(Command1.UBound - 1).Width
        Command1(Command1.UBound).Top = Command1(Command1.UBound - 1).Top
        If i Mod w = 0 Then
            Command1(Command1.UBound).Left = Command1(Command1.UBound - w).Left
            Command1(Command1.UBound).Top = Command1(Command1.UBound - 1).Top + Command1(Command1.UBound - 1).Height
        End If
        Command1(Command1.UBound).Caption = i
        Command1(Command1.UBound).Visible = True
    Next
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        Call ReleaseCapture
        Call SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&)
    End If
End Sub

Private Sub Command1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    Form_MouseMove Button, Shift, X, Y
End Sub
自己测试吧,添加一个按钮数组。话说,你是用别的移动窗口的方法吧?
2013-01-17 01:10
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:2 
简单点的方法~若是我我应该会找个背景透明的控件~
整个贴到窗体上变成一个虚拟的窗体~然后再用去MouseMove做移动~
因为透明使用者也不会知道~

不要選我當版主
2013-01-17 15:31
快速回复:请问怎么移动无标题的窗体,因控件多以至用不了Form的有关事件
数据加载中...
 
   



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

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