1 / 4
文档名称:

WPF的消息机制.docx

格式:docx   大小:71KB   页数:4页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

WPF的消息机制.docx

上传人:dajiede 2022/6/16 文件大小:71 KB

下载得到文件列表

WPF的消息机制.docx

相关文档

文档介绍

文档介绍:WPF的消息机制(二)-WPF内部的5个窗口之隐藏消息窗口
目录
WPF的消息机制(一)-让应用程序动起来
WPF的消息机制(二)-WPF内部的5个窗口
(1) 隐藏消息窗口
(2) 处理激活和关闭的消息的窗口和系统资源通知窗口
WPF的消息机制(二)-WPF内部的5个窗口之隐藏消息窗口
目录
WPF的消息机制(一)-让应用程序动起来
WPF的消息机制(二)-WPF内部的5个窗口
(1) 隐藏消息窗口
(2) 处理激活和关闭的消息的窗口和系统资源通知窗口
(3) 用于用户交互的可见窗口
(4) 用于UI窗口绘制的可见窗口
WPF的消息机制(三)-WPF输入事件的来源
WPF的消息机制(四)-WPF中UI的更新
WPF内部的5个窗口
对于Windows系统来说,它是一个消息系统,消息系统的核心就是窗口。对于WPF来说也是如此。那么 WPF内部为什么需要窗口,又存在哪些窗口呢?
在上一篇,我们频繁的提及''线程”,“Dispatcher”其实,运行WPF应用程序所在的线程就是WPF所谓的 UI线程,, Dispatcher对象,如果没有就构造一个,在这里,一个线程对应一个Dispatcher。因此,WPF的对象在 ,不同对象取的都是同一个Dispatcher实例。另外,前面提到的''消息循环”,
''消息队列”等都是Win32应用程序的概念,我们知道,提起这些概念,必然会跟Win32的''窗口"'Handle”, “WndProc"之类的概念离不开,那么WPF里面究竟有没有''窗体”,''Handle”,''WndProc”呢?
我想说的是:有,还不止一个,只不过没有暴露出来,外面不需要关心这些。
通常情况下,一个WPF应用程序在运行起来的时候,后台会创建5个Win32的窗口,帮助WPF系统来 处理操作系统以及应用程序内部的消息。在这5个窗口中,只有一个是可见的,可以处理输入事件与用户 交互,其他4个窗口都是不可见的,帮助WPF处理来自其他方面的消息。接下来我会来介绍究竟这5个 Win32的窗口如何帮助
WPF处理消息,我会根据每个窗口创建的顺序来介绍。
隐藏消息窗口
创建时机:在Application的构造函数调用基类Dispatcherobject的构造函数的时候,会创建一个 Dispatcher对象,在Dispatcher的私有构造函数当中。
用途:实现WPF线程模型的异步调用。
谈到异步调用,相信许多人都不陌生。WinForm下,我们通常为了使一些花费较多时间的方法调用不影 响UI的响应,会将这个操作分为很多步,然后使用BeginInvoke调用每一步,这样UI响应就不会被阻 塞。BeginInvoke的本质是往消息队列当中PostMessage,而不是直接调用,与此同时,UI行为
(MouseMove)导致系统也往消息队列当中PostMessage更新UI,但由于彼此花费的时间很短,就感 觉两个消息是被同时处理似的,界面就不会觉得被阻塞了。WPF同样面临这样的问题,他是如何解决的呢? 在这里Window 1#起着至关重要的作用。通过下面一副图我们来看看W