博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF的消息机制(三)- WPF内部的5个窗口之处理激活和关闭的消息窗口以及系统资源通知窗口...
阅读量:6802 次
发布时间:2019-06-26

本文共 1160 字,大约阅读时间需要 3 分钟。

hot3.png

目录

(1)

(2)

(3)用于用户交互的可见窗口

(4)用于UI窗口绘制的可见窗口

WPF的消息机制(三)-WPF输入事件的来源

WPF的消息机制(四)-WPF中UI的更新

 

处理应用程序激活和系统关闭的窗口(Window 2#)

创建时机:在调用Application.Run之后,运行到Application.EnsureHwndSource()方法当中。

用途:派发Application的Activated,Deactivated,SessionEnding事件。

WPF为了安全起见没有让UI窗口来处理应用程序激活,反激活,以及操作系统关闭时对应的消息,而是内部创建了一个隐藏的窗口,专门用来接收WM_ACTIVATEAPP和WM_QUERYENDSESSION两个Windows消息。从线程的消息队列拿到这两个消息后,会触发WPF的Application.Activated,Application.Deactivated,Application.SessionEnding这三个事件。

更详细的可参考Application类型的EnsureHwndSource(),AppFilterMessage(),这两个方法。

上面的过程可用下图描述:

 

 

 

系统资源更改通知窗口(Window 4#)

创建时机:Application的MainWindow的Xaml被反序列化成对象之后,需要确认Window的ThemeStyle的时候。

用途:处理当操作系统的Theme发生改变后,以及诸如SystemColors,SystemFonts,电源,显示器等跟系统关联的资源发生改变时,更新WPF这边的表现。

WPF在应用出现的MainWindow在初始化完成后,会创建一个隐藏的窗口,专门处理来自系统相关资源更新后的消息,比如WM_ThemeChanged,WM_SystemColorChanged,WM_DisplayChange,WM_PowerBroadcast等等。跟Window2#的初衷类似,为了安全起见,没有通过可见的UI窗口来处理这些消息,而是内容创建了这个隐藏的Window4#窗口来处理这些消息,确保UI窗口可以安全的更新由于系统Theme及相关资源改变后的表现。

上面的过程可用下图描述:

 

也许你会问为什么先讲解了Window4,而没有讲用于用户交互的可见窗口(Window3)?那是因为Window3的内容比较多,而Window2#和Window4#相对比较独立,因此,放在本文当中介绍,关于Window3的详细描述,将在下一篇介绍, 敬请关注!

本文出自 “” 博客,请务必保留此出处

转载于:https://my.oschina.net/powertoolsteam/blog/278107

你可能感兴趣的文章
各个JAVA场景下的内存图
查看>>
【干货】程序员常访问的国外技术交流网站汇总
查看>>
linux watchdog demo hacking
查看>>
日志分析系统——Hangout源码学习
查看>>
5.9. sort - sort lines of text files
查看>>
cms无法登陆
查看>>
JavaScript中事件处理
查看>>
VSTO 向office文档中插入内容
查看>>
【百度地图API】关于如何进行城市切换的三种方式
查看>>
How to provide highlighting with Spring data elasticsearch
查看>>
MongoDB 游标
查看>>
即将搭载人工智能芯片的华为Mate10,究竟会为业界带来什么?
查看>>
Linux在应用层读写寄存器的方法。。。
查看>>
区分execl与system——应用程序中执行命令
查看>>
Android实现登录小demo
查看>>
AgentWeb是基于Android WebView一个功能完善小型浏览器库
查看>>
开放数据中心联盟推8个云计算应用模型
查看>>
学习数据分析的“里程碑”是什么?
查看>>
零点之战!探访阿里巴巴8大技术专家,提前揭秘2017双11关键技术
查看>>
国家开发银行统一软件环境USE解决方案
查看>>