Winapi Win32:如何使HWND对单击透明?

Winapi Win32:如何使HWND对单击透明?,winapi,hwnd,Winapi,Hwnd,我想要一个对点击透明的HWND(即,将点击传递到下方的窗口) 起初我尝试WS_EX_TRANSPARENT,但这有各种各样的重画问题。下面的窗户在我的HWND上画了出来 我做了一些搜索,找到了一个回复WM_NCHITTEST的建议,返回HTTRANSPARENT。这似乎是可行的,但MSDN声明,只有当下面的窗口在同一线程中时,它才能正常工作。搜索HTTTRANSPARENT时出现了一些问题() 那么…还有其他想法吗?捕获所有鼠标消息并将其转发到具有PostMessage的底层窗口。捕获所有鼠标消

我想要一个对点击透明的HWND(即,将点击传递到下方的窗口)

起初我尝试WS_EX_TRANSPARENT,但这有各种各样的重画问题。下面的窗户在我的HWND上画了出来

我做了一些搜索,找到了一个回复WM_NCHITTEST的建议,返回HTTRANSPARENT。这似乎是可行的,但MSDN声明,只有当下面的窗口在同一线程中时,它才能正常工作。搜索HTTTRANSPARENT时出现了一些问题()


那么…还有其他想法吗?

捕获所有鼠标消息并将其转发到具有PostMessage的底层窗口。

捕获所有鼠标消息并将其转发到具有PostMessage的底层窗口。

我在使用WM_NCHITTEST时从未遇到过问题。您的应用程序是否在不同的线程中创建窗口?是的,这是Ui库的一部分,专门设计用于处理来自多个线程的调用。我在使用WM_NCHITTEST时从未遇到过问题。您的应用程序是否在不同的线程中创建窗口?是的,这是Ui库的一部分,专门设计用于处理来自多个线程的调用。听起来不错,除了……您如何找到下面的窗口?这适用于所有进程?您必须使用GetWindow()枚举所有顶级窗口并检查它们的位置。当您找到一个窗口时,您将使用ChildWindowFromPoint()。听起来不错,除了……您如何找到下面的窗口?这适用于所有进程?您必须使用GetWindow()枚举所有顶级窗口并检查它们的位置。找到一个后,将使用ChildWindowFromPoint()。