不让拖动的标题栏, 双击标题栏无反应
2010-08-07 07:36
141 查看
C# 中怎样不能拖动窗体,使其固定在一个位置。
第1种: 用API去掉系统菜单的“移动”菜单项, 完美的解决方案
第2种: 去掉标题栏的系统菜单, 点右键自然无效, 不推荐
第三种,重载WndProc
第1种: 用API去掉系统菜单的“移动”菜单项, 完美的解决方案
using System; using System.Windows.Forms; using System.Runtime.InteropServices; class Test : Form { const int MF_BYPOSITION = 0x0400; const int MF_REMOVE = 0x1000; [DllImport("user32.dll",EntryPoint="GetSystemMenu")] extern static IntPtr GetSystemMenu(IntPtr hWnd, IntPtr bRevert); [DllImport("user32.dll",EntryPoint="RemoveMenu")] extern static int RemoveMenu(IntPtr hMenu, int nPos, int flags); Test() { Text = "不能移动和改变大小的窗口"; FormBorderStyle = FormBorderStyle.FixedSingle; MaximizeBox = false; MinimizeBox = false; RemoveMenu(GetSystemMenu(Handle,IntPtr.Zero),1,MF_BYPOSITION|MF_REMOVE); } static void Main() { Application.Run(new Test()); } }
第2种: 去掉标题栏的系统菜单, 点右键自然无效, 不推荐
using System.Windows.Forms; class Test : Form { Test() { Text = "去掉系统菜单的标题栏"; FormBorderStyle = FormBorderStyle.FixedSingle; MaximizeBox = false; MinimizeBox = false; } const int WS_SYSMENU = 0x00080000; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style = cp.Style & ~WS_SYSMENU; return cp; } } static void Main() { Application.Run(new Test()); } }
第三种,重载WndProc
protected override void WndProc(ref Message m) { if (m.Msg == 0xa1 && (int)m.WParam == 0x3) { return; } if (m.Msg == 0xa3 && ((int)m.WParam == 0x3 || (int)m.WParam == 0x2)) { return; } if (m.Msg == 0xa4 && ((int)m.WParam == 0x2 || (int)m.WParam == 0x3)) { return; } if (m.Msg == 0x112 && (int)m.WParam == 0xf100) { return; } base.WndProc(ref m); }
相关文章推荐
- C#禁止拖动的标题栏, 双击标题栏无反应
- 不让拖动的标题栏, 双击标题栏无反应
- QT自定义窗口标题栏实现拖动双击放大缩小
- WM_SYSCOMMAND包括很多功能,比如:拖动左边框、拖动标题栏、滚动条滚动、点击最小化、双击标题栏——Delphi 通过事件代替了大部分常用的消息,所以Delphi 简单、易用、高效
- 如何禁止双击标题栏不改变窗口的大小和拖动标题栏窗口不移动的问题
- c#禁止通过拖动,双击标题栏改变窗体大小
- [Win32]只允许最大化最小化窗口,禁止双击标题栏、拖动窗体、点击复原按钮来改变窗口大小
- 遮罩层提示框,可拖动标题栏(兼容FF)
- android双击图片放大,放大拖动的简单功能
- IE双击不能打开没反应只能用管理员权限运行怎么办
- 不用标题栏拖动窗口最简单的方法
- IDEA 32位正常,64位双击没反应,打不开
- 使窗口只能保持永远最大化(屏蔽标题栏双击,绝对不闪)
- QtWidget: 鼠标拖动窗口(没有标题栏时)
- C#拖动自己的定义标题栏(panel)以及实现窗体拖动关闭和最小化
- android 实现了知乎日报的大部分功能,增加双击标题栏回到顶部以及双击 webview 返回两个实用功能
- Winform 防止双击标题栏改变窗体大小 、移动窗体
- 怎么屏蔽鼠标所有左键消息在标题栏上(鼠标双击/单击系统图标,双击标题栏,最小化,最大化,关闭按钮)
- c#中实现双击标题栏关闭窗体
- C# WinForm 禁止最大化、最小化、双击标题栏、双击图标等操作