2009-09-14 87 views
0

我想要一个对点击透明的HWND(即将它们传递给下面的窗口)。Win32:如何使HWND透明点击?

起初我试过WS_EX_TRANSPARENT,但是它有各种重绘问题。下面的Windows最终会画出我的HWND。

我做了一些搜索,并找到了一个建议,通过返回HTTRANSPARENT来响应WM_NCHITTEST。这似乎工作,但MSDN声明只有当下面的窗口在同一个线程中时它才能正常工作。搜索HTTTRANSPARENT出现了一些问题(http://www.virtualdub.org/blog/pivot/entry.php?id=147

那么...任何其他想法?

+0

我从来没有使用WM_NCHITTEST的问题。你的应用程序是否在不同的线程中创建窗 – 2009-09-14 11:43:07

+0

是的,这是专门设计用于处理被许多线程调用的Ui库的一部分。 – 2009-09-14 12:21:27

回答

1

捕获所有鼠标消息并使用PostMessage将它们转发到底层窗口。

+0

听起来不错,除了...你怎么找到下面的窗户?这适用于所有流程? – 2009-09-14 12:22:37

+0

您必须使用GetWindow枚举所有顶级窗口(http://msdn.microsoft.com/en-us/library/ms633515(VS.85).aspx)并检查它们的位置。当你找到一个,你会使用ChildWindowFromPoint(http://msdn.microsoft.com/en-us/library/ms633558(VS.85).aspx)。 – 2009-09-14 13:36:00