在WPF中处理Windows消息
在Winform中 处理Windows消息通过重写WndProc方法
在WPF中 使用的是System.Windows. Sytem.Windows.Controls等名字空间,没有WndProc函数
WPF中处理消息首先要获取窗口句柄,创建HwndSource对象 通过HwndSource对象添加消息处理回调函数。
此外 WPF中没有Handle属性,不能直接获得窗口的句柄
可以在构造函数中指定消息进行消息处理的回调函数,也可以在资源初始化后指定,在很多地方都可以指定。
以下是在资源初始化后指定
{
base.OnSourceInitialized(e);
HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
if (hwndSource != null)
hwndSource.AddHook(new HwndSourceHook(this.WndProc));
}
注意要使用System.Windows.Interop名字空间,以上增加了一个回调委托
{
switch (msg)
{
case Win32.WM_NCHITTEST:
{
Point MouseScreenPoint = new Point(lParam.ToInt32() & 0xFFFF, lParam.ToInt32() >> 16);
Point MouseWindowPoint = this.PointFromScreen(MouseScreenPoint);
if (MouseWindowPoint.X < 10 && MouseWindowPoint.Y < 10)
{
handled = true;
return (IntPtr)Win32.HTTOPLEFT;
}
break;
}
}
return IntPtr.Zero;
}
这里有一个引用传递的参数handled ,处理消息后设置为true 告诉系统这个消息已经处理过了。
转载于:https://www.cnblogs.com/mschen/p/4312707.html
在WPF中处理Windows消息相关推荐
- 关于WPF 中 “System.Windows.Markup.XamlParseException”类型的未经处理的异常在 PresentationFramework.dll 中发生 异常的处理。
关于WPF 中 "System.Windows.Markup.XamlParseException"类型的未经处理的异常在 PresentationFramework.dll 中发 ...
- c# WPF中System.Windows.Interactivity的使用
背景 在我们进行WPF开发应用程序的时候不可避免的要使用到事件,很多时候没有严格按照MVVM模式进行开发的时候习惯直接在xaml中定义事件,然后再在对应的.cs文件中直接写事件的处理过程,这种处理方式 ...
- WPF中System.Windows.Interactivity的使用
背景 在我们进行WPF开发应用程序的时候不可避免的要使用到事件,很多时候没有严格按照MVVM模式进行开发的时候习惯直接在xaml中定义事件,然后再在对应的.cs文件中直接写事件的处理过程,这种处理方式 ...
- 正确在WPF中对Windows窗体背景进行设置
初次接触WPF,就被对窗体的背景图进行设置难住了.跟Winform区别很大, 如果没有正确设置的,会报错. 直接输入添加背景图片代码会弹出异常. <Window.Background> & ...
- WPF中使用Windows.Controls.Ribbon创建一个简单画板
Windows系统自带的画图工具很完善的,如下代码只是演示创建一个简易的画板,可以做教学使用. 整体效果如下: 1. 添加组件System.Windows.Controls.Ribbon 2. 界面设 ...
- wince 中Windows消息的十六进制表述
windows mobile编程,无论使用eVC还是.net CF,都脱不开windows消息机制这个框架.在日常的程序编写过程中,windows消息也是很常用的,windows消息常用的api函数也 ...
- 计算机十六进制4BH表示多大,【转】windows消息16进制对应表
windows mobile编程,无论使用eVC还是.net CF,都脱不开windows消息机制这个框架.在日常的程序编写过程中,windows消息也是很常用的,windows消息常用的api函数也 ...
- 理解Windows窗体和WPF中的跨线程调用
你曾开发过Windows窗体程序,可能会注意到有时事件处理程序将抛出InvalidOperationException异常,信息为" 跨线程调用非法:在非创建控件的线程上访问该控件" ...
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...
最新文章
- 数据结构——线性表:顺序表、单向链表、循环链表、双向链表
- C语言运行界面字体,C语言实现图形界面登陆窗口.docx
- C语言怎么确定用什么整形,【求助各位大虾!】 怎样用 if 语句验证一个整形数字。...
- php 5.6.29,源码编译安装PHP 5.6.29
- 【在线研讨】《敏捷开发用户故事分类与组织结构(三期-1)》
- 51单片机4位数乘法C语言,51单片机实现4位数以内的加减法
- python函数和模块有什么关键特性_【Python函数与模块】(2)函数的特点
- npm login 登录失败,报E500 Internal Server Error - PUT https://registry.npm.taobao.org/-/user/org.couchdb
- C#对称加密(3des)和非对称加密(rsa)算法
- ubuntu16 下安装freeswitch 1.8.3
- pythonmt4通讯swot矩阵_SWOT矩阵分析法
- 一篇文章看懂Oracle开窗函数
- 关于《上海市城镇生育保险办法》的问答
- Python概念-Attr系列(林海峰教的)
- factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class ..
- 赵燕菁:城市化2.0与规划转型 ——一个两阶段模型的解释│宏论
- OV7725摄像头显示VGA/LCD
- Android实现九宫格图片控件
- jasper report 子报表中嵌套子报表
- android WebView加载视频只有声音没有画面
热门文章
- 聚类树状图_聚集聚类和树状图-解释
- 霍金一生重要时刻照片合集,3次来中国,年轻时也是帅哥一枚
- 2018年对PHP的新认知
- 理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)
- priority case语句
- python frame如何置顶_Python tkinter frame父窗口小部件排列列
- MySQL社区介绍_mysql社区服务器
- body onload 控制窗口大小 html,HTML5 对各个标签的定义与规定:body的介绍
- Tensorflow 指令加速
- ViewPager + TabLayout + Fragment + MediaPlayer的使用