在第7方应用程序中托管的WPF子窗口在Windows 7 Aero主题上不可见
我有一个
WPF窗口,它必须在第三方运行的应用程序中表现为窗口的叠加.我的WPF窗口必须大部分是透明的,带有一些可见的控件,总是位于z顺序的另一个窗口的顶部,随之移动等等.简而言之:我希望它的行为就像一个子窗口.
我已经回顾了here(WPF HwndSource技术)和here(WPF SetParent技术)提供的技术. HwndSource技术根本不起作用. SetParent技术适用于Windows 7,但仅适用于基本主题.使用Windows 7 Aero主题,它不起作用:我的子窗口是不可见的. 我正在寻找一个适用于所有Windows 7主题的解决方案. 我的测试应用程序创建一个测试窗口并调用SetParent使其成为Notepad窗口(硬编码的HWND)的子窗口. 在基本主题下,它看起来像这样: 在Windows 7主题下,我没有看到它: 子窗口XAML: <Window x:Class="WpfApplication22.TestWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="TestWindow" Height="300" Width="300" Background="#63000000" ShowInTaskbar="False" WindowStyle="None" Initialized="Window_Initialized" Loaded="Window_Loaded" AllowsTransparency="True"> <Grid> <Ellipse Height="87" HorizontalAlignment="Left" Margin="12,12,0" Name="ellipse1" Stroke="Black" VerticalAlignment="Top" Width="167" Fill="#FFBE3A3A" /> </Grid> </Window> 子窗口表单加载处理程序代码: var parentHwnd = new IntPtr(0x01DE0DFC); // Running Notepad var guestHandle = new WindowInteropHelper(this).Handle; var style = WS_VISIBLE | WS_CLIPSIBLINGS | WS_CHILD | WS_POPUP; SetWindowLong(guestHandle,GWL_STYLE,(int)(style)); SetParent(guestHandle,parentHwnd); (我尝试取消设置WS_POPUP样式.它没有效果.) 解决方法
不要使用SetParent,而是将WPF“子”窗口的WindowInteropHelper.Owner设置为要在上面显示的窗口.
请注意,在.NET 3.5中,如果您在任何“子”窗口的事件处理程序中执行此操作,即使早在OnSourceInitialized,窗口所有者也不会真正设置.显然,在那时设置所有者为时已晚. 而是在调用Show()之前,在创建窗口的代码中设置所有者. .NET 4似乎允许在SourceInitialized中设置所有者. >杰克 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows Phone 7系列上获取屏幕尺寸?
- 如何从powershell命令设置环境变量?
- 使文件可写以添加新包
- winapi – Windows 7 Ribbon UI Win32 API代码
- winapi – 在服务中接收Windows消息
- win10企业2016和2019长期服务版本激活密钥和下载地址
- static – 在页面之间共享数据的最佳实践
- windows-server-2008 – 我应该担心SAN中的分割I / O吗?
- windows-server-2008 – 如果我没有指定密码,为什么PSEXEC会
- Azure功能 – 无法加载文件或程序集”Microsoft.WindowsAzu
- 窗口 – 使用具有多个文件类型的forfile用于搜索
- 使用VBScript的剪贴板
- windows-server-2003 – 我应该使用本机还是使用
- windows-server-2008 – 如何整合来自不同服务器
- windows-store-apps – 应用程序通过WACK但未通过
- Windows 10 安装 VMware workstation 12 版本出错
- Windows API一日一练 5 RegisterClass和Register
- Windows卷影复制错误:2155348129
- Windows Azure存储模拟器 – CORS支持
- Windows 2003 IIS6.0下配置ASP+MySQL+PHP+ISAPI_