社区
C#
帖子详情
请教如何实现鼠标点住窗口的任何位置都能移动窗口?
sbf2000
2003-08-22 05:02:14
请教如何实现鼠标点住窗口的任何位置都能移动窗口?
...全文
81
5
打赏
收藏
请教如何实现鼠标点住窗口的任何位置都能移动窗口?
请教如何实现鼠标点住窗口的任何位置都能移动窗口?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chainet
2003-08-22
打赏
举报
回复
to ArLi2003(阿利 正版 大家帮忙找工作) :
你的代码也有一点点问题。窗体的最大最小和Close按键失效了。
chainet
2003-08-22
打赏
举报
回复
to weifenluo(weifenluo) :
问题1.确实存在。
问题2.好像没有出现你说的情况,因为在拖动时基本不可能在窗体外放开左键。
问题3。确实存在
因为没有考虑那么多,所以作为一个简单的功能实现还是可以用的。
weifenluo
2003-08-22
打赏
举报
回复
楼上的代码有几个问题:
1. 这种实现只对用户区的鼠标有效.在非用户区中不能拖动窗口;
2. 由于没有捕获鼠标, 可能出现在窗口之外放开左键, 因为isMouseDown仍然是true, 结果还是可以拖动窗口.
3. 按一下ALT-ESC切换到别的应用程序试试.
做一个Custom Drag-and-Drop比想象的要复杂一些, 需要:
1. 在WM_LBUTTONDOWN和WM_NCLBUTTONDOWN消息处理中,调用DragDetect(Win32 API) Capture Mouse到一个顶层窗口.并且把输入焦点设到该窗口.
2. 在该窗口程序中处理WM_MOUSEMOVE消息,直到WM_LBUTTONUP消息或ESC键按下.
3. 如果有WM_CANCELMODE或WM_CAPTURECHANGED也要终止
ArLi2003
2003-08-22
打赏
举报
回复
protected override void WndProc(ref Message msg) {
if (msg.Msg == 0x0084)
msg.Result = (IntPtr) 2;
else
base.WndProc(ref msg);
}
chainet
2003-08-22
打赏
举报
回复
private Point mouseOffset;
private bool isMouseDown;
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;
}
}
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int xOffset;
int yOffset;
if (e.Button == MouseButtons.Left)
{
xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height;
mouseOffset = new Point(xOffset, yOffset);
isMouseDown = true;
}
}
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = false;
}
}
asp.net知识库
HttpModule
实现
ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中
实现
页面模板(所谓的...
DOS 软盘+光盘+U盘+硬盘+NTFS 想拥有更强大的DOS功能??
选第6项只启动最基本的DOS,不加载config.sys和autoexec.bat及任何驱动和程序,键入win回车后不能启动Win98。 ②、Win9x与Win2000或XP、2003混合的系统: 开机启动后会出现如下图的菜单(以Win98和XP混合为例): ...
Python训练营103期开班典礼直播回放
#《5天Python闯关训练营》学习计划#挑战周期:12月16日—12月20日直播安排:开班典礼:12月16日晚8点,周老师为大家讲解本课的学习方法作业训练:12月20日晚8点,周老师为大家进行作业实战训练开班后大家可以先准备...
我使用的是C#语言,使用SetCursorPos 和 mouse_event函数控制
鼠标
移动
没问题。可是
移动
到某个
窗口
下
鼠标
位置
就会有随机偏差… 想
请教
下钩子函数可以给某个
窗口
发送
鼠标
移动
的指令吗? ...
好的。 您使用的是 C 语言。 C 语言是一种通用的、高级的、结构化的编程语言,在计算机科学领域有着广泛的应用。它为系统编程和应用编程提供了很多方便的功能,比如指针、数组、结构体、位运算等。...
Qt
实现
Linux下模拟点击界面,如何利用QT
实现
模拟
鼠标
点击?
我想利用QT
实现
一个模拟
鼠标
点击的功能(Windows平台),具体来说是这样的:首先获取某个特定名称
窗口
的句柄,然后再模拟单击这个
窗口
的特定
位置
,并且要求
窗口
可以不在桌面最前方显示(即是虚拟的点击,而不是把
鼠标
...
C#
110,539
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章