WPF 窗口自定义拉伸
2024-08-25 05:29:03
.NET技术交流群 199281001 .欢迎加入。
//自定义窗体拉伸 public HwndSource _HwndkaifaSource;
private const int WM_SYSCOMMAND = 0x112;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); private Dictionary<ResizeDirection, Cursor> cursors = new Dictionary<ResizeDirection, Cursor>
{
{ResizeDirection.Top, Cursors.SizeNS},
{ResizeDirection.Bottom, Cursors.SizeNS},
{ResizeDirection.Left, Cursors.SizeWE},
{ResizeDirection.Right, Cursors.SizeWE},
{ResizeDirection.TopLeft, Cursors.SizeNWSE},
{ResizeDirection.BottomRight, Cursors.SizeNWSE},
{ResizeDirection.TopRight, Cursors.SizeNESW},
{ResizeDirection.BottomLeft, Cursors.SizeNESW}
};
Register user32.dll
public enum ResizeDirection
{
/// <summary>
/// 左
/// </summary>
Left = ,
/// <summary>
/// 右
/// </summary>
Right = ,
/// <summary>
/// 上
/// </summary>
Top = ,
/// <summary>
/// 左上
/// </summary>
TopLeft = ,
/// <summary>
/// 右上
/// </summary>
TopRight = ,
/// <summary>
/// 下
/// </summary>
Bottom = ,
/// <summary>
/// 左下
/// </summary>
BottomLeft = ,
/// <summary>
/// 右下
/// </summary>
BottomRight = ,
}
ResizeDirection
void Window_MouseMove(object sender, MouseEventArgs e)
{ if (Mouse.LeftButton != MouseButtonState.Pressed)
{
FrameworkElement element = e.OriginalSource as FrameworkElement;
if (element != null && !element.Name.Contains("Resize")) this.Cursor = Cursors.Arrow;
} } private void ResizePressed(object sender, MouseEventArgs e)
{ FrameworkElement element = sender as FrameworkElement;
ResizeDirection direction = (ResizeDirection)Enum.Parse(typeof(ResizeDirection), element.Name.Replace("Resize", "")); this.Cursor = cursors[direction];
if (e.LeftButton == MouseButtonState.Pressed) ResizeWindow(direction); } private void ResizeWindow(ResizeDirection direction)
{ SendMessage(_HwndkaifaSource.Handle, WM_SYSCOMMAND, (IntPtr)( + direction), IntPtr.Zero); }
Event
this.SourceInitialized += delegate(object sender, EventArgs e)
{
this._HwndkaifaSource = PresentationSource.FromVisual((Visual)sender) as HwndSource;
};
this.MouseMove += new MouseEventHandler(Window_MouseMove);
construction
XAML 属性 :MouseMove="ResizePressed" MouseDown="ResizePressed"
最新文章
- http协议进阶(一)http概述
- ExtAspNet和FineUI未将对象引用设置到对象的实例
- MySQL中的锁(表锁、行锁)
- 用cryptico.js实现RSA加密(应对cryptico不支持PEM)
- mysql忘记root密码
- HDU 1052 Tian Ji -- The Horse Racing(贪心)(2004 Asia Regional Shanghai)
- cocos2d-x Android 环境搭建问题汇总
- Opencv2.4.13 与Visual Studio2013 环境搭建配置
- vuejs学习笔记(1)--属性,事件绑定,ajax
- MyBatis+PageHelper实现分页
- 【Rain in ACStar HDU-3340】
- mysql进阶(五)数据表中带OR的多条件查询
- Java学习笔记42(数据库连接池 druid连接池)
- 【进阶修炼】&mdash;&mdash;改善C#程序质量(9)
- python解决组合问题
- BI项目简单备份策略
- Struts2_day03--OGNL的#、%使用
- 3dContactPointAnnotationTool开发日志(七)
- ios cocos2d 使用 sneakyInput 插件
- Mysql缺少可执行的命令