您的位置:首页 > 其它

致微软:对WPF与Win32互操作焦点控制的Sample质疑

2009-12-31 01:47 357 查看
附件1:原MSDN的Sample 附件2:Helloj2ee修改的Sample

本文是讨论WPF与Win32互操作的一个MSDN的Sample。这个Sample似乎有些问题。我写下来也是希望有各位高手能够指点。看看是微软不小心的小错误,还是我HelloJ2ee误打误撞。如果写这个Sample的微软同仁看到了这个例子,还请您多多指教。

我和芸芸众生一般,学习微软的技术,当然首当其冲的资料就是MSDN。学习WPF与Win32

的互操作。我学习了微软的这个Sample,名为Hosting a Win32 HWND in WPF Sample。诸位可以在本地安装的MSDN里下载到这个例子,也可以在线上下载http://msdn.microsoft.com/zh-cn/library/ms771352.aspx 当然本文提供的第一个附件也是从这上面下载下来的。

这个例子能够很成功的将Win32嵌入在WPF当中。在焦点控制上,预期的结果应该是按下Tab键时。焦点会从1到11,如此反复循环。

代码

SHORT keystate = GetKeyState(VK_SHIFT);
BYTE downstate = HIBYTE(keystate);
BYTE togglestate = LOBYTE(keystate);
if(downstate)
{
if(GetFocus()==firstTabStop)
{
request = gcnew TraversalRequest(FocusNavigationDirection::Previous);
}
}
else
{
if(GetFocus()==lastTabStop)
{
request = gcnew TraversalRequest(FocusNavigationDirection::Next);
}
}

这样的改动下来,无论你是按Tab还是按Shift+Tab都能如你所愿的焦点移动。附件当中加上Helloj2ee的既是我改过的例子。

这个示例是MSDN当中的一个示例,关于这个例子还有一篇相应的文档对该例子进行了说明,因此发现这个问题我首先是自省,看看是否是自己的错以免误伤了别人。这么晚在这儿发帖 也是把问题暴露出来。看看Helloj2ee是否一不小心还是自己搞错了。如果写这个Sample的微软同仁看到了这个例子,还请您多多指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: