没有标题栏的窗体的移动算法?

黑暗的救赎 2003-09-14 10:05:36
在编写一个没有标题栏窗体时:
我想用鼠标移动它,但编写的程序在移动时不是很理想?
请问大侠们是怎么处理这样的问题的?
非常感谢!!!!
...全文
29 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhgj 2003-09-14
  • 打赏
  • 举报
回复
拖动是有虚框

[DllImport("user32.dll",EntryPoint="SendMessage")]
public static extern int SendMessage(int hWnd,int wMsg,int wParam,int lParam);
[DllImport("user32.dll",EntryPoint="ReleaseCapture")]
public static extern int ReleaseCapture();
public const int WM_SysCommand = 0x0112;
public const int SC_MOVE = 0xF012;

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle.ToInt32(),WM_SysCommand,SC_MOVE,0);
}


拖动时没虚框

public static int MouseX;
public static int MouseY;
public static bool isMove;
public static int CurrX;
public static int CurrY;

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMove = true;
MouseX = e.X;
MouseY = e.Y;
}
}

private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMove == true)
{
CurrX = Form1.ActiveForm.Left - MouseX + e.X;
CurrY = Form1.ActiveForm.Top - MouseY + e.Y;
Form1.ActiveForm.Left = CurrX;
Form1.ActiveForm.Top = CurrY;
}
}

private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left){isMove = false;}
}
《delphi程序开发范例宝典(第3版)》全面介绍了delphi程序开发所用到的技术和技巧,共分19章,内容包括窗体与界面设计、控件应用、数据处理技术、图形技术、多媒体技术、文件系统、操作系统与window相关程序、注册表、数据库技术、sql查询相关技术、打印与报表技术、图表技术、硬件相关开发技术、网络开发技术、web编程、数据结构与算法、delphi语言基础、加密/安全与软件注册、实用工具、程序打包等。全书共提供500多个实例,每个实例都突出了其实用性。    《delphi程序开发范例宝典(第3版)》适用于delphi编程人员,也可供大中专院校相关专业的师生学习参考。 《delphi程序开发范例宝典(第3版)》 第1章 窗体与界面设计 1 1.1 菜单应用 2 实例001 在系统菜单中添加菜单项 2 实例002 带历史信息的菜单 3 实例003 菜单动态合并 4 实例004 像“开始”菜单一样漂亮的菜单 5 实例005 多彩的菜单 6 实例006 可以拉伸的菜单界面 8 1.2 工具栏设计 9 实例007 带背景的工具栏 9 实例008 浮动工具栏 10 1.3 状态栏设计 11 实例009 在状态栏中显示检查框 11 实例010 带进度条的状态栏 12 实例011 状态栏中加入图标 13 1.4 导航菜单界面 14 实例012 outlook界面 14 实例013 带导航菜单的主界面 15 实例014 图形化的导航界面 16 .1.5 特色程序界面 18 实例015 类qq的程序界面 18 实例016 类似windows xp的程序界面 20 实例017 以图形按钮显示的界面 22 实例018 以树型显示的程序界面 23 实例019 以xpmanifest组件显示界面 25 实例020 动态按钮的窗体界面 26 1.6 特殊形状的窗体 28 实例021 非矩形窗体 28 实例022 建立字体形状窗体 29 1.7 多媒体光盘 30 实例023 自动启动的多媒体光盘程序 30 实例024 为触摸屏程序添加虚拟键盘 31 实例025 触摸屏系统 32 1.8 窗体效果 34 实例026 半透明渐显窗体 34 实例027 窗口颜色的渐变 35 实例028 带背景的窗体 36 实例029 为窗体增加边框 37 1.9 窗体动画 38 实例030 窗体中的滚动字幕 38 实例031 动画显示窗体 39 实例032 制作闪烁的窗体 40 实例033 直接在窗体上绘图 41 实例034 动画形式的程序界面 42 实例035 以时钟显示界面窗体 43 1.10 标题栏窗体 45 实例036 标题栏上的按钮 46 实例037 使窗体标题栏文字右对齐 48 实例038 没有标题栏但可以改变大小的窗口 48 1.11 设置窗体位置 49 实例039 不可移动窗体 50 实例040 设置窗体在屏幕中的位置 51 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制窗体大小 53 实例043 获取桌面大小 54 实例044 组件大小随窗体的改变而改变 54 实例045 在窗口间移动按扭 55 实例046 如何实现office助

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧