积极答复者
WPF中如果获取UserControl的句柄

问题
-
答案
-
此问题就是经典的AirSpace问题,目前没有解决方法,为了防止屏幕资源被跨技术访问产生冲突(因为WPF的内容可以是半透明的),所以只能强制嵌入GDI/DX的内容永远置顶。 相关解释:http://msdn.microsoft.com/zh-cn/library/aa970688.aspx
Bob Bao
Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。- 已标记为答案 AndyWyg 2013年4月28日 3:02
全部回复
-
WPF 只有窗体有句柄,为什么呢?
WPF基于Direct2D技术渲染其界面和控件,而不是传统的GDI方式,理论上 DX渲染的对象是没有句柄概念的,但是因为WPF的内容总要有个窗体放置,且这个窗体需要和Windows GDI的内容交互,所以在WPF的窗体外面就有了一个 叫做 “HwndWrapper” 的封装(你可以在SPY++中看到),我们所拿到的句柄其实只是这个封装的句柄。
所以给你的答案是你是拿不到UserControl和任何WPF内部控件内容的句柄的。
我以前的相类似答复:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cc61ed2d-2370-40f8-92a9-032432ae10e4/
对于你的需求,你可以在WPF中放置一个WindowsFormHost 这个元素是可以呈现GDI内容的,而且他也有句柄。
参考下面两个 演练:
- http://msdn.microsoft.com/zh-cn/library/ms751761.aspx
- http://msdn.microsoft.com/zh-cn/library/ms742735.aspx
Bob Bao
Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。- 已建议为答案 Jie BaoModerator 2013年4月28日 1:55
-
此问题就是经典的AirSpace问题,目前没有解决方法,为了防止屏幕资源被跨技术访问产生冲突(因为WPF的内容可以是半透明的),所以只能强制嵌入GDI/DX的内容永远置顶。 相关解释:http://msdn.microsoft.com/zh-cn/library/aa970688.aspx
Bob Bao
Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。- 已标记为答案 AndyWyg 2013年4月28日 3:02