分层窗口和 COM 拖动图像

发布于 2024-08-15 23:57:16 字数 867 浏览 14 评论 0原文

我有一个程序,可以显示主窗口、分层窗口并实现 COM 拖放。一般来说:

  1. 我创建一个普通的顶级窗口。
  2. 我使用 WS_EX_LAYERED 和 UpdateLayeredWindow/SetLayeredWindowAttributes 创建分层窗口(我都尝试过)。分层窗口位于 1 中创建的窗口之上。分层窗口不是子窗口。
  3. 然后,我通过 COM DoDragDrop 函数开始拖放。在 IDropSource::QueryContinueDrag 中,我调用 ImageList_BeginDrag、ImageList_DragMove 等。

问题是,COM 显示的拖动图像(它是图像列表中的图像)显示在分层窗口的下方而不是其上方。光标显示在分层窗口的顶部(如预期)。从下到上,我得到的分层是:

  • 主窗口(底部)
  • COM 拖动图像
  • 分层窗口
  • 光标(顶部)

它应该是:

  • 主窗口(底部)
  • 分层窗口
  • COM 拖动图像
  • 光标(顶部)

我已经应用了KB943326“在 Windows Server 2003 或 Windows XP 中,重叠的分层窗口未按正确的顺序显示”(“http ://support.microsoft.com/kb/943326”),但这没有什么区别。

我运行的是 XP SP2。

任何建议表示赞赏,因为我已经没有想法了......

谢谢, 苏格林

I have a program that displays a main window, a layered window and implements COM drag and drop. In general terms:

  1. I create a normal top level window.
  2. I create a layered window using WS_EX_LAYERED and UpdateLayeredWindow/SetLayeredWindowAttributes (I've tried both). The layered window sits on top of the window created in 1. The layered window is not a child window.
  3. I then begin a drag and drop via the COM DoDragDrop function. In IDropSource::QueryContinueDrag I call ImageList_BeginDrag, ImageList_DragMove and so on.

The problem is, the drag image that COM is showing (it's an image in the image list) is displayed underneath the layered window instead of on top of it. The cursor is displayed on top of the layered window (as expected). From bottom to top, the layering I am getting is:

  • Main window (bottom)
  • COM drag image
  • Layered window
  • Cursor (top)

What it should be is:

  • Main window (bottom)
  • Layered window
  • COM drag image
  • Cursor (top)

I have already applied KB943326 "Overlapping layered windows are not displayed in the correct order in Windows Server 2003 or in Windows XP" ("http://support.microsoft.com/kb/943326"), but it made no difference.

I am running XP SP2.

Any suggestions appreciated as I have run out of ideas...

Thanks,
Su Green

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文