| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1121 人关注过本帖
标题:怎么样用鼠标控制窗体的移动
只看楼主 加入收藏
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
收藏
 问题点数:0 回复次数:9 
怎么样用鼠标控制窗体的移动
怎么样用鼠标控制窗体的移动
有没有现成的函数可以调用
搜索更多相关主题的帖子: 鼠标 窗体 
2007-01-03 16:41
ruihua
Rank: 1
等 级:新手上路
威 望:1
帖 子:235
专家分:0
注 册:2006-2-21
收藏
得分:0 
我给你说一下大概的思路吧!控制窗体移动的方法是:根据Mouse移动相应的调整窗体的top以及left属性。通常是按下mouse再以拖动的方式移动窗体.用一个bool变量记下mouse的状态,然后在mouse按下的时候记下mouse的位置,在mouse移动的过程中相应调整窗体的left及top就可以了.

2007-01-03 18:39
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 

API 有两个函数。

private const int HTCAPTION = 0x0002;
private const int WM_NCLBUTTONDBLCLK = 0x00A3;

[DllImport("user32.dll", EntryPoint="SendMessageA")]
public static extern int SendMessage(int hWnd, int wMsg, int wParam, int lParam);

[DllImport("user32.dll", EntryPoint="ReleaseCapture")]
public static extern int ReleaseCapture(void);


MOUSEDOWN写入
ReleaseCapture();
SendMessage(this.Handle.ToInt32(), WM_NCLBUTTONDOWN, HTCAPTION, 0);
OK,搞定。


XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-04 08:10
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 
我试下楼上的高手的方法,鼠标移到窗体时窗体不断地变换大小.
俺不懂这个是什么原理,大佬,能否介绍一下?

实践、学习、再实践、再学习......
2007-01-04 11:09
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
private const int WM_SysCommand = 0x0112;
private const int OneMsgNum = 0xf017;
[DllImport("user32")]
private static extern bool ReleaseCapture();
[DllImport("user32")]
private static extern bool PostMessage(int hWnd, int Mwg, int wParam, int lParam);

在MOUSEDOWN里面加入
ReleaseCapture();
PostMessage((int)this.front.Handle, WM_SysCommand, OneMsgNum, 0);

那种效果是向系统发送的参数有误,OX0012和OXF017才好,
ReleaseCapture();是捕获MOUSE坐标,
第二个是向系统发送当时消息,通知要移动

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-04 11:21
myh0420
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-1-7
收藏
得分:0 
可以写两事件
一个是鼠标按下时的事件,这是记录鼠标的相对窗体的位置
另一个就是鼠标移动时的事件 记录鼠标现在的位置,计算两者的差距(offset())把这个点给窗体的Location就行了
2007-01-07 12:35
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
可以获取鼠标的坐标控制窗体的大小或位置.

飘过~~
2007-01-07 15:09
yigedaizi
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2006-11-24
收藏
得分:0 
   this.Location = new Point(MousePosition.X, MousePosition.Y);

layman on C#
2007-01-07 21:10
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 

用API虽然不知道里面的是怎么写的,但实现是绝对没有问题的,就是5楼用法,这些API都是系统的用法方便,代码简便,但初学最好搞清原理上的事


XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-08 08:02
游戏使者
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2005-8-24
收藏
得分:0 
好像是用了一种欺骗行为,,,就是点击窗体部分时,通过设置某一个值,让它觉得是点击的标题,我做VC时做过,
在C#里刚学不到一个月,没时间研究那些没用的烂知识点。。。

写程序像做爱一样,质量的好坏完全取决于心情……
2007-01-08 17:32
快速回复:怎么样用鼠标控制窗体的移动
数据加载中...
 
   



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

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