WPF关于WindowInteropHelper的一个BUG
2007-04-03 12:22
330 查看
在Windows SDK中关于WindowInteropHelper类的介绍中,关于其Owner属性的说明和实现有些问题。
原文是:An example scenario is if you need to host a WPF dialog box in a Win32 application. Initialize the WindowInteropHelper with a WPF window object for the dialog. You can then get the WPF window's handle (HWND) from the Handle property and specify the owner for the WPF window with the Owner property. The following code example shows how to use WindowInteropHelper when hosting a WPF dialog box in a Win32 application.
大意是通过WindowInteropHelper的Owner属性可以把WPF窗口的Owner属性设置为一个Win32的窗口句柄HWND。但是这个功能的实现是有问题的。有兴趣的朋友可以通过下面的代码进行测试:
Window myDialog = new Window();
myDialog.WindowStartupLocation = WindowStartupLocation.CenterOwner;
WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;
myDialog.ShowDialog();
这段代码最后显示的窗口不会位于Owner窗口的中心。事实上,WindowInteropHelper.Owner属性设置的是Window类的_ownerHandle成员。这个成员和Window.Owner设置的成员不是同一个。因此,文档中的说明和WPF的实际实现不相符的。这个问题基本已经确认是WPF的一个BUG。
原文是:An example scenario is if you need to host a WPF dialog box in a Win32 application. Initialize the WindowInteropHelper with a WPF window object for the dialog. You can then get the WPF window's handle (HWND) from the Handle property and specify the owner for the WPF window with the Owner property. The following code example shows how to use WindowInteropHelper when hosting a WPF dialog box in a Win32 application.
大意是通过WindowInteropHelper的Owner属性可以把WPF窗口的Owner属性设置为一个Win32的窗口句柄HWND。但是这个功能的实现是有问题的。有兴趣的朋友可以通过下面的代码进行测试:
Window myDialog = new Window();
myDialog.WindowStartupLocation = WindowStartupLocation.CenterOwner;
WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;
myDialog.ShowDialog();
这段代码最后显示的窗口不会位于Owner窗口的中心。事实上,WindowInteropHelper.Owner属性设置的是Window类的_ownerHandle成员。这个成员和Window.Owner设置的成员不是同一个。因此,文档中的说明和WPF的实际实现不相符的。这个问题基本已经确认是WPF的一个BUG。
相关文章推荐
- WPF关于WindowInteropHelper的一个BUG
- 关于WPF界面框架MahApps.Metro的一个BUG
- WPF关于WindowInteropHelper的一个BUG
- WPF关于WindowInteropHelper的一个BUG
- WPF关于WindowInteropHelper的一个BUG
- WPF关于WindowInteropHelper的一个BUG
- mysql5.1 系列 关于用户授权的一个bug
- 关于angularjs+ueditor的一个bug
- 关于一个困扰一晚上的bug -- java 返回值问题
- struts2关于checkbox处理的一个bug
- 一个关于 ie 浏览器的 bug 解决过程和思考
- 关于DropDownList的一个有趣的Bug~
- WinSock中关于阻塞接收/发送超时的一个BUG
- 关于Qt solution中qtwinmigrate framework的一个bug
- 关于FocusManager不大不小的一个bug
- 很久以前发现的 vc2008 的一个bug(关于模板匹配)
- wpf 中radioButton binding enum的时候的一个bug
- 【找bug有奖励】:关于加密算法的一个bug,知道答案评论对了支付宝奖励5块
- 一个关于ie的bug——双边距bug。
- 《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题